Skip to content

Commit

Permalink
chore(backend): Add deployment files
Browse files Browse the repository at this point in the history
  • Loading branch information
andreroggeri committed Apr 14, 2024
1 parent 1bebc8a commit 9cf25f3
Show file tree
Hide file tree
Showing 15 changed files with 305 additions and 47 deletions.
13 changes: 9 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Strip module name from version
- name: Save version
id: version
run: |
# If the new release is published, strip the module name from the version (steps.semver.outputs.new_release_published)
Expand All @@ -82,7 +82,8 @@ jobs:
else
release_version=ghcr.io/andreroggeri/schedule:$(echo "${{ steps.semver.outputs.last_release_version }}" | sed 's/schedule-//')
fi
echo "::set-output name=version::$release_version"
echo "Version is $release_version"
echo "version=$release_version >> $GITHUB_OUTPUT"
- name: Set up QEMU
if: steps.semver.outputs.new_release_published == 'true'
Expand Down Expand Up @@ -150,6 +151,11 @@ jobs:
yq e -i '.spec.template.spec.containers[0].image = "${{ needs.build-and-tag-backend.outputs.image }}"' backend/deployment/app/deployment.yml
yq e -i '.spec.template.spec.containers[0].image = "${{ needs.build-and-tag-backend.outputs.image }}"' backend/deployment/worker/deployment.yml
- name: Update ingress
run: |
yq e -i '.spec.rules[0].host = "schedule.staging.agendaodonto.com"' backend/deployment/app/ingress.yml
yq e -i '.spec.tls[0].hosts[0] = "schedule.staging.agendaodonto.com"' backend/deployment/app/ingress.yml
- name: Create resources
run: kubectl apply -f backend/deployment --recursive

Expand Down Expand Up @@ -303,8 +309,7 @@ jobs:
e2e-tests-staging:
runs-on: ubuntu-latest
if: false
needs:
[release-backend, release-chatbot-staging, release-webapp-staging]
needs: [release-backend, release-chatbot-staging, release-webapp-staging]
defaults:
run:
working-directory: webapp
Expand Down
33 changes: 0 additions & 33 deletions backend/Dokku.md

This file was deleted.

45 changes: 45 additions & 0 deletions backend/deployment/app/deployment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: schedule-app
spec:
replicas: 1
selector:
matchLabels:
app: schedule-app
template:
metadata:
labels:
app: schedule-app
app_context: schedule
env: staging
spec:
containers:
- name: schedule-app
image: ghcr.io/andreroggeri/schedule:latest # Replaced in CI/CD pipeline
ports:
- containerPort: 8000
env:
- name: API_KEY
valueFrom:
secretKeyRef:
name: schedule-secrets
key: schedule-api-key
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: schedule-secrets
key: schedule-db-url
- name: DJANGO_SECRET_KEY
valueFrom:
secretKeyRef:
name: schedule-secrets
key: schedule-django-secret-key
- name: RABBITMQ_URL
valueFrom:
secretKeyRef:
name: schedule-secrets
key: schedule-rabbitmq-url
- name: DJANGO_SETTINGS_MODULE
value: app.settings.staging # TODO: Use a single config file

