kubernetes secret

kubernetes secret

Kubernetes Secret, hassas verilerin (örneğin, şifreler, API anahtarları, tokenlar, vb.) güvenli bir şekilde saklanmasını sağlayan bir Kubernetes nesnesidir. Bu veriler, Pod’lar veya diğer kaynaklar tarafından güvenli bir şekilde erişilebilir. Secret’lar, genellikle ortam değişkenleri ya da dosya sistemi üzerinde kullanılmak üzere konteynerlere iletilir ama şartımız şu aynı namespaces olması gerekiyor bunu unutmayalım.

Kubernetes Secret, verilerin:

1. Gizliliğini korur: Veriler Kubernetes API sunucusunda şifreli olarak saklanır.

2. Kapsamlı yönetim: Secret’lar, erişim kontrolü ve rol tabanlı erişim kontrolü (RBAC) ile yönetilebilir.

3. Kolay erişim: Pod’lar veya servisler Secret’ları ortam değişkenleri veya dosyalar olarak alabilir.

🔐 Kubernetes Secret Kullanım Senaryoları: ENV, Volume ve envFrom

Kubernetes ortamında hassas verilerinizi (örneğin şifre, kullanıcı adı, API anahtarı) güvenli bir şekilde saklamak için Secret objesi kullanılır. Bu yazıda bir Secret’ın pod içerisinde üç farklı şekilde nasıl kullanılabileceğini anlatacağız:

1. Volume olarak mount etme

2. Environment variable (env) ile tek tek çekme

3. Tüm environment değişkenlerini otomatik çekme (envFrom)

Önce örnek bir Secret oluşturalım:

kubectl create secret generic mysecret3 \
--from-literal=db_username=admin \
--from-literal=db_password=123456 \
--from-literal=db_server=localhost

✅ 1. secretpodvolume — Volume olarak Secret kullanımı:

apiVersion: v1
kind: Pod
metadata:
name: secretpodvolume
spec:
containers:
- name: app
image: busybox
command: [ "sleep", "3600" ]
volumeMounts:
- name: secret-volume
mountPath: "/etc/secret-data"
volumes:
- name: secret-volume
secret:
secretName: mysecret3

⏱ Bu pod içindeki /etc/secret-data/ dizinine şu dosyalar gelir: db_username, db_password, db_server.

✅ 2. secretpodenv — Tek tek environment olarak çekme:

apiVersion: v1
kind: Pod
metadata:
name: secretpodenv
spec:
containers:
- name: app
image: busybox
command: [ "sleep", "3600" ]
env:
- name: DB_USERNAME
valueFrom:
secretKeyRef:
name: mysecret3
key: db_username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: mysecret3
key: db_password
- name: DB_SERVER
valueFrom:
secretKeyRef:
name: mysecret3
key: db_server

⏱ Bu pod’da ortam değişkenleri olarak değerleri alırsın.

kubectl exec -it secretpodenv — printenv | grep DB_

✅ 3. secretpodenvall — Tüm environment’ları toplu çekme (envFrom):

apiVersion: v1
kind: Pod
metadata:
name: secretpodenvall
spec:
containers:
- name: app
image: busybox
command: [ "sleep", "3600" ]
envFrom:
- secretRef:
name: mysecret3

⏱ ENV değişkenleri pod’da direkt hazır olur: DB_USERNAME, DB_PASSWORD, DB_SERVER.

kubectl exec -it secretpodenvall — printenv | grep DB_

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Back To Top