Files
cloudy/cluster/swarm-converted/10-services-stack.yaml
T

533 lines
11 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: api-server
namespace: swarm-converted
spec:
replicas: 1
selector:
matchLabels:
app: api-server
template:
metadata:
labels:
app: api-server
spec:
containers:
- name: api-server
image: furyhawk/listen:v0.1.17
ports:
- containerPort: 8000
name: http
env:
- name: DATABASE__HOSTNAME
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: DATABASE__HOSTNAME
- name: DATABASE__USERNAME
valueFrom:
secretKeyRef:
name: swarm-converted-secret
key: POSTGRES_USER
- name: DATABASE__PASSWORD
valueFrom:
secretKeyRef:
name: swarm-converted-secret
key: POSTGRES_PASSWORD
- name: DATABASE__PORT
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: DATABASE__PORT
- name: DATABASE__DB
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: DATABASE__DB
- name: SECURITY__JWT_SECRET_KEY
valueFrom:
secretKeyRef:
name: swarm-converted-secret
key: SECURITY__JWT_SECRET_KEY
- name: SECURITY__BACKEND_CORS_ORIGINS
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: SECURITY__BACKEND_CORS_ORIGINS
- name: SECURITY__ALLOWED_HOSTS
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: SECURITY__ALLOWED_HOSTS
- name: DOMAIN
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: DOMAIN
---
apiVersion: v1
kind: Service
metadata:
name: api-server
namespace: swarm-converted
spec:
selector:
app: api-server
ports:
- name: http
port: 8000
targetPort: http
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: api-server
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`api.REPLACE_DOMAIN`)
services:
- name: api-server
port: 8000
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: dozzle
namespace: swarm-converted
spec:
replicas: 1
selector:
matchLabels:
app: dozzle
template:
metadata:
labels:
app: dozzle
spec:
containers:
- name: dozzle
image: amir20/dozzle:latest
ports:
- containerPort: 8080
name: http
env:
- name: DOMAIN
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: DOMAIN
volumeMounts:
- name: docker-sock
mountPath: /var/run/docker.sock
readOnly: true
volumes:
- name: docker-sock
hostPath:
path: /var/run/docker.sock
type: Socket
---
apiVersion: v1
kind: Service
metadata:
name: dozzle
namespace: swarm-converted
spec:
selector:
app: dozzle
ports:
- name: http
port: 8080
targetPort: http
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: dozzle
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`log.REPLACE_DOMAIN`)
middlewares:
- name: admin-auth
services:
- name: dozzle
port: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: minio-common
namespace: swarm-converted
spec:
replicas: 1
selector:
matchLabels:
app: minio-common
template:
metadata:
labels:
app: minio-common
spec:
containers:
- name: minio-common
image: minio/minio:latest
args:
- server
- /data
- --address
- :9000
- --console-address
- :9001
ports:
- containerPort: 9000
name: api
- containerPort: 9001
name: console
env:
- name: MINIO_ROOT_USER
valueFrom:
secretKeyRef:
name: swarm-converted-secret
key: MINIO_ROOT_USER
- name: MINIO_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: swarm-converted-secret
key: MINIO_ROOT_PASSWORD
- name: DOMAIN
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: DOMAIN
volumeMounts:
- name: minio-data
mountPath: /data
volumes:
- name: minio-data
persistentVolumeClaim:
claimName: minio-data
---
apiVersion: v1
kind: Service
metadata:
name: minio-common
namespace: swarm-converted
spec:
selector:
app: minio-common
ports:
- name: api
port: 9000
targetPort: api
- name: console
port: 9001
targetPort: console
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: minio-console
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`drive.REPLACE_DOMAIN`) || Host(`storage.REPLACE_DOMAIN`)
services:
- name: minio-common
port: 9001
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: minio-api
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`minio.REPLACE_DOMAIN`) || Host(`s3.REPLACE_DOMAIN`)
services:
- name: minio-common
port: 9000
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: osrm-backend
namespace: swarm-converted
spec:
replicas: 1
selector:
matchLabels:
app: osrm-backend
template:
metadata:
labels:
app: osrm-backend
spec:
containers:
- name: osrm-backend
image: furyhawk/osrm-backend:latest
ports:
- containerPort: 5000
name: http
env:
- name: OSRM_ALGORITHM
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: OSRM_ALGORITHM
- name: OSRM_THREADS
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: OSRM_THREADS
- name: OSRM_PORT
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: OSRM_PORT
- name: OSRM_PROFILE
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: OSRM_PROFILE
- name: OSRM_MAP_NAME
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: OSRM_MAP_NAME
- name: OSRM_GEOFABRIK_PATH
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: OSRM_GEOFABRIK_PATH
- name: OSRM_NOTIFY_FILEPATH
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: OSRM_NOTIFY_FILEPATH
- name: DOMAIN
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: DOMAIN
---
apiVersion: v1
kind: Service
metadata:
name: osrm-backend
namespace: swarm-converted
spec:
selector:
app: osrm-backend
ports:
- name: http
port: 5000
targetPort: http
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: osrm-backend
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`osrm.REPLACE_DOMAIN`)
middlewares:
- name: rate-limit
services:
- name: osrm-backend
port: 5000
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-db
namespace: swarm-converted
spec:
replicas: 1
selector:
matchLabels:
app: postgres-db
template:
metadata:
labels:
app: postgres-db
spec:
containers:
- name: postgres-db
image: postgres:16
command:
- postgres
- -c
- log_connections=on
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: POSTGRES_DB
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: swarm-converted-secret
key: POSTGRES_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: swarm-converted-secret
key: POSTGRES_PASSWORD
- name: PGDATA
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: PGDATA
- name: LANG
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: LANG
- name: TZ
valueFrom:
configMapKeyRef:
name: swarm-converted-config
key: TZ
volumeMounts:
- name: postgres-data
mountPath: /var/lib/postgresql/data
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: postgres-data
---
apiVersion: v1
kind: Service
metadata:
name: postgres-db
namespace: swarm-converted
spec:
selector:
app: postgres-db
ports:
- name: postgres
port: 5432
targetPort: postgres
---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
name: postgres-db
namespace: swarm-converted
spec:
entryPoints:
- postgres
routes:
- match: HostSNI(`*`)
services:
- name: postgres-db
port: 5432
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: whoami
namespace: swarm-converted
spec:
replicas: 1
selector:
matchLabels:
app: whoami
template:
metadata:
labels:
app: whoami
spec:
containers:
- name: whoami
image: traefik/whoami
ports:
- containerPort: 80
name: http
---
apiVersion: v1
kind: Service
metadata:
name: whoami
namespace: swarm-converted
spec:
selector:
app: whoami
ports:
- name: http
port: 80
targetPort: http
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: whoami
namespace: swarm-converted
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`whoami.REPLACE_DOMAIN`)
services:
- name: whoami
port: 80