Posted in

Installing Sealed-Secret on Kubernetes Cluster

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.

Leave a Reply

Your email address will not be published. Required fields are marked *