apiVersion: apps/v1 kind: Deployment metadata: name: example-name labels: app: adventure spec: replicas: 1 selector: matchLabels: app: adventure template: metadata: name: adventure labels: app: adventure spec: volumes: - name: adventure-journal persistentVolumeClaim: claimName: adventure-journal-pvc - name: adventure-journal-db persistentVolumeClaim: claimName: adventure-journal-db-pvc containers: - name: adventure-frontend image: ghcr.io/seanmorley15/adventurelog-frontend:latest imagePullPolicy: IfNotPresent ports: - containerPort: 3000 env: - name: PUBLIC_SERVER_URL value: "http://internally-and-externally.reachable.io:80" - name: ORIGIN value: "http://url-typed-into-browser.io:80" - name: BODY_SIZE_LIMIT value: "Infinity" - name: adventure-db image: postgis/postgis:15-3.3 imagePullPolicy: IfNotPresent ports: - containerPort: 5432 volumeMounts: - name: adventure-journal-db mountPath: /var/lib/postgresql/data env: - name: POSTGRES_DB value: database - name: PGDATA value: /var/lib/postgresql/data/pgdata/subdir - name: POSTGRES_USER value: adventure - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: adventurelog-secret key: adventure-postgres-password - name: adventure-backend image: ghcr.io/seanmorley15/adventurelog-backend:latest imagePullPolicy: IfNotPresent ports: - containerPort: 80 - containerPort: 8000 volumeMounts: - name: adventure-journal mountPath: /code/media env: - name: PGHOST value: "adventure-db-svc" - name: PGDATABASE value: "database" - name: PGUSER value: "adventure" - name: PGPASSWORD valueFrom: secretKeyRef: name: adventurelog-secret key: adventure-postgres-password - name: SECRET_KEY valueFrom: secretKeyRef: name: adventurelog-secret key: adventure-postgres-password - name: PUBLIC_URL value: "http://internally-and-externally.reachable.io:80" # Match the outward port, used for the creation of image urls - name: FRONTEND_URL value: "http://url-typed-into-browser.io:80" - name: CSRF_TRUSTED_ORIGINS value: "http://url-typed-into-browser.io:80, http://internally-and-externally.reachable.io:80" - name: DJANGO_ADMIN_USERNAME value: "admin" - name: DJANGO_ADMIN_PASSWORD value: "admin" - name: DJANGO_ADMIN_EMAIL value: "admin@example.com" - name: DEBUG value: "True" restartPolicy: Always --- apiVersion: v1 kind: Service metadata: name: adventure-db-svc spec: selector: app: adventure ports: - name: db protocol: TCP port: 5432 targetPort: 5432 --- apiVersion: v1 kind: Service metadata: name: server spec: selector: app: adventure ports: - name: http protocol: TCP port: 80 targetPort: 80 - name: base protocol: TCP port: 8000 targetPort: 8000 --- # If you aren't automatically provisioning PVCs (i.e. with Longhorn, you'll need to also create the PV's) apiVersion: v1 kind: PersistentVolumeClaim metadata: name: adventure-journal-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: adventure-journal-db-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi