Кустомизацияга кыскача киришүү

Эскертүү. котормо.: Макала IT тармагында чоң тажрыйбасы бар инженер Скотт Лоу тарабынан жазылган, ал жети басылып чыккан китептин автору/авторлошу (негизинен VMware vSphere боюнча). Ал азыр булуттагы эсептөө жана Kubernetes боюнча адистешкен VMware туунду компаниясы Heptio (2016-жылы алынган) үчүн иштейт. Тексттин өзү технологияны колдонуу менен Kubernetes үчүн конфигурацияны башкарууга кыска жана түшүнүктүү киришүү катары кызмат кылат Ыңгайлаштыруу, жакында K8s курамына кирген.

Кустомизацияга кыскача киришүү

Kustomize - бул колдонуучуларга "жөнөкөй, шаблонсуз YAML файлдарын ар кандай максаттар үчүн ыңгайлаштырууга, түпнуска YAMLди бүтүн жана колдонууга жарамдуу кылып калтырууга" мүмкүндүк берген курал (сүрөттөмө түз жерден алынган GitHubдагы репозиторийди kustomize). Kustomize түз иштетсе болот же Kubernetes 1.14 боюнча колдонулушу мүмкүн kubectl -k анын функционалдуулугуна жетүү үчүн (Бирок Kubernetes 1.15 боюнча, өзүнчө бинардык кубектлге орнотулган мүмкүнчүлүктөрдөн жаңыраак). (Эскертүү. котормо.: Жана акыркы чыгарылыш менен Кубернеттер 1.16 ыңгайлаштыруу тарабынан колдоого алынган ошондой эле kubeadm утилитасында.) Бул билдирүүдө мен окурмандарды kustomize негиздери менен тааныштыргым келет.

Эң жөнөкөй формада/колдонмодо kustomize бул жөн гана ресурстардын жыйындысы (Kubernetes объекттерин аныктаган YAML файлдары: Жайгаштыруу, Кызматтар ж.б.) жана ошол ресурстарга киргизиле турган өзгөртүүлөр боюнча нускамалардын тизмеси. make камтылган нускамалар топтомун колдонот Makefile, жана Docker контейнерди нускамалардын негизинде курат Dockerfile, колдонууларды ыңгайлаштыруу kustomization.yaml колдонуучу ресурстардын топтомуна кандай өзгөртүүлөрдү киргизгиси келгени жөнүндө нускамаларды сактоо үчүн.

Бул жерде мисал файл болуп саналат kustomization.yaml:

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

Мен файлдагы бардык мүмкүн болгон талаалар жөнүндө айтууга аракет кылбайм. kustomization.yaml (Бул тууралуу жакшы жазылган бул жерде), бирок мен конкреттүү бир мисалга кыскача түшүндүрмө берейин:

  • талаа resources kustomize эмне (кайсы ресурстар) өзгөрөрүн көрсөтөт. Бул учурда, ал файлдардан ресурстарды издейт deployment.yaml и service.yaml каталогуңузда (зарыл болсо, сиз толук же салыштырмалуу жолдорду көрсөтө аласыз).
  • талаа namePrefix kustomize белгилүү бир префиксти кошууну буйруйт (бул учурда - dev-) сыпаттоо name талаада аныкталган бардык ресурстар resources. Ошентип, жайылтуу бар болсо name мааниси менен nginx-deployment, ыңгайлаштыруу аны жасайт dev-nginx-deployment.
  • талаа namespace kustomize бардык ресурстарга берилген аттар мейкиндигин кошууну буйруйт. Бул учурда, Жайгаштыруу жана Кызмат аттар мейкиндигине түшөт development.
  • Акыр-аягы, талаа commonLabels бардык ресурстарга кошула турган энбелгилердин топтомун камтыйт. Биздин мисалда, kustomize аталышы бар ресурстарга энбелги ыйгарат environment жана мааниси development.

Колдонуучу болсо kustomize build . файл менен каталогдо kustomization.yaml жана керектүү ресурстар (мисалы, файлдар deployment.yaml и service.yaml), андан кийин чыгарууда көрсөтүлгөн өзгөртүүлөр менен текстти алат kustomization.yaml.

Кустомизацияга кыскача киришүү
Эскертүү. котормо.: Кустомизацияны "жөнөкөй" колдонуу боюнча долбоордук документациядан иллюстрация

Өзгөртүүлөрдү киргизүү керек болсо, чыгарууну кайра багыттаса болот:

kustomize build . > custom-config.yaml

Чыгуу маалыматтары детерминистикалык (бир эле киргизүү маалыматтары бирдей чыгаруу натыйжаларын берет), андыктан натыйжаны файлга сактоонун кереги жок. Анын ордуна, аны башка буйрукка түздөн-түз өткөрүп берсе болот:

