Ulasan artikel kali ini akan membahas pertanyaan paling populer untuk tim yang akan mengadopsi GitOps, yaitu bagaimana mengelola kredensial dalam GitOps? Atau bagaimana cara menyimpan secret Kubernetes kami dalam GitOps? Pertanyaan terakhir perlu dilayangkan karena Kubernetes adalah orchestrator paling populer saat ini 😀 Untuk mengetahui solusi terbaik, kita perlu kilas balik pada definisi GitOps itu sendiri. GitOps adalah suatu metode yang mengharuskan pendistribusian kode dikendalikan melalui Git, termasuk infrastruktur serta otomatisasi untuk melakukan proses pembaruan dan rollback .
Kenyataannya tidak ada jawaban yang 100% benar, semua kembali pada toleransi dan kebijakan suatu perusahaan maupun concern suatu tim dalam proses pengelolaannya. Jika anda sudah memiliki solusi paten mengelola kredensial atau secret menggunakan Hashicorp Vault. Tentu itu sangat masuk akal untuk dilakukan, hanya saja cara tersebut bertentangan dengan praktik GitOps. Namun jika anda baru saja memulai proyek baru, ada cara untuk menyimpan kredensial atau secret pada Git tanpa bertentangan dengan praktik GitOps. Hal ini bukan berarti suatu larangan bagi anda untuk melalukan proses commit raw secret, ya 😀 Semuanya kembali pada kalimat pertama paragraf ini :p Salah satu solusinya adalah menggunakan Bitnami Sealed Secrets Controller untuk mengenkripsi secret sebelum menyimpannya pada Git. Alur proses dari hulu ke hilir jika menggunakan Sealed Secrets:

Agar lebih memahami alur prosesnya, mari langsung saja mulai demonya 😀
Prasyarat diperlukan ialah pastikan anda memiliki Kubernetes cluster yang sudah terdapat Argo CD di dalamnya. Kemudian ikuti langkah berikut:
1. Fork repo berikut https://github.com/bayyuaji/gitops-certification-examples. Cek folder secret-app/manifests/ untuk memahami proses simulasi yang akan dikerjakan. Terdapat dua file secret db-creds-encrypted.yaml and paypal-cert-encrypted.yaml kosong yang akan dienkripsi untuk kemudian disimpan pada Git repo.
2. Anda bisa mulai proses intalasi Sealed Secrets menggunakan Helm/ Agar lebih paripurna maka Sealed Secrets akan diinstal pada Argo CD. Buat aplikasi baru dengan detail berikut:
- Application Name :
controller - Project:
default - Sync Policy:
automatic - repository URL:
https://github.com/codefresh-contrib/gitops-certification-examples - Path:
./bitnami-sealed-controller - Cluster: https://kubernetes.default.svc
- Namespace:
kube-system

3. Instal Kubeseal pada laptop atau local environment anda. Panduan proses instalasinya dapat anda temukan pada tautan ini.
4. Temui file secret yang belum dienkripsi pada path berikut secret-app/never-commit-to-git/unsealed_secrets
5. Lakukan proses enkripsi.$ kubeseal < unsealed_secrets/db-creds.yml > sealed_secrets/db-creds-encrypted.yaml -o yaml $ kubeseal < unsealed_secrets/paypal-cert.yml > sealed_secrets/paypal-cert-encrypted.yaml -o yaml
6. Simpan secret yang sudah dienkripsi pada Git anda.
7. Deploy aplikasi demo menggunakan secret yang sudah dienkripsi pada Argo CD dengan detail berikut:
- Application Name :
demo - Project:
default - Sync Policy:
automatic - Repository URL: https://github.com/akun_github_anda/gitops-certification-examples
- Path:
./secret-app/manifests - Cluster: https://kubernetes.default.svc
- Namespace:
default
Biarkan field yang kosong atau isi dengan value default.

Sampai pada langkah ini, anda sudah berhasil mengimplementasikan kredensial atau secret Kubernetes tanpa bertentangan dengan GitOps 🙂
