Kustomizatsiyaga qisqacha kirish

Eslatma. tarjima.: Maqola IT sohasida katta tajribaga ega muhandis Skott Lou tomonidan yozilgan, u yettita bosma kitobning muallifi/hammuallifi (asosan VMware vSphere da). Hozir u bulutli hisoblash va Kubernetesga ixtisoslashgan VMware sho'ba korxonasi Heptio (2016 yilda sotib olingan)da ishlaydi. Matnning o'zi texnologiyadan foydalangan holda Kubernetes uchun konfiguratsiyani boshqarish bo'yicha qisqacha va tushunarli kirish bo'lib xizmat qiladi. Moslashtiring, yaqinda K8s tarkibiga kirdi.

Kustomizatsiyaga qisqacha kirish

Kustomize - bu foydalanuvchilarga "oddiy, shablonsiz YAML fayllarini turli maqsadlar uchun moslashtirib, asl YAMLni saqlanib qolishi va foydalanishga yaroqliligi" imkonini beruvchi vositadir (tavsif to'g'ridan-to'g'ri manbadan olingan. GitHub-da omborni kustomize qiling). Kustomize to'g'ridan-to'g'ri ishga tushirilishi yoki Kubernetes 1.14 dan foydalanish mumkin kubectl -k uning funksionalligiga kirish uchun (garchi Kubernetes 1.15 dan boshlab, alohida ikkilik kubectl-ga o'rnatilgan imkoniyatlardan yangiroq). (Eslatma. tarjima.: Va so'nggi nashr bilan Kubernetes 1.16 moslashtirish tomonidan qo'llab -quvvatlanadi kubeadm yordam dasturida ham.) Ushbu postda men o'quvchilarni kustomizatsiya asoslari bilan tanishtirmoqchiman.

Eng oddiy shaklda/ilovada kustomize oddiygina resurslar to'plamidir (Kubernetes ob'ektlarini belgilaydigan YAML fayllari: O'rnatishlar, Xizmatlar va boshqalar), shuningdek, ushbu resurslarga kiritilishi kerak bo'lgan o'zgartirishlar bo'yicha ko'rsatmalar ro'yxati. Xuddi make tarkibidagi ko'rsatmalar to'plamidan foydalanadi Makefile, va Docker konteynerni quyidagi ko'rsatmalar asosida quradi Dockerfile, foydalanishni moslashtiring kustomization.yaml foydalanuvchi resurslar to'plamiga qanday o'zgartirishlar kiritmoqchi ekanligi haqidagi ko'rsatmalarni saqlash uchun.

Mana misol fayl kustomization.yaml:

resources:
- deployment.yaml
- service.yaml
namePrefix: dev-
namespace: development
commonLabels:
  environment: development

Men fayldagi barcha mumkin bo'lgan maydonlar haqida gapirishga harakat qilmayman. kustomization.yaml (bu haqida yaxshi yozilgan shu yerda), lekin men aniq bir misol haqida qisqacha tushuntirish beraman:

  • dala resources kustomizatsiya nima (qaysi resurslar) o'zgarishini ko'rsatadi. Bunday holda, u fayllardagi resurslarni qidiradi deployment.yaml и service.yaml katalogingizda (agar kerak bo'lsa, to'liq yoki nisbiy yo'llarni belgilashingiz mumkin).
  • dala namePrefix kustomizatsiyaga ma'lum bir prefiks qo'shishni buyuradi (bu holda - dev-) sifatlash name sohada belgilangan barcha resurslar resources. Shunday qilib, agar Deployment mavjud bo'lsa name ma'nosi bilan nginx-deployment, moslashtirish buni amalga oshiradi dev-nginx-deployment.
  • dala namespace kustomize-ga berilgan nomlar maydonini barcha resurslarga qo'shishni buyuradi. Bunday holda, Deployment and Service nomlar maydoniga tushadi development.
  • Nihoyat, maydon commonLabels barcha resurslarga qo'shiladigan yorliqlar to'plamini o'z ichiga oladi. Bizning misolimizda kustomize manbalarga nom bilan yorliq tayinlaydi environment va ma'nosi development.

Agar foydalanuvchi qilsa kustomize build . fayl bilan katalogda kustomization.yaml va kerakli resurslar (masalan, fayllar deployment.yaml и service.yaml), keyin chiqishda u ko'rsatilgan o'zgarishlar bilan matnni oladi kustomization.yaml.

Kustomizatsiyaga qisqacha kirish
Eslatma. tarjima.: Kustomizedan "oddiy" foydalanish bo'yicha loyiha hujjatlaridan rasm

Agar o'zgarishlar kiritilishi kerak bo'lsa, chiqishni qayta yo'naltirish mumkin:

kustomize build . > custom-config.yaml

Chiqish ma'lumotlari deterministik (bir xil kirish ma'lumotlari bir xil chiqish natijalarini beradi), shuning uchun natijani faylga saqlashingiz shart emas. Buning o'rniga, uni to'g'ridan-to'g'ri boshqa buyruqqa o'tkazish mumkin:

kustomize build . | kubectl apply -f -

Kustomize xususiyatlariga ham orqali kirish mumkin kubectl -k (Kubernetes 1.14 versiyasidan beri). Biroq, esda tutingki, mustaqil kustomize paketi o'rnatilgan kubectl paketiga qaraganda tezroq yangilanadi (hech bo'lmaganda Kubernetes 1.15 versiyasida shunday).

