Муқаддимаи мухтасар оид ба Kustomize

Шарҳ. тарҷума.: Мақоларо Скотт Лоу, муҳандиси дорои таҷрибаи ғании IT, ки муаллиф/ҳаммуаллифи ҳафт китоби чопшуда (асосан дар VMware vSphere) мебошад, навишта шудааст. Ҳоло ӯ дар фаръии VMware-и Heptio (соли 2016 харида шудааст) кор мекунад, ки дар роёниши абрӣ ва Kubernetes тахассус дорад. Худи матн ҳамчун муқаддимаи мухтасар ва фаҳмо барои идоракунии конфигуратсия барои Kubernetes бо истифода аз технология хидмат мекунад Мутобиқсозӣ, ки ба наздикй як кисми K8-хо гардид.

Муқаддимаи мухтасар оид ба Kustomize

Kustomize абзорест, ки ба корбарон имкон медиҳад, ки "файлҳои YAML-и оддӣ ва бе қолабро барои мақсадҳои гуногун мутобиқ созанд ва YAML-и аслии YAML-ро бетағйир ва қобили истифода гузоранд" (тафсири мустақим аз он гирифта шудааст. анбори kustomize дар GitHub). Kustomize метавонад мустақиман иҷро карда шавад ё аз рӯи Kubernetes 1.14 истифода шавад kubectl -k барои дастрасӣ ба функсияи он (гарчанде ки аз Kubernetes 1.15, бинарии алоҳида аз қобилиятҳои дар kubectl сохташуда навтар аст). (Шарҳ. тарҷума.: Ва бо нашри охирин Кубернетҳо 1.16 мутобиқ кардан аз ҷониби дастгирӣ карда мешавад инчунин дар утилитаи kubeadm.) Дар ин паём, ман мехоҳам хонандагонро бо асосҳои kustomize шинос кунам.

Дар соддатарин шакл/барномааш, kustomize ин танҳо маҷмӯи захираҳо (файлҳои YAML, ки объектҳои Kubernetes: Ҷойгиркунӣ, Хидматҳо ва ғайраро муайян мекунанд) ва инчунин рӯйхати дастурҳо оид ба тағиротҳое мебошад, ки ба ин захираҳо бояд ворид карда шаванд. Ҳамон тавре ки 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
Шарҳ. тарҷума.: Намоиш аз ҳуҷҷатҳои лоиҳавӣ оид ба истифодаи «оддӣ» kustomize

Натиҷаро метавон дубора равона кард, агар тағирот ворид карда шавад:

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, файлҳои аслиро бетағйир нигоҳ доред ва ба ин васила дар ҳолати зарурӣ бозсозии файлҳои аслиро осонтар мекунад.

Манфиатҳои kustomize дар ҳолатҳои мураккабтар истифода мешаванд. Дар мисоли боло kustomization.yaml ва захираҳо дар як директория мебошанд. Аммо, kustomize ҳолатҳоеро дастгирӣ мекунад, ки дар он конфигуратсияи асосӣ ва вариантҳои зиёди он мавҷуд аст, ки бо номи онҳо низ маълум аст. такрори. Масалан, корбар мехост, ки Deployment and Service-ро барои 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
Шарҳ. тарҷума.: Тасвир аз ҳуҷҷатҳои лоиҳавӣ оид ба истифодаи қабатҳо дар kustomize

Муайян кардан мумкин аст хеле зиёд бештар аз он чизе, ки дар ин мақола оварда шудааст. Бо вуҷуди ин, ман умедворам, ки он ҳамчун муқаддимаи хуб хидмат мекунад.

Захираҳои иловагӣ

Дар бораи kustomize бисёр мақолаҳо ва нашрияҳои хуб мавҷуданд. Инҳоянд чанде, ки ман махсусан муфид пайдо кардам:

Шарҳ. тарҷума.: Шумо инчунин метавонед як блоки истинодҳоеро, ки ҳамчун нашршуда нашр шудаанд, тавсия диҳед захираҳо дар вебсайти хидматрасонӣ, пас аз он маҷмӯи видеоҳо бо гузоришҳои охирин дар бораи kustomize.

Агар шумо барои такмил додани ин мавод савол ё пешниҳоде дошта бошед, ман ҳамеша барои фикру мулоҳизаҳо омодаам. Шумо метавонед бо ман дар тамос шавед Twitter ё Канали Kubernetes Slack. Бо kustomize манифестҳои худро тағир диҳед!

PS аз тарҷумон

Инчунин дар блоги мо хонед:

Манбаъ: will.com

Илова Эзоҳ