apiVersion: v1 kind: Namespace metadata: name: roleforge --- apiVersion: v1 kind: ConfigMap metadata: name: roleforge-config namespace: roleforge data: APP_NAME: RoleForge APP_ENV: prod APP_HOST: 0.0.0.0 APP_PORT: "8000" DATABASE_DSN: postgresql://roleforge:roleforge@postgres:5432/roleforge REDIS_URL: redis://redis:6379/0 CELERY_BROKER_URL: redis://redis:6379/1 CELERY_RESULT_BACKEND: redis://redis:6379/2 --- apiVersion: v1 kind: Secret metadata: name: roleforge-secret namespace: roleforge type: Opaque stringData: APP_SECRET_KEY: change-me --- apiVersion: apps/v1 kind: Deployment metadata: name: api namespace: roleforge spec: replicas: 1 selector: matchLabels: app: api template: metadata: labels: app: api spec: containers: - name: api image: roleforge-backend:latest ports: - containerPort: 8000 envFrom: - configMapRef: name: roleforge-config - secretRef: name: roleforge-secret --- apiVersion: v1 kind: Service metadata: name: api namespace: roleforge spec: selector: app: api ports: - port: 80 targetPort: 8000 --- apiVersion: apps/v1 kind: Deployment metadata: name: worker namespace: roleforge spec: replicas: 1 selector: matchLabels: app: worker template: metadata: labels: app: worker spec: containers: - name: worker image: roleforge-backend:latest command: ["celery", "-A", "app.tasks.runner", "worker", "-l", "info"] envFrom: - configMapRef: name: roleforge-config - secretRef: name: roleforge-secret