oc-deploy vanilla k8s docker
This commit is contained in:
7
vanilla/README.md
Normal file
7
vanilla/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# RUN
|
||||
- `./start.sh <YOUR INTERNET IP>`
|
||||
Now reach localhost:8000
|
||||
|
||||
# STOP
|
||||
- `./stop.sh`
|
||||
|
||||
38
vanilla/start.sh
Executable file
38
vanilla/start.sh
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "Stopping all services..."
|
||||
|
||||
./stop.sh > /dev/null 2>&1
|
||||
|
||||
echo "Starting all services"
|
||||
|
||||
cp ./traefik-dev-reverse/template_dynamic.yml ./traefik-dev-reverse/dynamic.yml
|
||||
sed -i "s/localhost/$1/g" ./traefik-dev-reverse/dynamic.yml
|
||||
|
||||
docker network create oc | true
|
||||
cd ./tools && docker compose -f ./docker-compose.dev.yml up --force-recreate -d
|
||||
cd .. && docker compose -f ./traefik-dev-reverse/docker-compose.yml up --force-recreate -d
|
||||
|
||||
cd ../..
|
||||
|
||||
REPOS=(
|
||||
"oc-auth"
|
||||
"oc-catalog"
|
||||
"oc-datacenter"
|
||||
"oc-monitord"
|
||||
"oc-peer"
|
||||
"oc-shared"
|
||||
"oc-scheduler"
|
||||
"oc-schedulerd"
|
||||
"oc-workflow"
|
||||
"oc-workspace"
|
||||
"oc-front"
|
||||
)
|
||||
for i in "${REPOS[@]}"
|
||||
do
|
||||
echo "Building $i"
|
||||
cd ./$i
|
||||
make dev &
|
||||
cd ..
|
||||
done
|
||||
|
||||
47
vanilla/stop.sh
Executable file
47
vanilla/stop.sh
Executable file
@@ -0,0 +1,47 @@
|
||||
#!/bin/bash
|
||||
docker network delete oc | true
|
||||
|
||||
docker compose -f ./traefik-dev-reverse/docker-compose.yml rm -s -v -f
|
||||
|
||||
TOOLS=(
|
||||
"mongo"
|
||||
"mongo-express"
|
||||
"nats"
|
||||
"loki"
|
||||
"grafana"
|
||||
"keto"
|
||||
"ldap"
|
||||
)
|
||||
|
||||
for i in "${TOOLS[@]}"
|
||||
do
|
||||
echo "kill $i"
|
||||
docker kill $i | true
|
||||
docker rm $i | true
|
||||
done
|
||||
|
||||
cd ../..
|
||||
|
||||
REPOS=(
|
||||
"oc-auth"
|
||||
"oc-catalog"
|
||||
"oc-datacenter"
|
||||
"oc-monitord"
|
||||
"oc-peer"
|
||||
"oc-shared"
|
||||
"oc-scheduler"
|
||||
"oc-schedulerd"
|
||||
"oc-workflow"
|
||||
"oc-workspace"
|
||||
"oc-front"
|
||||
)
|
||||
for i in "${REPOS[@]}"
|
||||
do
|
||||
echo "kill $i"
|
||||
docker kill $i | true
|
||||
docker rm $i | true
|
||||
cd ./$i
|
||||
make purge | true
|
||||
cd ..
|
||||
done
|
||||
|
||||
104
vanilla/tools/docker-compose.dev.yml
Normal file
104
vanilla/tools/docker-compose.dev.yml
Normal file
@@ -0,0 +1,104 @@
|
||||
version: '3.4'
|
||||
|
||||
services:
|
||||
mongo:
|
||||
image: 'mongo:latest'
|
||||
networks:
|
||||
- oc
|
||||
ports:
|
||||
- 27017:27017
|
||||
container_name: mongo
|
||||
volumes:
|
||||
- oc-data:/data/db
|
||||
- oc-data:/data/configdb
|
||||
|
||||
mongo-express:
|
||||
image: "mongo-express:latest"
|
||||
restart: always
|
||||
depends_on:
|
||||
- mongo
|
||||
networks:
|
||||
- oc
|
||||
ports:
|
||||
- 8081:8081
|
||||
environment:
|
||||
- ME_CONFIG_BASICAUTH_USERNAME=test
|
||||
- ME_CONFIG_BASICAUTH_PASSWORD=test
|
||||
nats:
|
||||
image: 'nats:latest'
|
||||
container_name: nats
|
||||
ports:
|
||||
- 4222:4222
|
||||
command:
|
||||
- "--debug"
|
||||
networks:
|
||||
- oc
|
||||
loki:
|
||||
image: 'grafana/loki'
|
||||
container_name: loki
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.loki.entrypoints=web"
|
||||
- "traefik.http.routers.loki.rule=PathPrefix(`/tools/loki`)"
|
||||
- "traefik.http.services.loki.loadbalancer.server.port=3100"
|
||||
- "traefik.http.middlewares.loki-stripprefix.stripprefix.prefixes=/tools/loki"
|
||||
- "traefik.http.routers.loki.middlewares=loki-stripprefix"
|
||||
- "traefik.http.middlewares.loki.forwardauth.address=http://localhost:8094/oc/forward"
|
||||
ports :
|
||||
- "3100:3100"
|
||||
networks:
|
||||
- oc
|
||||
grafana:
|
||||
image: 'grafana/grafana'
|
||||
container_name: grafana
|
||||
ports:
|
||||
- '3000:3000'
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.grafana.entrypoints=web"
|
||||
- "traefik.http.routers.grafana.rule=PathPrefix(`/tools/grafana`)"
|
||||
- "traefik.http.services.grafana.loadbalancer.server.port=3000"
|
||||
- "traefik.http.middlewares.grafana-stripprefix.stripprefix.prefixes=/tools/grafana"
|
||||
- "traefik.http.routers.grafana.middlewares=grafana-stripprefix"
|
||||
- "traefik.http.middlewares.grafana.forwardauth.address=http://localhost:8094/oc/forward"
|
||||
networks:
|
||||
- oc
|
||||
volumes:
|
||||
- ./conf/grafana_data_source.yml:/etc/grafana/provisioning/datasources/datasource.yml
|
||||
environment:
|
||||
- GF_SECURITY_ADMIN_PASSWORD=pfnirt # Change this to anything but admin to not have a password change page at startup
|
||||
- GF_SECURITY_ADMIN_USER=admin
|
||||
- GF_SECURITY_DISABLE_INITIAL_ADMIN_PASSWORD_CHANGE=true
|
||||
ldap:
|
||||
image: pgarrett/ldap-alpine
|
||||
container_name: ldap
|
||||
volumes:
|
||||
- "./ldap.ldif:/ldif/ldap.ldif"
|
||||
networks:
|
||||
- oc
|
||||
ports:
|
||||
- "390:389"
|
||||
deploy:
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
keto:
|
||||
image: oryd/keto:v0.7.0-alpha.1-sqlite
|
||||
ports:
|
||||
- "4466:4466"
|
||||
- "4467:4467"
|
||||
command: serve -c /home/ory/keto.yml
|
||||
restart: on-failure
|
||||
volumes:
|
||||
- type: bind
|
||||
source: .
|
||||
target: /home/ory
|
||||
container_name: keto
|
||||
networks:
|
||||
- oc
|
||||
|
||||
volumes:
|
||||
oc-data:
|
||||
|
||||
networks:
|
||||
oc:
|
||||
external: true
|
||||
18
vanilla/tools/keto.yml
Normal file
18
vanilla/tools/keto.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
version: v0.6.0-alpha.1
|
||||
|
||||
log:
|
||||
level: debug
|
||||
|
||||
namespaces:
|
||||
- id: 0
|
||||
name: open-cloud
|
||||
|
||||
dsn: memory
|
||||
|
||||
serve:
|
||||
read:
|
||||
host: 0.0.0.0
|
||||
port: 4466
|
||||
write:
|
||||
host: 0.0.0.0
|
||||
port: 4467
|
||||
24
vanilla/tools/ldap.ldif
Normal file
24
vanilla/tools/ldap.ldif
Normal file
@@ -0,0 +1,24 @@
|
||||
dn: uid=admin,ou=Users,dc=example,dc=com
|
||||
objectClass: inetOrgPerson
|
||||
cn: Admin
|
||||
sn: Istrator
|
||||
uid: admin
|
||||
userPassword: admin
|
||||
mail: admin@example.com
|
||||
ou: Users
|
||||
|
||||
dn: ou=AppRoles,dc=example,dc=com
|
||||
objectClass: organizationalunit
|
||||
ou: AppRoles
|
||||
description: AppRoles
|
||||
|
||||
dn: ou=App1,ou=AppRoles,dc=example,dc=com
|
||||
objectClass: organizationalunit
|
||||
ou: App1
|
||||
description: App1
|
||||
|
||||
dn: cn=traveler,ou=App1,ou=AppRoles,dc=example,dc=com
|
||||
objectClass: groupofnames
|
||||
cn: traveler
|
||||
description: traveler
|
||||
member: uid=admin,ou=Users,dc=example,dc=com
|
||||
13
vanilla/traefik-dev-reverse/docker-compose.yml
Normal file
13
vanilla/traefik-dev-reverse/docker-compose.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:v3.0
|
||||
container_name: traefik
|
||||
restart: always
|
||||
ports:
|
||||
- "8000:8000" # Expose Traefik on port 8000
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
- "./traefik.yml:/etc/traefik/traefik.yml"
|
||||
- "./dynamic.yml:/etc/traefik/dynamic.yml"
|
||||
164
vanilla/traefik-dev-reverse/dynamic.yml
Normal file
164
vanilla/traefik-dev-reverse/dynamic.yml
Normal file
@@ -0,0 +1,164 @@
|
||||
http:
|
||||
routers:
|
||||
workspace-router:
|
||||
rule: "PathPrefix(`/workspace`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: workspace-service
|
||||
middlewares:
|
||||
- replace-workspace
|
||||
workflow-router:
|
||||
rule: "PathPrefix(`/workflow`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: workflow-service
|
||||
middlewares:
|
||||
- replace-workflow
|
||||
shared-router:
|
||||
rule: "PathPrefix(`/shared`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: shared-service
|
||||
middlewares:
|
||||
- replace-shared
|
||||
scheduler-router:
|
||||
rule: "PathPrefix(`/scheduler`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: scheduler-service
|
||||
middlewares:
|
||||
- replace-scheduler
|
||||
peer-router:
|
||||
rule: "PathPrefix(`/peer`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: peer-service
|
||||
middlewares:
|
||||
- replace-peer
|
||||
datacenter-router:
|
||||
rule: "PathPrefix(`/datacenter`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: datacenter-service
|
||||
middlewares:
|
||||
- replace-datacenter
|
||||
catalog-router:
|
||||
rule: "PathPrefix(`/catalog`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: catalog-service
|
||||
middlewares:
|
||||
- replace-catalog
|
||||
auth-router:
|
||||
rule: "PathPrefix(`/auth`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: auth-service
|
||||
middlewares:
|
||||
- replace-auth
|
||||
front-router:
|
||||
rule: "PathPrefix(`/`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: front-service
|
||||
middlewares:
|
||||
- replace-front
|
||||
|
||||
services:
|
||||
workspace-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://192.168.1.169:8089"
|
||||
workflow-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://192.168.1.169:8088"
|
||||
shared-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://192.168.1.169:8091"
|
||||
scheduler-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://192.168.1.169:8090"
|
||||
peer-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://192.168.1.169:8093"
|
||||
datacenter-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://192.168.1.169:8092"
|
||||
catalog-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://192.168.1.169:8087"
|
||||
auth-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://192.168.1.169:8094"
|
||||
front-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://192.168.1.169:8080"
|
||||
|
||||
middlewares:
|
||||
workspace:
|
||||
forwardauth:
|
||||
address: "http://192.168.1.169:8094/oc/forward"
|
||||
workflow:
|
||||
forwardauth:
|
||||
address: "http://192.168.1.169:8094/oc/forward"
|
||||
shared:
|
||||
forwardauth:
|
||||
address: "http://192.168.1.169:8094/oc/forward"
|
||||
scheduler:
|
||||
forwardauth:
|
||||
address: "http://192.168.1.169:8094/oc/forward"
|
||||
peer:
|
||||
forwardauth:
|
||||
address: "http://192.168.1.169:8094/oc/forward"
|
||||
datacenter:
|
||||
forwardauth:
|
||||
address: "http://192.168.1.169:8094/oc/forward"
|
||||
catalog:
|
||||
forwardauth:
|
||||
address: "http://192.168.1.169:8094/oc/forward"
|
||||
auth:
|
||||
forwardauth:
|
||||
address: "http://192.168.1.169:8094/oc/forward"
|
||||
replace-workspace:
|
||||
replacePathRegex:
|
||||
regex: "^/workspace(.*)"
|
||||
replacement: "/oc$1"
|
||||
replace-workflow:
|
||||
replacePathRegex:
|
||||
regex: "^/workflow(.*)"
|
||||
replacement: "/oc$1"
|
||||
replace-shared:
|
||||
replacePathRegex:
|
||||
regex: "^/shared(.*)"
|
||||
replacement: "/oc$1"
|
||||
replace-scheduler:
|
||||
replacePathRegex:
|
||||
regex: "^/scheduler(.*)"
|
||||
replacement: "/oc$1"
|
||||
replace-peer:
|
||||
replacePathRegex:
|
||||
regex: "^/peer(.*)"
|
||||
replacement: "/oc$1"
|
||||
replace-datacenter:
|
||||
replacePathRegex:
|
||||
regex: "^/datacenter(.*)"
|
||||
replacement: "/oc$1"
|
||||
replace-catalog:
|
||||
replacePathRegex:
|
||||
regex: "^/catalog(.*)"
|
||||
replacement: "/oc$1"
|
||||
replace-auth:
|
||||
replacePathRegex:
|
||||
regex: "^/auth(.*)"
|
||||
replacement: "/oc$1"
|
||||
replace-front:
|
||||
stripprefix:
|
||||
prefixes: "/"
|
||||
164
vanilla/traefik-dev-reverse/template_dynamic.yml
Normal file
164
vanilla/traefik-dev-reverse/template_dynamic.yml
Normal file
@@ -0,0 +1,164 @@
|
||||
http:
|
||||
routers:
|
||||
workspace-router:
|
||||
rule: "PathPrefix(`/workspace`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: workspace-service
|
||||
middlewares:
|
||||
- replace-workspace
|
||||
workflow-router:
|
||||
rule: "PathPrefix(`/workflow`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: workflow-service
|
||||
middlewares:
|
||||
- replace-workflow
|
||||
shared-router:
|
||||
rule: "PathPrefix(`/shared`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: shared-service
|
||||
middlewares:
|
||||
- replace-shared
|
||||
scheduler-router:
|
||||
rule: "PathPrefix(`/scheduler`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: scheduler-service
|
||||
middlewares:
|
||||
- replace-scheduler
|
||||
peer-router:
|
||||
rule: "PathPrefix(`/peer`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: peer-service
|
||||
middlewares:
|
||||
- replace-peer
|
||||
datacenter-router:
|
||||
rule: "PathPrefix(`/datacenter`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: datacenter-service
|
||||
middlewares:
|
||||
- replace-datacenter
|
||||
catalog-router:
|
||||
rule: "PathPrefix(`/catalog`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: catalog-service
|
||||
middlewares:
|
||||
- replace-catalog
|
||||
auth-router:
|
||||
rule: "PathPrefix(`/auth`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: auth-service
|
||||
middlewares:
|
||||
- replace-auth
|
||||
front-router:
|
||||
rule: "PathPrefix(`/`)"
|
||||
entryPoints:
|
||||
- "web"
|
||||
service: front-service
|
||||
middlewares:
|
||||
- replace-front
|
||||
|
||||
services:
|
||||
workspace-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://localhost:8089"
|
||||
workflow-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://localhost:8088"
|
||||
shared-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://localhost:8091"
|
||||
scheduler-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://localhost:8090"
|
||||
peer-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://localhost:8093"
|
||||
datacenter-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://localhost:8092"
|
||||
catalog-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://localhost:8087"
|
||||
auth-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://localhost:8094"
|
||||
front-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://localhost:8080"
|
||||
|
||||
middlewares:
|
||||
workspace:
|
||||
forwardauth:
|
||||
address: "http://localhost:8094/oc/forward"
|
||||
workflow:
|
||||
forwardauth:
|
||||
address: "http://localhost:8094/oc/forward"
|
||||
shared:
|
||||
forwardauth:
|
||||
address: "http://localhost:8094/oc/forward"
|
||||
scheduler:
|
||||
forwardauth:
|
||||
address: "http://localhost:8094/oc/forward"
|
||||
peer:
|
||||
forwardauth:
|
||||
address: "http://localhost:8094/oc/forward"
|
||||
datacenter:
|
||||
forwardauth:
|
||||
address: "http://localhost:8094/oc/forward"
|
||||
catalog:
|
||||
forwardauth:
|
||||
address: "http://localhost:8094/oc/forward"
|
||||
auth:
|
||||
forwardauth:
|
||||
address: "http://localhost:8094/oc/forward"
|
||||
replace-workspace:
|
||||
replacePathRegex:
|
||||
regex: "^/workspace(.*)"
|
||||
replacement: "/oc$1"
|
||||
replace-workflow:
|
||||
replacePathRegex:
|
||||
regex: "^/workflow(.*)"
|
||||
replacement: "/oc$1"
|
||||
replace-shared:
|
||||
replacePathRegex:
|
||||
regex: "^/shared(.*)"
|
||||
replacement: "/oc$1"
|
||||
replace-scheduler:
|
||||
replacePathRegex:
|
||||
regex: "^/scheduler(.*)"
|
||||
replacement: "/oc$1"
|
||||
replace-peer:
|
||||
replacePathRegex:
|
||||
regex: "^/peer(.*)"
|
||||
replacement: "/oc$1"
|
||||
replace-datacenter:
|
||||
replacePathRegex:
|
||||
regex: "^/datacenter(.*)"
|
||||
replacement: "/oc$1"
|
||||
replace-catalog:
|
||||
replacePathRegex:
|
||||
regex: "^/catalog(.*)"
|
||||
replacement: "/oc$1"
|
||||
replace-auth:
|
||||
replacePathRegex:
|
||||
regex: "^/auth(.*)"
|
||||
replacement: "/oc$1"
|
||||
replace-front:
|
||||
stripprefix:
|
||||
prefixes: "/"
|
||||
8
vanilla/traefik-dev-reverse/traefik.yml
Normal file
8
vanilla/traefik-dev-reverse/traefik.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
entryPoints:
|
||||
web:
|
||||
address: ":8000" # Single entry point for all requests
|
||||
|
||||
providers:
|
||||
file:
|
||||
filename: "/etc/traefik/dynamic.yml"
|
||||
watch: true
|
||||
Reference in New Issue
Block a user