System Requirements
Pada proses deployment untuk webadmin pada Kubernetes ialah lakukan create file .gitlab-ci.yml
pada repository sapawarga-webadmin di Gitlab. Khusus untuk deployment webadmin oleh Kubernetes berada di stage deploy_prod_eks
. Pada file dibawah hanya fokus di stage tersebut.
.gitlab.ci.yml Plain Text
Copy deploy_prod_eks :
stage : deploy_prod
image : dtzar/helm-kubectl
when : manual
environment :
name : production
only :
- master
dependencies :
- versioning
before_script :
- export VERSION=$(cat ./version)
- kubectl config set-cluster k8s --server="${EKS_SERVER}"
- kubectl config set clusters.k8s.certificate-authority-data ${EKS_CA}
- kubectl config set-credentials gitlab --token="${EKS_TOKEN}"
- kubectl config set-context default --cluster=k8s --user=gitlab
- kubectl config use-context default
- kubectl cluster-info
script :
- cp kubernetes/webadmin-variables-sample.yaml kubernetes/webadmin-variables.yaml
- sed -i "s/%VUE_APP_VERSION%/${VERSION}/g" kubernetes/webadmin-variables.yaml
- sed -i "s/%VUE_APP_BASE_API%/${EKS_VUE_APP_BASE_API}/g" kubernetes/webadmin-variables.yaml
- sed -i "s/%dockerconfigjson%/${dockerconfigjson}/g" kubernetes/webadmin-variables.yaml
- sed -i "s/%SENTRY_DSN_API%/${SENTRY_DSN_API}/g" kubernetes/webadmin-variables.yaml
- sed -i "s/%VERSION%/${VERSION}/g" kubernetes/webadmin-deployment.yaml
- kubectl create --dry-run --validate -f kubernetes/webadmin-variables.yaml
-f kubernetes/webadmin-deployment.yaml
-f kubernetes/webadmin-service.yaml
- kubectl apply -f kubernetes/webadmin-variables.yaml
-f kubernetes/webadmin-deployment.yaml
-f kubernetes/webadmin-service.yaml
Copy deploy_prod_eks_v2:
stage: deploy_prod
image: dtzar/helm-kubectl
when: manual
environment:
name: production
only:
- master
dependencies:
- versioning
before_script:
- export VERSION=$(cat ./version)
- kubectl config set-cluster k8s --server="${EKS_SERVER}"
- kubectl config set clusters.k8s.certificate-authority-data ${EKS_CA}
- kubectl config set-credentials gitlab-eks-admin --token="${EKS_TOKEN}"
- kubectl config set-context default --cluster=k8s --user=gitlab-eks-admin
- kubectl config use-context default
- kubectl cluster-info
script:
- cp kubernetes/webadmin-variables-sample.yaml kubernetes/webadmin-variables.yaml
- sed -i "s/%VUE_APP_VERSION%/${VERSION}/g" kubernetes/webadmin-variables.yaml
- sed -i "s/%VUE_APP_BASE_API%/${EKS_VUE_APP_BASE_API}/g" kubernetes/webadmin-variables.yaml
- sed -i "s/%dockerconfigjson%/${dockerconfigjson}/g" kubernetes/webadmin-variables.yaml
- sed -i "s/%SENTRY_DSN_API%/${SENTRY_DSN_API}/g" kubernetes/webadmin-variables.yaml
- sed -i "s/%VERSION%/${VERSION}/g" kubernetes/webadmin-deployment.yaml
- kubectl create --dry-run --validate -f kubernetes/webadmin-variables.yaml
-f kubernetes/webadmin-deployment.yaml
-f kubernetes/webadmin-service.yaml
- kubectl apply -f kubernetes/webadmin-variables.yaml
-f kubernetes/webadmin-deployment.yaml
-f kubernetes/webadmin-service.yaml
Pada tahap scripting seperti file diatas. yang wajib di garis bawahi ialah tahap inisiasi kubectl config
. Merupakan langkah awal dari step deployment agar shared-runners pada Gitlab dapat berkomunikasi dengan cluster di AWS EKS.
Pertama kita akan membuat User dengan roles
khusus untuk deployment production di AWS EKS, tujuannya adalah agar memuhdakan mapping hak akses pada sistem di kubernetes.
gitlab-admin.yaml Plain Text
Copy apiVersion: v1
kind: ServiceAccount
metadata:
name: gitlab-eks-admin
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: gitlab-eks-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: gitlab-eks-admin
namespace: kube-system
lalu eksekusi command dibawah
Copy kubectl apply -f gitlab-admin.yaml