Secrets (giz)

  • https://12factor.net

Kubernetes’de, özel bilgilerin, şifrelerin, kimlik doğrulama verilerinin ve diğer hassas verilerin depolanması için Secret adında bir yapı kullanılır. Secret, ConfigMap gibi anahtar-değer çiftleri kullanarak özel bilgileri depolar, ancak Secret verileri şifrelenir.

Secret’lar, YAML dosyaları aracılığıyla yapılandırılır ve uygulama içindeki konteynerlerin gizli bilgilere erişebilmesi için kullanılır. Secret’lar, Pod veya Deployment gibi yapılar tarafından referans edilebilir. Secret’lar, uygulama içinde kullanılan kimlik doğrulama verileri veya özel bilgileri gibi hassas verileri içerir.

Secret’lar, Kubernetes tarafından otomatik olarak şifrelenir ve depolanır. Bu sayede, Secret’lar güvenli bir şekilde depolanır ve uygulamanın güvenliği sağlanır. Ayrıca, Secret’lar, ConfigMap’ler gibi uygulama konfigürasyonlarını saklamak için de kullanılabilir.

Secret’lar, uygulamanın güvenliği için kritik önem taşır ve gizli bilgilerin yönetimini kolaylaştırır. Özellikle, uygulamaların bulut ortamlarında çalıştığı durumlarda, hassas verilerin güvenli bir şekilde depolanması ve yönetilmesi gereklidir. Secret’lar, uygulamanın güvenliği ve sürdürülebilirliği için önemli bir yapı taşıdır.

Secret verileri Kubernetes tarafından şifrelenmez ancak base64 ile kodlanır. Bu kodlama, Secret verilerinin depolanması ve yönetilmesi sırasında daha kolay bir şekilde işlenebilmesini sağlar. Ancak, base64 kodlaması verilerin gerçek şifrelenmesi olarak kabul edilemez, çünkü base64 kodlaması sadece verilerin okunabilirliğini ve anlaşılabilirliğini arttırır.

Bu nedenle, Secret verilerinin şifrelenmesi gerekiyorsa, önce verilerin gerçek şifreleme algoritmaları kullanılarak şifrelenmesi ve ardından bu şifrelenmiş verilerin base64 ile kodlanması gereklidir. Bu şekilde, Secret verileri güvenli bir şekilde saklanabilir ve yönetilebilir.

Uygulamayı Kurun

kubectl apply -f https://raw.githubusercontent.com/redhat-scholars/kubernetes-tutorial/master/apps/kubefiles/myboot-deployment.yml

kubectl apply -f https://raw.githubusercontent.com/redhat-scholars/kubernetes-tutorial/master/apps/kubefiles/myboot-deployment-configuration.yml

secret oluştur

kubectl create secret generic mysecret --from-literal=user='MyUserName' --from-literal=password='mypassword'

kubectl get secrets

kubectl describe secret mysecret

kubectl get secret mysecret -o yaml

echo 'bXlwYXNzd29yZA==' | base64 --decode

kubectl get secret mysecret -o jsonpath='{.data.password}' | base64 --decode

gizler dizin bağlamakla podlara bağlanır

        volumeMounts:
          - name: mysecretvolume
            mountPath: /mystuff/mysecretvolume
kubectl replace -f https://raw.githubusercontent.com/redhat-scholars/kubernetes-tutorial/master/apps/kubefiles/myboot-deployment-configuration-secret.yml

poda bakalım

PODNAME=$(kubectl get pod -l app=myboot -o name)
kubectl exec $PODNAME -- cat /mystuff/secretstuff/password