Introduction
Pada artikel kali ini setelah saya melewati beberapa case tentang bagaimana sih me-management env atau secret di dalam architecture Kubernetes, nah pada kesempatan kali ini saya akan menjelaskan sedikit tentang bagaimana vault itu berjalan dan juga bagaimana vault bisa berkomunikasi dengan Kubernetes.
Sebelum itu perlu kita ketahui flow atau alur kerja dari vault sendiri pada gambar dibawah ini yang dimana mulai dari : vault UI –> kemudian vault operator sebagai administrator yang mengarahkan secret ini ke secret mana –> dan Kubernetes API sebagai penjembatan dari vault to secret. reference https://github.com/ricoberger/vault-secrets-operator jangan lupa juga baca artikel sebelumnya mengenai congimap & secret Kubernetes https://igunawan.com/pengertian-configmap-secret-di-kubernetes/ .

Hal yang perlu di siapkan tentunya :
- Cluster kube / minikube
- helm
Step untuk membuat management vault saya bagi menjadi 4 bagian:
Step 1 – install vault
Pertama karena kita menggunakan helm unuk installationya maka kita add repo vault terlebih dahulu
$ helm repo add hashicorp https://helm.releases.hashicorp.com "hashicorp" has been added to your repositories $ helm repo list Checked repo
Kemudian ada beberapa hal yang perlu kita sesuaikan didalam values , contohnya adalah storage class jumlah size dll, dan kalian bisa sesuaikan di
https://github.com/hashicorp/vault-helm/blob/main/values.yaml jika kalian sudah menyesuaikannya selanjutnya install / apply values tersebut dengan menggunakan chart yang kita add tadi.
helm upgrade --install --namespace vault vault hashicorp/vault -f ./location-files/values-vault.yaml
Sebelumnya perlu kita ketahui banyak sekali cara untuk auth method vault ini seperti , menggunakan TOKEN, APPROLE dll. Nah pada kali ini saya akan menggunakan auth method TOKEN, kita perlu melakukan init terlebih dahulu untuk men generate token kemudian baru unseal sebanyak 3 kali.
exec to POD vault
k exec -it nama-pod -n namespace sh
$ VAULT_ADDR=http://name-service.namespace.svc.cluster.local:8200 vault operator init
Kemudian nanti akan tampil token yang di generate seperti ini
Unseal Key 1: asdfwjlerjiawlrio3ijoih3284i2u4h2i384y23o842 Unseal Key 2: asdfwjlerjiawlrio3ijoih3284i2u4h2i384y23o842 Unseal Key 3: asdfwjlerjiawlrio3ijoih3284i2u4h2i384y23o842 Unseal Key 4: asdfwjlerjiawlrio3ijoih3284i2u4h2i384y23o842 Unseal Key 5: asdfwjlerjiawlrio3ijoih3284i2u4h2i384y23o842 Initial Root Token: root token
Sealnjutnya unseal dengan 3 kali unseal menggunakan token key 1 – 3 tersebut
$ VAULT_ADDR=http://name-service.namespace.svc.cluster.local:8200 vault operator unseal
Jika sudah pastikan container jalan dan check status vault status : true

Step 2 – Setup Operator Vault
Step kedua adalah setup operator vault, yang dimana berfungsi sebagai penghubung antara vault dashboard ke kubernetes API, add repo vault operator terlebih dahulu
$helm repo add ricoberger https://ricoberger.github.io/helm-charts $helm repo update $helm repo list Check repo
Sama halnya dengan vault-ui kita perlu sesuaikan values nya dan perbedaanya disini kita mendeploy secret untuk vault operator karena menggunakan metode TOKEN
add secret ROOT Token vault
export VAULT_TOKEN=ROOT_TOKEN export VAULT_TOKEN_LEASE_DURATION=86400 cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Secret metadata: name: vault-secrets-operator type: Opaque data: VAULT_TOKEN: $(echo -n "$VAULT_TOKEN" | base64) VAULT_TOKEN_LEASE_DURATION: $(echo -n "$VAULT_TOKEN_LEASE_DURATION" | base64) EOF
Selanjutnya sesuaikan values dan juga data/environment variable https://github.com/ricoberger/vault-secrets-operator/blob/main/charts/vault-secrets-operator/values.yaml values yang di sesuaikan dengan vault_address juga
environmentVars:
- name: VAULT_TOKEN
valueFrom:
secretKeyRef:
name: vault-secrets-operator
key: VAULT_TOKEN
- name: VAULT_TOKEN_LEASE_DURATION
valueFrom:
secretKeyRef:
name: vault-secrets-operator
key: VAULT_TOKEN_LEASE_DURATION
deploy values-operator with helm
helm upgrade --install --namespace vault vault-operator ricoberger/vault-secrets-operator --values location-file/values.yaml
Dan jika sudah selesai di deploy maka container akan jalan sesuai dengan secret.
Step 3 – Add secret on vault-ui
Ada beberapa hal yang harus diperhatikan sebelum ke tahap 3 ini pastikan step 1 dan 2 harus sudah running terlebih dahulu, dan pastikan jalankan ingress untuk vault di port 8200

dan disini kita menggunakan login TOKEN ROOT
Kemudian sbb:
a. Enable engine

b. Add path

c. Kemudian disini input key value seperti halnya kita menambhkan di .env

Step 4 – Add manifests secret on helm
Dan yang terakhir adalah kita buat secret manifests dari referensi ricoberger , dan biasanya saya bisa menggunakan file ini
apiVersion: ricoberger.de/v1alpha1
kind: VaultSecret
metadata:
name: {{ .Values.secret.NAME }}
namespace: {{ .Values.namespace }}
spec:
path: {{ .Values.secret.path }} / service-a/development
type: Opaque
atau dari sumbernya langsung menggunakan ini
apiVersion: ricoberger.de/v1alpha1
kind: VaultSecret
metadata:
name: kvv1-example-vaultsecret
spec:
keys:
- foo
isBinary: true
path: kvv1/example-vaultsecret
type: Opaque
dan yang terakhir adalah di file deployment.yaml envnya diarahkan seperti ini
envFrom:
- secretRef:
name: {{ .Values.secret.NAME }}
Terakhir Jika sudah maka kita bisa chek di list-secret atau pada POD/Container yang kita deploy

Terima kasih selamat mencoba

Admin website igunawan.com, System Administrator, DevOps Engineer
