From 592551090bd1192b49f961e61b4f1d3d85cc2223 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Robotka=20Adri=C3=A1n?= <robotka@sch.bme.hu>
Date: Fri, 10 Apr 2020 14:38:34 +0200
Subject: [PATCH] add kubernetes deploy

---
 .gitlab-ci.yml                            | 16 +++++++++++++---
 README.md                                 | 20 +++++++++++++++++++-
 kubernetes/generated/.gitignore           |  2 ++
 kubernetes/k8s-apply.sh                   | 12 ++++++++++++
 kubernetes/substitute.sh                  | 16 ++++++++++++++++
 kubernetes/{ => template}/deployment.yaml |  2 ++
 kubernetes/{ => template}/ingress.yaml    |  0
 kubernetes/{ => template}/service.yaml    |  0
 8 files changed, 64 insertions(+), 4 deletions(-)
 create mode 100644 kubernetes/generated/.gitignore
 create mode 100755 kubernetes/k8s-apply.sh
 create mode 100755 kubernetes/substitute.sh
 rename kubernetes/{ => template}/deployment.yaml (87%)
 rename kubernetes/{ => template}/ingress.yaml (100%)
 rename kubernetes/{ => template}/service.yaml (100%)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 468a24f..961ba79 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -5,13 +5,23 @@ stages:
 variables:
   CONTAINER_IMAGE: "registry.kszk.bme.hu/kubernetes/website:$CI_COMMIT_REF_NAME"
 
-before_script:
-  - echo "{\"auths\":{\"registry.kszk.bme.hu\":{\"username\":\"$CI_REG_USER\",\"password\":\"$CI_REG_PASS\"}}}" > /kaniko/.docker/config.json
-
 docker build:
   stage: Docker build
   image:
     name: gcr.io/kaniko-project/executor:debug
     entrypoint: [""]
   script:
+    - echo "{\"auths\":{\"registry.kszk.bme.hu\":{\"username\":\"$CI_REG_USER\",\"password\":\"$CI_REG_PASS\"}}}" > /kaniko/.docker/config.json
     - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CONTAINER_IMAGE
+
+deploy:
+  stage: Deploy
+  image: registry.kszk.bme.hu/baseimg/kubectl
+  script:
+    - kubectl get pods
+    - cd kubernetes
+    - ./substitute.sh
+    - ./k8s-apply.sh
+
+#  only:
+#    - master
diff --git a/README.md b/README.md
index 4ff4f96..9de4b28 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,25 @@
 # Kubernetes a KSZK-ban weboldal
 
-[Megtalálod itt](kubernetes.sch.bme.hu)
+[Megtalálod itt](https://kubernetes.sch.bme.hu)
 
 ## Weboldal generálás
 Ez a repo [MkDocs](https://www.mkdocs.org/) segítségével generál statikus HTML
 kódot a docs/ mappából az mkdocs.yml fájl alapján Docker környezetben.
+
+## docs mappa
+A dokumentciót tartalmazza markdown formátumban.
+
+## kubernetes mappa
+A template mappjában a változókkal összeállított
+konfiguráció található. Ezt helyettesíti be a
+substitute.sh, melynek kimenete a generated mappában
+fellelhető.
+
+## .gitlab-ci.yml
+Ez a git.sch (ami egy gitlab instance) CI/CD
+folyamatának konfigurációja. A docker build és a k8s
+deployment van benne leírva.
+
+## Kézi kubernetes deploy
+A kubernetes mappában lévő scriptekkel megvalósítható a
+kézzel vezérelt deployment is.
diff --git a/kubernetes/generated/.gitignore b/kubernetes/generated/.gitignore
new file mode 100644
index 0000000..4ce1c7b
--- /dev/null
+++ b/kubernetes/generated/.gitignore
@@ -0,0 +1,2 @@
+*
+!.git*
diff --git a/kubernetes/k8s-apply.sh b/kubernetes/k8s-apply.sh
new file mode 100755
index 0000000..9824254
--- /dev/null
+++ b/kubernetes/k8s-apply.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+# halt script on first error
+set -e
+
+# change workdir
+cd generated
+
+# Apply k8s configuration
+kubectl apply -f deployment.yaml
+kubectl apply -f service.yaml
+kubectl apply -f ingress.yaml
diff --git a/kubernetes/substitute.sh b/kubernetes/substitute.sh
new file mode 100755
index 0000000..0884817
--- /dev/null
+++ b/kubernetes/substitute.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+# halt script on first error
+set -e
+
+# copy *.yaml files to the generated folder
+cp template/*.yaml generated/
+
+# change workdir
+cd generated
+
+# replace _TEMPLATE_ variables to valid values
+sed -i "s|__CONTAINER_IMAGE__|${CONTAINER_IMAGE}|" *.yaml
+sed -i "s|__K8S_NAMESPACE__|kubernetes-sch-bme-hu|" *.yaml
+sed -i "s|__APP_NAME__|k8s-docs-web|" *.yaml
+sed -i "s|__WEB_PORT__|8000|" *.yaml
diff --git a/kubernetes/deployment.yaml b/kubernetes/template/deployment.yaml
similarity index 87%
rename from kubernetes/deployment.yaml
rename to kubernetes/template/deployment.yaml
index 8501f72..0a915a0 100644
--- a/kubernetes/deployment.yaml
+++ b/kubernetes/template/deployment.yaml
@@ -17,6 +17,8 @@ spec:
       labels:
         app: __APP_NAME__
     spec:
+      imagePullSecrets:
+      - name: kszk-nexus-registry-cred
       containers:
       - image: __CONTAINER_IMAGE__
         name: __APP_NAME__
diff --git a/kubernetes/ingress.yaml b/kubernetes/template/ingress.yaml
similarity index 100%
rename from kubernetes/ingress.yaml
rename to kubernetes/template/ingress.yaml
diff --git a/kubernetes/service.yaml b/kubernetes/template/service.yaml
similarity index 100%
rename from kubernetes/service.yaml
rename to kubernetes/template/service.yaml
-- 
GitLab