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-secretsCheck latest chart version
helm search repo sealedInstall 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/kubesealUsage 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: U3Ryb25nUGFzc3dvcmQKSekarang 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.yamlSekarat 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.