Kubernetes Webadmin

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.

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

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.

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

kubectl apply -f gitlab-admin.yaml

Last updated