Sobes.tech
Middle+

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.