create private helm repository with github

0
628

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

  1. klik menu actions pada repo “helm-private”
  2. klik workflows “update helm”
  3. pilih branch “main”
  4. pilih service yang akan kita update chart versionnya
  5. masukkan version dari chart service yang akan kita update
  6. 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