kustomize build . | kubectl apply -f -

Kustomize өзгөчөлүктөрү аркылуу да кирүүгө болот kubectl -k (Kubernetes 1.14 версиясынан бери). Бирок, өз алдынча kustomize пакети интеграцияланган kubectl пакетине караганда тезирээк жаңырарын эстен чыгарбаңыз (жок дегенде Kubernetes 1.15 релизинде ушундай).

Окурмандар: "Эгер сиз файлдарды түз эле түзөтө алсаңыз, эмне үчүн бул татаалдык?" Улуу суроо. Биздин мисалда, чынында эле алат файлдарды өзгөртүү deployment.yaml и service.yaml түздөн-түз, бирок алар башка бирөөнүн долбоорунун айры болуп калсачы? Файлдарды түздөн-түз өзгөртүү, түпнуска/булакка өзгөртүүлөр киргизилгенде, айрыны кайра түзүүнү кыйындатат (эгерде мүмкүн болбосо). Kustomize колдонуу бул өзгөртүүлөрдү файлда борборлоштурууга мүмкүндүк берет kustomization.yaml, баштапкы файлдарды бүтүн калтырып, зарыл болсо, баштапкы файлдарды кайра түзүүнү жеңилдетет.

Кустомизациянын артыкчылыктары колдонуунун татаалыраак учурларда айкын болот. Жогорудагы мисалда kustomization.yaml жана ресурстар ошол эле каталогдо. Бирок, kustomize базалык конфигурация жана анын көптөгөн варианттары бар болгон учурларды колдойт. үстүнө коюлган. Мисалы, колдонуучу мен мисал катары колдонгон nginx үчүн Жайгаштыруу жана Кызматты алгысы келип, ошол файлдардын иштеп чыгуу, стадиялоо жана өндүрүш версияларын (же варианттарын) түзгүсү келди. Бул үчүн ага жогоруда айтылган катмарлар жана чындыгында негизги ресурстар керек болот.

Үстүнкү жана негизги ресурстар идеясын көрсөтүү үчүн (базалык ресурстар), каталогдор төмөнкү структурага ээ деп коёлу:

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

Файлда base/kustomization.yaml талааны пайдалануучулар resources жөн гана kustomize ресурстар камтышы керек жарыялайт.

Ар бир файлда overlays/{dev,staging,prod}/kustomization.yaml колдонуучулар талаадагы базалык конфигурацияга кайрылышат resources, анан үчүн конкреттүү өзгөртүүлөрдү көрсөтөт берилген чөйрө. Мисалы, файл overlays/dev/kustomization.yaml мурда берилген мисалга окшош болушу мүмкүн:

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

Бул учурда файл overlays/prod/kustomization.yaml таптакыр башкача болушу мүмкүн:

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

Колдонуучу иштеткенде kustomize build . каталогдо overlays/dev, kustomize иштеп чыгуу вариантын жаратат. Эгер чуркасаң kustomize build . каталогдо overlays/prod - Сиз өндүрүш опциясын аласыз. Мунун баары - түпнускага эч кандай өзгөртүүлөрдү киргизбестен (базалык) файлдар, бардыгы декларативдик жана детерминисттик жол менен. Сиз бул файлдардын негизинде каалаган конфигурацияны каалаган убакта кайра чыгара аларыңызды билип, базалык конфигурацияны жана каталогдорду түз версияны башкарууга тапшыра аласыз.

Кустомизацияга кыскача киришүү
Эскертүү. котормо.: Кустомизацияда катмарларды колдонуу боюнча долбоордук документациядан иллюстрация

Ыңгайлаштыруу болот дагы бул макалада каралгандан көбүрөөк. Бирок, бул жакшы киришүү катары кызмат кылат деп үмүттөнөм.

Кошумча ресурстар

Kustomize жөнүндө көптөгөн жакшы макалалар жана басылмалар бар. Бул жерде мен өзгөчө пайдалуу деп тапкан бир нечеси бар:

Эскертүү. котормо.: Сиз ошондой эле жарыяланган шилтемелер блогун сунуш кыла аласыз Resources утилитанын веб-сайтында, андан кийин kustomize жөнүндө акыркы отчеттор менен видеолордун жыйнагы.

Эгерде сизде бул материалды жакшыртуу боюнча суроолоруңуз же сунуштарыңыз болсо, мен ар дайым пикир билдирүүгө ачыкмын. Мени менен байланышсаңыз болот Twitter же Kubernetes Slack каналы. Kustomize менен манифесттериңизди өзгөртүп, көңүл ачыңыз!

Котормочудан PS

Биздин блогдон дагы окуңуз:

Source: www.habr.com

Комментарий кошуу