Кустомизацияға қысқаша кіріспе

Ескерту. аударма: Мақаланы IT саласында үлкен тәжірибесі бар инженер Скотт Лоу жазған, ол жеті баспа кітаптың авторы/бірлескен авторы (негізінен VMware vSphere). Ол қазір бұлттық есептеулер мен Kubernetes бойынша маманданған VMware еншілес компаниясы Heptio (2016 жылы сатып алынған) үшін жұмыс істейді. Мәтіннің өзі технологияны пайдаланып Kubernetes үшін конфигурацияны басқаруға қысқаша және түсінікті кіріспе ретінде қызмет етеді. Баптау, ол жақында K8s құрамына кірді.

Кустомизацияға қысқаша кіріспе

Kustomize – пайдаланушыларға «әртүрлі мақсаттарға арналған қарапайым, үлгісіз YAML файлдарын теңшеуге, түпнұсқа YAML-ді бүлінбеген және пайдалануға жарамды етіп өзгертуге» мүмкіндік беретін құрал (сипаттама тікелей мына жерден алынған. GitHub сайтында репозиторийді kustomize). Kustomize тікелей іске қосылуы немесе Kubernetes 1.14 нұсқасы бойынша пайдаланылуы мүмкін kubectl -k оның функционалдығына қол жеткізу үшін (Kubernetes 1.15 нұсқасы бойынша бөлек екілік жүйе kubectl ішіне орнатылған мүмкіндіктерге қарағанда жаңарақ). (Ескерту. аударма: Және соңғы шығарылыммен Кубернеттер 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. Осылайша, егер Deployment бар болса 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 -

Құстомизация мүмкіндіктеріне де арқылы қол жеткізуге болады kubectl -k (Кубернетес 1.14 нұсқасынан бастап). Дегенмен, автономды kustomize бумасы біріктірілген kubectl пакетіне қарағанда жылдамырақ жаңартылатынын есте сақтаңыз (кем дегенде бұл Kubernetes 1.15 шығарылымында болған жағдай).

Оқырмандар: «Егер сіз файлдарды тікелей өңдей алсаңыз, неге бұл күрделілік?» Деп сұрауы мүмкін. Тамаша сұрақ. Біздің мысалда, шынымен болады файлдарды өзгерту deployment.yaml и service.yaml тікелей, бірақ олар басқа біреудің жобасының шанышқысы болса ше? Файлдарды тікелей өзгерту бастапқы/көзге өзгертулер енгізілген кезде шанышқыны қайта құруды қиындатады (егер мүмкін болмаса). Kustomize пайдалану осы өзгерістерді файлда орталықтандыруға мүмкіндік береді kustomization.yaml, бастапқы файлдарды бүлінбеген етіп қалдырып, қажет болған жағдайда бастапқы файлдарды қайта құруды жеңілдетеді.

Кустомизацияның артықшылықтары неғұрлым күрделі пайдалану жағдайларында айқын болады. Жоғарыдағы мысалда kustomization.yaml және ресурстар бір каталогта. Дегенмен, kustomize негізгі конфигурациясы және оның көптеген нұсқалары бар пайдалану жағдайларын қолдайды. қабаттасулар. Мысалы, пайдаланушы мен мысал ретінде пайдаланған nginx үшін Deployment and Service қолданбасын қабылдап, сол файлдардың әзірлеу, кезеңдік және өндірістік нұсқаларын (немесе нұсқаларын) жасағысы келді. Мұны істеу үшін оған жоғарыда аталған қабаттасулар және, шын мәнінде, негізгі ресурстардың өзі қажет болады.

Қабаттасулар мен негізгі ресурстар идеясын көрсету (негізгі ресурстар), каталогтардың келесі құрылымы бар деп есептейік:

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

Файлда base/kustomization.yaml өрісті пайдаланатын пайдаланушылар resources жай ғана кустомизацияланатын ресурстарды қамтуы керек деп жариялаңыз.

Файлдардың әрқайсысында 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 ішінде қабаттасуды пайдалану бойынша жобалық құжаттаманың суреті

Баптау мүмкіндігі көп осы мақалада қарастырылғаннан көп. Дегенмен, бұл жақсы кіріспе болады деп үміттенемін.

Қосымша ресурстар

Kustomize туралы көптеген жақсы мақалалар мен жарияланымдар бар. Міне, мен әсіресе пайдалы деп тапқан кейбіреулер:

Ескерту. аударма: ретінде жарияланған сілтемелер блогын ұсына аласыз ресурстар утилитаның веб-сайтында, одан кейін kustomize туралы соңғы есептері бар бейнелер жинағы.

Егер сізде осы материалды жақсарту бойынша сұрақтарыңыз немесе ұсыныстарыңыз болса, мен әрқашан кері байланысқа дайынмын. Менімен байланыса аласыз Twitter немесе Kubernetes Slack арнасы. Манифесттеріңізді kustomize арқылы өзгертіңіз!

Аудармашыдан PS

Біздің блогта да оқыңыз:

Ақпарат көзі: www.habr.com

пікір қалдыру