Introduction
Ketika kita menggunakan GitOps dan menyimpan konfigurasi yang sensitif seperti password atau .env, maka tidak direkomendasikan kita menyimpan file tersebut ke dalam git repository. Disinilah Sealed-secret akan berfungsi untuk melakukan enkripsi file tersebut. Untuk decodernya sendiri itu berada di cluster kubernetes tersebut yang berarti tidak bisa digunakan selain di server kubernetes tersebut.
Reqruitment
- Kubernetes Cluster
- Helm
Installation
Installation on Kubernetes Cluster
Tambahkan repo helm sealed-secret
helm repo add sealed-secrets https://bitnami-labs.github.io/sealed-secrets
Check latest chart version
helm search repo sealed
Install berdasarkan chart version
helm install sealed-secrets --namespace kube-system --version 2.17.7 sealed-secrets/sealed-secrets

Installation on Client (Ubuntu 24.04)
Kita akan menggunakan kubeseal untuk membuat sealed-secret. Kita install kubeseal client terlebih dahulu
KUBESEAL_VERSION='0.32.2'
curl -OL "https://github.com/bitnami-labs/sealed-secrets/releases/download/v${KUBESEAL_VERSION:?}/kubeseal-${KUBESEAL_VERSION:?}-linux-amd64.tar.gz"
tar -xvzf kubeseal-${KUBESEAL_VERSION:?}-linux-amd64.tar.gz kubeseal
sudo install -m 755 kubeseal /usr/local/bin/kubeseal
Usage on Client (Ubuntu 24.04)
Untuk penggunaan kubeseal itu kita harus menyediakan secret file dalam bentuk yaml, yang kemudian akan di encrypt.
Karena kita akan menggunakan secret yang dimana secret menggunakan base64 untuk enkripsi.
echo "StrongPassword" | base64

Kemudian kita membuat file secret.yaml yang dimana enkrip diatas dimasukan ke password
apiVersion: v1
kind: Secret
metadata:
name: testing
namespace: default
data:
password: U3Ryb25nUGFzc3dvcmQK
Sekarang kita bisa convert dari file secret ke sealed-secret
kubeseal --controller-namespace kube-system --controller-name sealed-secrets < [SOURCE SECRET] -o yaml > [TARGET KBESEAL WILL CREATE]
kubeseal --controller-namespace kube-system --controller-name sealed-secrets < secret.yaml -o yaml > secret-sealed.yaml
Sekarat kita cek pada file yang sudah dienkripsi
cat secret-sealed.yaml

File tesebut adalah secret yang akan kita upload ke git repository.
Conclusion
Sealed-secret berfungsi untuk mengconvert file secret ke dalam enkripsi dari Sealed-secret yang dimana decoder hanya ada di Sealed-secret pada kubernetes yang diinstall. Kita hanya bisa generate enkripsi secara manual yang menggunakan file yang dimana tidak efisien untuk integrasi.
Untuk kedepannya kita akan melakukan installasi Vault Hashicorp untuk manajemen secret.