24 changes: 24 additions & 0 deletions backend/deployment/app/ingress.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: schedule-tls-ingress
annotations:
spec.ingressClassName: traefik
cert-manager.io/cluster-issuer: letsencrypt-prod
traefik.ingress.kubernetes.io/router.middlewares: default-redirect-https@kubernetescrd
spec:
rules:
- host: schedule.staging.agendaodonto.com # Updated in CI/CD pipeline
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: schedule-app
port:
number: 8000
tls:
- secretName: schedule-tls
hosts:
- schedule.staging.agendaodonto.com # Updated in CI/CD pipeline
9 changes: 9 additions & 0 deletions backend/deployment/app/service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
apiVersion: v1
kind: Service
metadata:
name: schedule-app
spec:
selector:
app: schedule-app
ports:
- port: 8000
38 changes: 38 additions & 0 deletions backend/deployment/postgres/deployment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: schedule-postgres
spec:
selector:
matchLabels:
app: schedule-postgres
template:
metadata:
labels:
app: schedule-postgres
app_context: schedule
env: staging
spec:
containers:
- name: schedule-postgres
image: "postgres:16"
imagePullPolicy: IfNotPresent
ports:
- containerPort: 5432
env:
- name: POSTGRES_DB
value: schedule
- name: POSTGRES_USER
value: postgres
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: schedule-secrets
key: schedule-db-password
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: schedule-postgresdata
volumes:
- name: schedule-postgresdata
persistentVolumeClaim:
claimName: schedule-postgres-volume-claim
15 changes: 15 additions & 0 deletions backend/deployment/postgres/pv-claim.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: schedule-postgres-volume-claim
labels:
app: schedule-postgres
app_context: schedule
env: staging
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
17 changes: 17 additions & 0 deletions backend/deployment/postgres/pv.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: schedule-postgres-volume
labels:
type: local
app: schedule-postgres
app_context: schedule
env: staging
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
hostPath:
path: /data/schedule-postgresql
13 changes: 13 additions & 0 deletions backend/deployment/postgres/service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: v1
kind: Service
metadata:
name: schedule-postgres
labels:
app: schedule-postgres
app_context: schedule
env: staging
spec:
ports:
- port: 5432
selector:
app: schedule-postgres
37 changes: 37 additions & 0 deletions backend/deployment/rabbitmq/deployment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: schedule-rabbitmq
spec:
selector:
matchLabels:
app: schedule-rabbitmq
template:
metadata:
labels:
app: schedule-rabbitmq
app_context: schedule
env: staging
spec:
containers:
- name: schedule-rabbitmq
image: "rabbitmq:3.13-management-alpine"
imagePullPolicy: IfNotPresent
ports:
- containerPort: 5672
- containerPort: 15672
env:
- name: RABBITMQ_DEFAULT_USER
value: schedule
- name: RABBITMQ_DEFAULT_PASS
valueFrom:
secretKeyRef:
name: schedule-secrets
key: schedule-rabbitmq-password
volumeMounts:
- mountPath: /var/lib/rabbitmq
name: schedule-rabbitmqdata
volumes:
- name: schedule-rabbitmqdata
persistentVolumeClaim:
claimName: schedule-rabbitmq-volume-claim
15 changes: 15 additions & 0 deletions backend/deployment/rabbitmq/pv-claim.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: schedule-rabbitmq-volume-claim
labels:
app: schedule-rabbitmq
app_context: schedule
env: staging
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
17 changes: 17 additions & 0 deletions backend/deployment/rabbitmq/pv.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: schedule-rabbitmq-volume
labels:
type: local
app: schedule-rabbitmq
app_context: schedule
env: staging
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
hostPath:
path: /data/schedule-rabbitmq
13 changes: 13 additions & 0 deletions backend/deployment/rabbitmq/service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: v1
kind: Service
metadata:
name: schedule-rabbitmq
labels:
app: schedule-rabbitmq
app_context: schedule
env: staging
spec:
ports:
- port: 5672
selector:
app: schedule-rabbitmq
53 changes: 53 additions & 0 deletions backend/deployment/worker/deployment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: schedule-worker
spec:
replicas: 1
selector:
matchLabels:
app: schedule-worker
template:
metadata:
labels:
app: schedule-worker
app_context: schedule
env: staging
spec:
containers:
- name: schedule-worker
image: ghcr.io/andreroggeri/schedule:latest # Replaced in CI/CD pipeline
command: ["celery", "-A", "app.schedule", "worker", "--loglevel=info"]
env:
- name: API_KEY
valueFrom:
secretKeyRef:
name: schedule-secrets
key: schedule-api-key
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: schedule-secrets
key: schedule-db-url
- name: MESSAGING_URL
value: "http://messaging.default.svc.cluster.local:3000"
- name: MESSAGING_API_KEY
valueFrom:
secretKeyRef:
name: schedule-secrets
key: messaging-api-key
- name: RABBITMQ_URL
valueFrom:
secretKeyRef:
name: schedule-secrets
key: schedule-rabbitmq-url
- name: MESSAGE_CLASS
value: "app.schedule.service.notification.whatsapp.Whatsapp"
- name: DJANGO_SECRET_KEY
valueFrom:
secretKeyRef:
name: schedule-secrets
key: schedule-django-secret-key
- name: DJANGO_SETTINGS_MODULE
value: app.settings.staging # TODO: Use a single config file

10 changes: 0 additions & 10 deletions backend/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,15 +1,5 @@
#!/bin/bash

if [ "$COLLECT_STATIC" = "1" ]; then
echo "Collect static files"
python manage.py collectstatic --noinput
fi

if [ "$DB_MIGRATE" = "1" ]; then
echo "Migrating database"
python manage.py migrate --no-input
fi

if [ $# -eq 0 ]; then
PORT=${PORT:-8000}
echo "Starting gunicorn on port ${PORT}"
Expand Down

0 comments on commit 9cf25f3

Please sign in to comment.