halo sobat sekolahlinux, jadi dalam artikel kali ini saya akan coba membuat sedikit tutorial tentang bagaimana cara membuat private helm repository menggunakan github, pada tutorial kali ini saya akan membagi menjadi 2 bagian, tapi masih di artikel ini yaitu
- create private helm repository with github
- add private helm repo
sebelumnya pastikan pada local laptop/pc kalian sudah menginstall
- helm v3
- git
create private helm repository with github
disini anggap kita punya 3 service dengan helm template yang berbeda berikut ini listnya
- service-a
- service-b
- service-c
create github personal access token, untuk guide nya kamu bisa lihat pada link dibawah
oke selanjutnya kalian harus buat github private repository seperti pada gambar dibawah ini
selanjutnya jika repo sudah dibuat kita harus tambahkan github secret action pada repo “helm-private”, klik button “new repository secret” lalu beri secret name “GH_TOKEN” dan isi value nya dengan personal access token yang sudah kalian buat sebelumnya pada step diatas, jika sudah jadi maka kurang lebih tampilannya akan seperti dibawah ini
jika lalu clone repo tersebut ke local laptop/pc kita
jika sudah di clone masuk kedalam folder repo “helm private”
git clone git@github.com:sekolahlinux/helm-private.git cd helm-private
jika sudah masuk ke folder repo yang sudah kita clone diatas, buat folder dengan nama “charts”, lalu masuk kedalam folder charts
mkdir charts cd charts
selanjut kita akan buat dummy helm chart untuk ke 3 service
helm create service-a helm create service-b helm create service-c
maka hasilnya akan seperti dibawah jika kita lihat menggunakan tree dari root folder repo “helm private”
selanjutnya kita akan buat github-action workflow, pertama kita buat dulu folder dibawah dari root folder repo “helm private” lalu masuk ke folder yang telah kita buat
mkdir -p .github/workflows cd .github/workflows
lalu buat file dengan nama “pipeline.yml” dan isi dengan konfigurasi dibawah
name: Update Helm on: workflow_dispatch: inputs: service-name: required: true type: choice options: - service-a - service-b - service-c version: description: 'example: v0.0.1' required: true jobs: build: runs-on: ubuntu-20.04 steps: - name: Git Checkout uses: actions/checkout@v2 - name: Helm Installation uses: azure/setup-helm@v1.1 with: version: v3.7.0 - name: Update Index run: | cd charts helm package ${{ inputs.service-name }} --version ${{ inputs.version }} helm repo index . git config --global user.email "helm@sekolahlinux.com" git config --global user.name "admin" git add -A && git commit -m "update helm chart" - name: Push changes uses: ad-m/github-push-action@master with: github_token: ${{ secrets.GH_TOKEN }} branch: main
saya akan sedikit menjelaskan terkait github action workflow pada file “pipeline.yml”
- cd charts
- pada bagian ini memerintahkan untuk masuk kedalam folder charts, tempat dimana helm chart template dari service-a/b/c di letakkan
- helm package ${{ inputs.service-name }} –version ${{ inputs.version }}
- pada bagian ini memerintahkan untuk membuat package dengan service-name dan version sesuai dengan value yang diinput pada saat sebelum menjalankan workflow
- helm repo index .
- pada bagian ini memerintahkan untuk membuat index file atau update index file yang berisi data charts package
- git config –global user.email “helm@sekolahlinux.com”
- untuk set usermail github global config
- git config –global user.name “admin”
- untuk set username github global config
- git add -A && git commit -m “update helm chart”
- untuk add semua perubahan dan lalu commit untuk kemudian nanti di push
jika sudah add, commit dan push ke branch main apa yang sudah kita lakukan dengan perintah dibawah ini
git add -A && git commit -m "update helm repo and github action flow" git push origin main
jika sudah maka kita coba triger flow nya, sesuai dengan urutan atau no dibawah ini
- klik menu actions pada repo “helm-private”
- klik workflows “update helm”
- pilih branch “main”
- pilih service yang akan kita update chart versionnya
- masukkan version dari chart service yang akan kita update
- klik button “run workflow”
jika sudah maka resultnya akan seperti dibawah
jika sudah selesai workflow nya berjalan maka coba kamu cek pada folder “charts” didalam repo “helm-private” maka kita akan mendapatkan 2 buah file baru, yaitu file “index.yaml” dan juga file “service-a-v0.0.1.tgz”, yang mana ke 2 file tesebut di generate dari proses workflow diatas
add private helm repo
selanjutnya bagaimana cara kita add private helm repository yang ada di private repo github, jadi ada 2 cara untuk add private repo yang telah kita buat.
first methode
helm repo add sekolahlinux --username "GITHUB_TOKEN" --password "GITHUB_TOKEN" "https://raw.githubusercontent.com/sekolahlinux/helm-private/main/charts/"
jika sudah jalankan perintah dibawah
helm search repo sekolahlinux -l
maka resultnya akan seperti dibawah
second methode
helm repo add linuxsekolah 'https://GITHUB_TOKEN@raw.githubusercontent.com/sekolahlinux/helm-private/main/charts/'
jika sudah jalankan perintah dibawah
helm search repo linuxsekolah -l
maka resultnya akan seperti dibawah
dari 2 methode diatas jangan lupa ganti
- GITHUB_TOKEN
- replace dengan github personal access token yang kamu generate sebelumnya
- helm-private/main/charts/
- main adalah nama branch pada github
- charts adalah nama folder pada repo github helm-private
di akhir saya juga ingin memberitahukan bahwa pada github page ataupun raw page github memiliki cache selama 5 menit, jadi jangan sampai panik kalau setelah menjalankan workflow dan kalian sudah menjalankan helm repo update namun chart version belum update bisa jadi karena github page cache nya belum di refresh, tunggu sampai 5 menit baru setelah itu jalankan helm repo update kembali
sekian tutorial kali ini semoga bermanfaat, jika ada yang ingin ditanyakan silahkan comment atau bisa hubungi saya di linkedin