From 09876a411a03ad7abe1c8a0590f7dac300b3e304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torma=20Krist=C3=B3f?= <tormakristof@tormakristof.eu> Date: Wed, 3 Feb 2021 16:07:44 +0100 Subject: [PATCH] create better deploy using experience from frontend memery --- .gitlab-ci.yml | 29 +++++++++++++++++++++----- k8s/deployment.yml | 52 ++++++++++++++++++++++++++++++++++++++++++++++ k8s/service.yml | 15 +++++++++++++ 3 files changed, 91 insertions(+), 5 deletions(-) create mode 100644 k8s/deployment.yml create mode 100644 k8s/service.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d0041e6..704bfda 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ -image: python:latest +image: python:3.9 services: - - postgres:latest + - postgres:13 variables: POSTGRES_DB: kszkepzes @@ -16,6 +16,7 @@ cache: stages: - Test and Flake8 - Docker Build + - deploy Flake8: stage: Test and Flake8 @@ -23,7 +24,7 @@ Flake8: - dev - master - tags - tags: [docker] + tags: [kszk] script: - python -V - python3 -m venv env @@ -37,7 +38,7 @@ Flake8: # only: # - dev # - master -# tags: [docker] +# tags: [kszk] # variables: # DATABASE_URL: 'postgresql://postgres:postgres@postgres:5432/$POSTGRES_DB' # SECRET_KEY: 'secret' @@ -52,7 +53,7 @@ Flake8: Docker build: stage: Docker Build - tags: [docker] + tags: [kszk] only: - tags image: @@ -61,3 +62,21 @@ Docker build: script: - echo "{\"auths\":{\"registry.kszk.bme.hu\":{\"username\":\"$REGISTRY_USER\",\"password\":\"$REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CONTAINER_IMAGE + +Deploy to Kubernetes: + stage: deploy + image: alpine + tags: [devteam] + environment: + name: master + script: + - apk add --no-cache curl + - curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" + - chmod +x ./kubectl + - mv ./kubectl /usr/local/bin/kubectl + - kubectl version + - cd k8s + - sed -i "s|##IMAGETAG##|${CI_COMMIT_REF_NAME}|" deployment.yml + - kubectl apply -f deployment.yml + only: + - tags diff --git a/k8s/deployment.yml b/k8s/deployment.yml new file mode 100644 index 0000000..5df38b1 --- /dev/null +++ b/k8s/deployment.yml @@ -0,0 +1,52 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: kszkepzes-backend + namespace: devteam-kszk-bme-hu +spec: + replicas: 1 + selector: + matchLabels: + app: kszkepzes-backend + template: + metadata: + labels: + app: kszkepzes-backend + spec: + initContainers: + - name: volume-mount-hack + image: busybox + command: ['sh', '-c', 'chown -R 1000:1000 /mediafiles'] + volumeMounts: + - name: kszkepzes-media-volume + mountPath: /mediafiles + - name: kszkepzes-backend-migrate + image: rlacko58/kszkepzes-backend:latest + imagePullPolicy: 'Always' + command: ['python', 'manage.py', 'migrate', '--noinput'] + envFrom: + - configMapRef: + name: kszkepzes-config + - secretRef: + name: kszkepzes-secret-config + containers: + - name: kszkepzes-backend + image: registry.kszk.bme.hu/kszk/devteam/kszkepzes-backend:##IMAGETAG## + imagePullPolicy: 'Always' + volumeMounts: + - mountPath: /home/app/kszkepzes-backend/mediafiles + name: kszkepzes-media-volume + ports: + - containerPort: 8000 + envFrom: + - configMapRef: + name: kszkepzes-config + - secretRef: + name: kszkepzes-secret-config + volumes: + - name: kszkepzes-media-volume + persistentVolumeClaim: + claimName: kszkepzes-media-pv-claim + imagePullSecrets: + - name: kszkepzes-regcred \ No newline at end of file diff --git a/k8s/service.yml b/k8s/service.yml new file mode 100644 index 0000000..9bb1dd0 --- /dev/null +++ b/k8s/service.yml @@ -0,0 +1,15 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: kszkepzes-backend + namespace: devteam-kszk-bme-hu +spec: + type: ClusterIP + ports: + - port: 8000 + targetPort: 8000 + name: back + protocol: TCP + selector: + app: kszkepzes-backend \ No newline at end of file -- GitLab