O'quvchilar savol berishlari mumkin: "Agar siz fayllarni to'g'ridan-to'g'ri tahrir qila olsangiz, nima uchun bu murakkablik?" Ajoyib savol. Bizning misolimizda, albatta mumkin fayllarni o'zgartirish deployment.yaml и service.yaml to'g'ridan-to'g'ri, lekin ular birovning loyihasining vilkalari bo'lsa-chi? Fayllarni to'g'ridan-to'g'ri o'zgartirish, boshlang'ich/manbaga o'zgartirishlar kiritilganda vilkani qayta tiklashni qiyinlashtiradi (agar imkonsiz bo'lsa). Kustomize dan foydalanish ushbu o'zgarishlarni faylda markazlashtirish imkonini beradi kustomization.yaml, asl fayllarni buzilmasdan qoldirib, kerak bo'lganda asl fayllarni qayta asoslashni osonlashtiradi.

Kustomizatsiyaning afzalliklari yanada murakkab foydalanish holatlarida namoyon bo'ladi. Yuqoridagi misolda kustomization.yaml va resurslar bir xil katalogda. Biroq, kustomize asosiy konfiguratsiya va uning ko'plab variantlari mavjud bo'lgan hollarda foydalanishni qo'llab-quvvatlaydi. qoplamalari. Misol uchun, foydalanuvchi men misol sifatida ishlatgan nginx uchun Deployment and Service dasturini olishni va ushbu fayllarning ishlab chiqish, bosqichma-bosqich va ishlab chiqarish versiyalarini (yoki variantlarini) yaratmoqchi edi. Buning uchun unga yuqorida aytib o'tilgan qoplamalar va, aslida, asosiy resurslarning o'zi kerak bo'ladi.

Qoplamalar va asosiy resurslar g'oyasini tasvirlash uchun (asosiy resurslar), keling, kataloglar quyidagi tuzilishga ega deb faraz qilaylik:

- base
  - deployment.yaml
  - service.yaml
  - kustomization.yaml
- overlays
  - dev
    - kustomization.yaml
  - staging
    - kustomization.yaml
  - prod
    - kustomization.yaml

Fayl ichida base/kustomization.yaml maydondan foydalanadigan foydalanuvchilar resources shunchaki kustomizatsiya qilinadigan resurslarni o'z ichiga olishi kerakligini e'lon qiling.

Fayllarning har birida overlays/{dev,staging,prod}/kustomization.yaml foydalanuvchilar maydondagi asosiy konfiguratsiyaga murojaat qilishadi resources, va keyin uchun maxsus o'zgarishlarni ko'rsating berilgan muhit. Masalan, fayl overlays/dev/kustomization.yaml Yuqorida keltirilgan misolga o'xshash bo'lishi mumkin:

resources:
- ../../base
namePrefix: dev-
namespace: development
commonLabels:
  environment: development

Bu holda fayl overlays/prod/kustomization.yaml butunlay boshqacha bo'lishi mumkin:

resources:
- ../../base
namePrefix: prod-
namespace: production
commonLabels:
  environment: production
  sre-team: blue

Foydalanuvchi ishga tushganda kustomize build . katalogda overlays/dev, kustomize ishlab chiqish variantini yaratadi. Yugursang kustomize build . katalogda overlays/prod - ishlab chiqarish variantini olasiz. Va bularning barchasi - asl nusxaga hech qanday o'zgartirish kiritmasdan (asosiy) fayllar, barchasi deklarativ va deterministik tarzda. Asosiy konfiguratsiya va katlama kataloglarini toʻgʻridan-toʻgʻri versiya boshqaruviga topshirishingiz mumkin, chunki ushbu fayllar asosida istalgan vaqtda istalgan konfiguratsiyani qayta yaratishingiz mumkin.

Kustomizatsiyaga qisqacha kirish
Eslatma. tarjima.: Kustomize-da qoplamalardan foydalanish bo'yicha loyiha hujjatlaridan rasm

Sozlash mumkin juda ko'p ushbu maqolada muhokama qilinganidan ko'proq. Biroq, umid qilamanki, bu yaxshi kirish bo'lib xizmat qiladi.

Dopolnitelnye resursy

Kustomize haqida ko'plab yaxshi maqolalar va nashrlar mavjud. Mana, men uchun foydali bo'lgan ba'zilari:

Eslatma. tarjima.: sifatida nashr etilgan havolalar blokini ham tavsiya qilishingiz mumkin resurslar yordamchi dastur veb-saytida, keyin kustomize haqida so'nggi hisobotlar bilan videolar to'plami.

Agar sizda ushbu materialni yaxshilash bo'yicha savollaringiz yoki takliflaringiz bo'lsa, men har doim fikr-mulohazalarga ochiqman. Men bilan bog'lanishingiz mumkin Twitter yoki Kubernetes Slack kanali. Kustomize bilan manifestlaringizni o'zgartirishdan zavqlaning!

Tarjimondan PS

Shuningdek, bizning blogimizda o'qing:

Manba: www.habr.com

a Izoh qo'shish