oc-deploy vanilla k8s docker

This commit is contained in:
mr
2025-03-27 13:21:52 +01:00
parent 3b7c3a9526
commit 626a1b1f22
94 changed files with 864 additions and 1647 deletions

7
vanilla/README.md Normal file
View File

@@ -0,0 +1,7 @@
# RUN
- `./start.sh <YOUR INTERNET IP>`
Now reach localhost:8000
# STOP
- `./stop.sh`

38
vanilla/start.sh Executable file
View 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
View 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

View 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
View 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
View 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

View 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"

View 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: "/"

View 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: "/"

View File

@@ -0,0 +1,8 @@
entryPoints:
web:
address: ":8000" # Single entry point for all requests
providers:
file:
filename: "/etc/traefik/dynamic.yml"
watch: true