Skip to content

Kubernetes secret automatize

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
Published inkubernetes

Comments are closed.