Kubernetes qanday qilib bir xil sirga ega oltita pod nusxasi bo'lsa, sirlarni qanday yangilaydi?
sobes.tech AI
AIdan javob
Kubernetes pod davomida sirlarni to'g'ridan-to'g'ri yangilamaydi. Podlar aniq nusxasini ishlatadi, u ishga tushirilgan paytda mavjud bo'lgan sir.
Podlar yangilangan sirni "ko'rish" uchun, ularni qayta ishga tushirish yoki qayta yaratish kerak. Buning uchun mashhur tarqatish strategiyalari quyidagilardir:
-
Rolling Update (Asta-sekin yangilash): Eski podlar yangi, yangilangan sir bilan asta-sekin almashtiriladi. Bu Deploymentlar uchun standart strategiyadir.
-
Recreate (Qayta yaratish): Barcha eski podlar bir vaqtning o'zida o'chiriladi va yangi podlar yaratiladi. Bu xizmatda qisqa uzilishlarga olib keladi.
-
Blue/Green Deployment: To'liq yangi versiya (yangilangan sir bilan) eski bilan parallel ravishda joylashtiriladi. Tekshirilgandan so'ng, barcha trafik yangi versiyaga yo'naltiriladi va eski o'chiriladi.
-
Canary Release: Yangi versiya (yangilangan sir bilan) kichik foydalanuvchi guruhiga joylashtiriladi, va asta-sekin unga trafik oshiriladi.
ConfigMap va Secrets fayl sifatida montaj qilingan bo'lsa, sirdagi o'zgarishlar allaqachon ishga tushirilgan pod ichida avtomatik ravishda yangilanishi mumkin, ammo bu biroz kechikadi (kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-files-from-a-pod). Ammo, masalan, sirni muhit o'zgaruvchilari sifatida ishlatish uchun, podni qayta ishga tushirish talab qilinadi.
Rolling Update yordamida Deploymentni yangilash misoli:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 6
selector:
matchLabels:
app: my-app
strategy:
type: RollingUpdate # Standart strategiya
rollingUpdate:
maxUnavailable: 1 # Yangilash davomida mavjud bo'lmagan podlar maksimal soni
maxSurge: 1 # Ortiqcha yangi podlar uchun maksimal son
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-image:latest
env:
- name: MY_SECRET_VALUE
valueFrom:
secretKeyRef:
name: my-secret # Sir nomi
key: my-key # Sir kaliti
my-secret sirini o'zgartirgandan so'ng, Deploymentni yangilash (masalan, rasm versiyasini o'zgartirish yoki anotatsiya qo'shish) kerak, shunda Rolling Update boshlanadi:
kubectl apply -f deployment.yaml
Kubernetes Deployment spetsifikatsiyasidagi o'zgarishlarni aniqlaydi va yangi podlar yaratishni boshlaydi, ular yangilangan sirga kirish imkoniyatiga ega bo'ladi. Eski podlar yakunlanadi.