Kubernetes içerisinde secret oluştururken, secret değerlerinin dönüştürülmesi gerekiyor. Bunları base64 olarak secret olarak set edebilir ve daha sonrasında ihtiyaca göre kullanabiliriz.
Secret oluşumunu birçok farklı şekilde yapabiliriz…
- Bunlar; manuel yani .yaml öznesinde kendimiz base64 e çevirerek set edebiliriz.
- kubectl ile benzer şekilde set edebiliriz.
- kustomization ile otomatik dönüşüm sağlayabiliriz (.env)
- Belirli bir configmap den secret a dönüş sağlanabilir.
Tabii bu örnekler daha da genişletilebilir.
manuel
apiVersion: v1
kind: Secret
metadata:
name: <secret-name>
type: Opaque
data:
username: dXNlcm5hbWU= # "username" (base64 encoded)
password: cGFzc3dvcmQ= # "password" (base64 encoded)
kubectl
kubectl create secret generic <secret-name> --from-literal=API_KEY=test --from-literal=API_SECRET=abc123
kustomization
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
generatorOptions:
disableNameSuffixHash: true
secretGenerator:
- name: <secret-name>
envs:
- .env
from configmap to secret
Aşağıdaki örnek özelinde, configmap içeriği direkt base64 olarak çıkarılır ve secret olarak çıktı üretir. Burada bize gereken iki paket var: jq ve yq.
kubectl get configmap <configmap-name> -o json | jq -r '
{
apiVersion: "v1",
kind: "Secret",
metadata: {
name: .metadata.name,
namespace: .metadata.namespace
},
type: "Opaque",
data: (.data | map_values(@base64))
}' | yq -P
Comments are closed.