From 832e63ed3de3f94711dd8fed7e776aaf30fc2980 Mon Sep 17 00:00:00 2001 From: PyungHo Yoon Date: Thu, 14 Jul 2022 02:39:06 +0900 Subject: [PATCH] add: kustomize --- k8s/README.md | 77 +++++++++++++++++++ k8s/applications/backend/kustomization.yaml | 75 ++++++++++++++++++ k8s/applications/frontend/kustomization.yaml | 35 +++++++++ k8s/applications/kustomization.yaml | 5 ++ k8s/environments/kustomization.yaml | 60 +++++++++++++++ k8s/storage/nfs/kustomization.yaml | 6 ++ .../storage => storage/nfs}/pvc-nfs.yaml | 0 k8s/storage/openstack/kustomization.yaml | 6 ++ .../openstack}/pvc-egovcp.yaml | 0 9 files changed, 264 insertions(+) create mode 100644 k8s/README.md create mode 100644 k8s/applications/backend/kustomization.yaml create mode 100644 k8s/applications/frontend/kustomization.yaml create mode 100644 k8s/applications/kustomization.yaml create mode 100644 k8s/environments/kustomization.yaml create mode 100644 k8s/storage/nfs/kustomization.yaml rename k8s/{environments/storage => storage/nfs}/pvc-nfs.yaml (100%) create mode 100644 k8s/storage/openstack/kustomization.yaml rename k8s/{environments/storage => storage/openstack}/pvc-egovcp.yaml (100%) diff --git a/k8s/README.md b/k8s/README.md new file mode 100644 index 0000000..57eda5f --- /dev/null +++ b/k8s/README.md @@ -0,0 +1,77 @@ +# Deploy services on Kubernetes + +In Kubernetes, the service consists of two components, + +1. Environments +2. Applications + +And you can choose the storage in the application either NFS or Cinder provided by Openstack(used by [Pasta](http://paas-ta.kr)) + +# Prerequisites + +## Install kustomize + +If you are using kubectl 1.14 or later, it embeded kustomize. So please ignore this section. +I recommend that you install the latest version of [kubectl](https://kubectl.docs.kubernetes.io/installation/kubectl/) for your cluster instead of installing kustomize. +Even so, if you want to use kustomize, refer to [official kustomize doc](https://kustomize.io/). + +# Deploy service + +You must follow deployment order. + +## Deployenvironments + +```sh +$ kustomize build k8s/environments | kubectl apply -f - +``` +or if you are using the kubectl only, + +```sh +$ kubectl apply -k k8s/environments +``` + +## Deploy applications + +If you want to use NFS as a main storage, + +```sh +$ kustomize build k8s/stoage/nfs | kubectl apply -f - +``` + +or + +```sh +$ kubectl apply -k k8s/stoage/nfs +``` + +In case of using Openstack storage(CINDER) as a main storage, + +```sh +$ kustomize build k8s/stoage/openstack | kubectl apply -f - +``` + +or + +```sh +$ kubectl apply -k k8s/stoage/openstack +``` + +# Shutdown service + +Simply apply deployment in reverse order. + +If you are using nfs, + +```sh +$ kustomize build k8s/environments | kubectl delete -f - +$ kustomize build k8s/stoage/nfs | kubectl delete -f - --wait +``` + +or + +```sh +$ kubectl delete -k k8s/environments +$ kubectl delete -k k8s/stoage/nfs --wait +``` + +The case of openstack is similar, so it is omitted. diff --git a/k8s/applications/backend/kustomization.yaml b/k8s/applications/backend/kustomization.yaml new file mode 100644 index 0000000..aabd45f --- /dev/null +++ b/k8s/applications/backend/kustomization.yaml @@ -0,0 +1,75 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- config/service.yaml +- discovery/service.yaml +- portal-service/service.yaml +- reserve-item-service/service.yaml +- user-service/service.yaml +- board-service/service.yaml +- reserve-request-service/service.yaml +- reserve-check-service/service.yaml +- discovery/ingress/ingress.yaml +- apigateway/ingress/ingress.yaml +- config/deployment.yaml +- discovery/deployment.yaml +- portal-service/deployment.yaml +- reserve-item-service/deployment.yaml +- user-service/deployment.yaml +- board-service/deployment.yaml +- apigateway/deployment.yaml +- apigateway/service.yaml +- reserve-request-service/deployment.yaml +- reserve-check-service/deployment.yaml +- portal-service/autoscaler.yaml +- reserve-item-service/autoscaler.yaml +- user-service/autoscaler.yaml +- board-service/autoscaler.yaml +- apigateway/autoscaler.yaml +- reserve-request-service/autoscaler.yaml +- reserve-check-service/autoscaler.yaml + + +images: +- name: egovframe/egovframe-msa-edu-backend-apigateway:latest + # newName: foobar/egovframe-msa-edu-backend-apigateway + newTag: latest +- name: egovframe/egovframe-msa-edu-backend-board-service:latest + # newName: foobar/egovframe-msa-edu-backend-board-service + newTag: latest +- name: egovframe/egovframe-msa-edu-backend-config:latest + # newName: foobar/egovframe-msa-edu-backend-config + newTag: latest +- name: egovframe/egovframe-msa-edu-backend-discovery:latest + # newName: foobar/egovframe-msa-edu-backend-discovery + newTag: latest +- name: egovframe/egovframe-msa-edu-backend-portal-service:latest + # newName: foobar/egovframe-msa-edu-backend-portal-service + newTag: latest +- name: egovframe/egovframe-msa-edu-backend-reserve-check-service:latest + # newName: foobar/egovframe-msa-edu-backend-reserve-check-service + newTag: latest +- name: egovframe/egovframe-msa-edu-backend-reserve-item-service:latest + # newName: foobar/egovframe-msa-edu-backend-reserve-item-service + newTag: latest +- name: egovframe/egovframe-msa-edu-backend-reserve-request-service:latest + # newName: foobar/egovframe-msa-edu-backend-reserve-request-service + newTag: latest +- name: egovframe/egovframe-msa-edu-backend-user-service:latest + # newName: foobar/egovframe-msa-edu-backend-user-service + newTag: latest + + +patches: +- target: + name: apigateway-ingress + patch: |- + - op: replace + path: /spec/rules/0/host + value: "" +- target: + name: discovery-ingress + patch: |- + - op: replace + path: /spec/rules/0/host + value: "" diff --git a/k8s/applications/frontend/kustomization.yaml b/k8s/applications/frontend/kustomization.yaml new file mode 100644 index 0000000..053424c --- /dev/null +++ b/k8s/applications/frontend/kustomization.yaml @@ -0,0 +1,35 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- portal/service.yaml +- admin/service.yaml +- portal/ingress/ingress.yaml +- admin/ingress/ingress.yaml +- portal/deployment.yaml +- admin/deployment.yaml +- portal/autoscaler.yaml +- admin/autoscaler.yaml + + +images: +- name: egovframe/egovframe-msa-edu-frontend-admin:latest + # newName: foobar/egovframe-msa-edu-frontend-admin + newTag: latest +- name: egovframe/egovframe-msa-edu-frontend-portal:latest + # newName: foobar/egovframe-msa-edu-frontend-portal + newTag: latest + + +patches: +- target: + name: frontend-portal-ingress + patch: |- + - op: replace + path: /spec/rules/0/host + value: "" +- target: + name: frontend-admin-ingress + patch: |- + - op: replace + path: /spec/rules/0/host + value: "" diff --git a/k8s/applications/kustomization.yaml b/k8s/applications/kustomization.yaml new file mode 100644 index 0000000..ee9c795 --- /dev/null +++ b/k8s/applications/kustomization.yaml @@ -0,0 +1,5 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- frontend/ +- backend/ diff --git a/k8s/environments/kustomization.yaml b/k8s/environments/kustomization.yaml new file mode 100644 index 0000000..2e10b4f --- /dev/null +++ b/k8s/environments/kustomization.yaml @@ -0,0 +1,60 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- configmaps/backend-configmap.yaml +- configmaps/common-configmap.yaml +- nfs/sa.yaml +- nfs/sc.yaml +- nfs/deployment.yaml +- databases/mysql/secret.yaml +- databases/mysql/configmap.yaml +- databases/mysql/service.yaml +- databases/mysql/pvc.yaml +- databases/mysql/statefulset.yaml +- rabbitmq/service.yaml +- rabbitmq/ingress/ingress.yaml +- rabbitmq/deployment.yaml +- zipkin/service.yaml +- zipkin/ingress/ingress.yaml +- zipkin/deployment.yaml +- jenkins/sa.yaml +- jenkins/service.yaml +- jenkins/ingress.yaml +- jenkins/pvc.yaml +- jenkins/statefulset.yaml +- logging/elk/kibana/configmap.yaml +- logging/elk/kibana/service.yaml +- logging/elk/kibana/ingress/ingress.yaml +- logging/elk/kibana/deployment.yaml +- logging/elk/logstash/service.yaml +- logging/elk/logstash/configmap.yaml +- logging/elk/logstash/deplyment.yaml +- logging/elk/elasticsearch/service.yaml +- logging/elk/elasticsearch/deployment.yaml + + +patches: +- target: + name: rabbitmq-ingress + patch: |- + - op: replace + path: /spec/rules/0/host + value: "" +- target: + name: zipkin-ingress + patch: |- + - op: replace + path: /spec/rules/0/host + value: "" +- target: + name: jenkins-ingress + patch: |- + - op: replace + path: /spec/rules/0/host + value: "" +- target: + name: kibana-ingress + patch: |- + - op: replace + path: /spec/rules/0/host + value: "" diff --git a/k8s/storage/nfs/kustomization.yaml b/k8s/storage/nfs/kustomization.yaml new file mode 100644 index 0000000..d18df2a --- /dev/null +++ b/k8s/storage/nfs/kustomization.yaml @@ -0,0 +1,6 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../environments +resources: +- pvc-nfs.yaml diff --git a/k8s/environments/storage/pvc-nfs.yaml b/k8s/storage/nfs/pvc-nfs.yaml similarity index 100% rename from k8s/environments/storage/pvc-nfs.yaml rename to k8s/storage/nfs/pvc-nfs.yaml diff --git a/k8s/storage/openstack/kustomization.yaml b/k8s/storage/openstack/kustomization.yaml new file mode 100644 index 0000000..c10850e --- /dev/null +++ b/k8s/storage/openstack/kustomization.yaml @@ -0,0 +1,6 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../environments +resources: +- pvc-egovcp.yaml diff --git a/k8s/environments/storage/pvc-egovcp.yaml b/k8s/storage/openstack/pvc-egovcp.yaml similarity index 100% rename from k8s/environments/storage/pvc-egovcp.yaml rename to k8s/storage/openstack/pvc-egovcp.yaml