Sapawarga
  • Pendahuluan
  • Tentang Dokumen
  • Sistematika Penulisan
  • Documentation
    • Deskripsi Umum Sistem
      • Daftar Role / Actor
      • Daftar Komponen
      • Daftar Modul
    • Spesifikasi Modul & Use Case
      • Modul: Authentication
        • Login
        • Homepage
        • Splash Screen
        • Onboarding
        • Edit Profile
        • View Profile
        • Change Password
        • Lupa Password & Reset Password
      • Modul: Dashboard
        • Usulan (Most Likes Usulan)
        • Usulan (Diterima/Dipublikasikan)
        • Usulan (Most Popular)
        • Usulan (Geographic)
        • Polling
        • Top Berita
      • Modul: Survei
        • List Survei
        • Create & Edit Survei
        • Detail Survei
      • Modul: Polling
        • List Polling
        • Create & Edit Polling
        • Detail Polling
      • Modul: Usulan Masyarakat
        • List Usulan
        • Create Usulan
        • Approval Usulan
        • Detail Usulan
      • Modul: Notification
        • List Notification
        • Create & Edit Notification
        • Detail Notification
      • Modul: Pesan
        • List Pesan
        • Create & Edit Pesan
        • Receive Push Notifications
        • Detail Pesan
        • Hapus Pesan
      • Modul: Pengguna
        • List Pengguna
        • Create & Edit Pengguna
        • Detail Pengguna
        • Export Pengguna
        • Import Pengguna
      • Modul: Nomor Telepon Penting
        • List Nomor Penting
        • Create & Edit Nomor Penting
        • Lokasi Terdekat
        • Detail Nomor Telepon Penting
      • Modul: Sumber Berita
        • List Sumber Berita
        • Create & Edit Sumber Berita
      • Modul: Berita
        • List Berita
        • Create & Edit Berita
        • Prioritas Berita
        • Detail Berita
      • Modul: Video Post
        • List Video Post
        • Create & Edit Video Post
        • Detail Video
      • Modul: Berita Saber Hoax
        • List Berita Saber Hoax
        • Create & Edit Berita Saber Hoax
        • Detail Berita Saber Hoax
        • Aduan Saber Hoax (Via Whatsapp)
      • Modul: Release Management
        • List Release
        • Create & Edit Release
        • Update Aplikasi (Mobile)
      • Modul: Kontak Lapor (Mobile)
      • Modul: List Bantuan (Mobile)
      • Modul: Administrasi (Mobile)
      • Modul: Banner
        • List Banner
        • Create & Edit Banner
        • Detail Banner
      • Modul: Popup
        • List Popup
        • Create & Edit Popup
        • Detail Popup
      • Modul: Info Pendidikan
        • List Info Pendidikan
        • Create & Edit Info Pendidikan
        • Detail Info Pendidikan
      • Modul: Tanya Jawab
        • List Tanya Jawab
        • Tanya Jawab
        • Detail Tanya Jawab
      • Modul: Kegiatan RW
        • List Kegiatan RW
        • Create Kegiatan RW
        • Detail Kegiatan RW
      • Modul: Kategori
        • List Kategori
        • Create & Edit Kategori
    • Pengujian
    • Deployment
      • Kubernetes Webadmin
    • Change Log
  • Technical Notes
    • Analytics
      • Metrics Dashboard
      • Analytics Firebase
    • API Mock Server
    • Manual Testing Guidelines
    • DevOps
      • Deployment di AWS EKS
  • FAQ
    • Cascade Permission
    • Hirarki Permission
    • Flow Gitlab
    • Handling Bugs
    • Tag Gitlab
    • Clean Code
Powered by GitBook
On this page
  1. Documentation
  2. Deployment

Kubernetes Webadmin

PreviousDeploymentNextChange Log

Last updated 5 years ago

System Requirements

  • Mengerti ci/cd di .

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

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

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

Pada tahap scripting seperti file diatas. yang wajib di garis bawahi ialah tahap inisiasi kubectl config. Merupakan langkah awal dari step deployment agar pada Gitlab dapat berkomunikasi dengan cluster di AWS EKS.

Gitlab
shared-runners