From bc88da6772fb44393f6ceb211f2cab1dd487b988 Mon Sep 17 00:00:00 2001
From: Paolo Brasolin <paolo.brasolin@eurac.edu>
Date: Thu, 24 Feb 2022 19:27:45 +0100
Subject: [PATCH] feat: #be webserver k8s template

---
 .gitlab-ci.yml                         | 33 +++++++++++++++++++++++---
 backend/kustomize/base/deployment.yaml | 31 ++++++++++++++++++++++++
 backend/kustomize/base/ingress.yaml    | 16 +++++++++++++
 backend/kustomize/base/service.yaml    | 11 +++++++++
 4 files changed, 88 insertions(+), 3 deletions(-)
 create mode 100644 backend/kustomize/base/deployment.yaml
 create mode 100644 backend/kustomize/base/ingress.yaml
 create mode 100644 backend/kustomize/base/service.yaml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9e5fedc..161c3ea 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -3,9 +3,10 @@ variables:
 
 stages:
   - build
+  - deploy
   - setup
 
-be-build-job:
+.be-build-job:
   variables:
     IMAGE_NAME: $CI_REGISTRY_IMAGE/backend
   stage: build
@@ -26,7 +27,33 @@ be-build-job:
   only:
     - main
 
-be-setup-job:
+be-deploy-job:
+  variables:
+    KUBECTL_VERSION: v1.8.10
+    IMAGE_NAME: $CI_REGISTRY_IMAGE/backend
+
+  stage: deploy
+  tags:
+    - commul
+  image: docker:latest
+  services:
+    - docker:dind
+  before_script:
+    - wget https://storage.googleapis.com/kubernetes-release/release/$KUBECTL_VERSION/bin/linux/amd64/kubectl
+    # NOTE: version is too ald and don't have sha256 available
+    #- wget https://dl.k8s.io/release/$KUBECTL_VERSION/bin/linux/amd64/kubectl.sha256
+    # - echo "$(<kubectl.sha256)  kubectl" | sha256sum --check
+    - mv kubectl /usr/bin/ && chmod +x /usr/bin/kubectl
+    - docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN https://$CI_REGISTRY
+  script:
+    - kubectl version --client
+    - echo YAY!
+    - docker pull ${IMAGE_NAME}:main
+    #- kubectl --namespace kommul-dev set image deployment/merlin browser=${CONTAINER_IMAGE}:${CI_COMMIT_SHA}
+  only:
+    - main
+
+.be-setup-job:
   image: node:16-alpine
   stage: setup
   cache:
@@ -42,7 +69,7 @@ be-setup-job:
     - npm install
     - echo Success!
 
-fe-setup-job:
+.fe-setup-job:
   image: node:16-alpine
   stage: setup
   cache:
diff --git a/backend/kustomize/base/deployment.yaml b/backend/kustomize/base/deployment.yaml
new file mode 100644
index 0000000..f7b7471
--- /dev/null
+++ b/backend/kustomize/base/deployment.yaml
@@ -0,0 +1,31 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: oetzi-webserver
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: oetzi-webserver
+  template:
+    metadata:
+      labels:
+        app: oetzi-webserver
+    spec:
+      containers:
+        - name: oetzi-webserver
+          # NOTE: use `minikube image load oetzi:latest` to push into container runtime
+          image: oetzi:latest
+          # NOTE: Never is useful only for locla testing in order to load image from cache
+          imagePullPolicy: Never
+          resources: {}
+          ports:
+            - name: http
+              containerPort: 80
+          command: ["npm", "run", "serve"]
+          env:
+            - name: PORT
+              value: "80"
+            - name: DATABASE_URL
+              value: postgres://db_user:db_pass@database/db_name
+
diff --git a/backend/kustomize/base/ingress.yaml b/backend/kustomize/base/ingress.yaml
new file mode 100644
index 0000000..f48ddf1
--- /dev/null
+++ b/backend/kustomize/base/ingress.yaml
@@ -0,0 +1,16 @@
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+  name: oetzi
+spec:
+  rules:
+    - host: oetzi.eurac
+      http:
+        paths:
+          - path: /
+            pathType: Prefix
+            backend:
+              service:
+                name: oetzi-webserver
+                port:
+                  name: http
diff --git a/backend/kustomize/base/service.yaml b/backend/kustomize/base/service.yaml
new file mode 100644
index 0000000..69ed8a6
--- /dev/null
+++ b/backend/kustomize/base/service.yaml
@@ -0,0 +1,11 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: oetzi-webserver
+spec:
+  selector:
+    app: oetzi-webserver
+  ports:
+    - name: http
+      port: 8080
+      targetPort: 80
-- 
GitLab