Шарҳ. тарҷума.: Мақоларо Скотт Лоу, муҳандиси дорои таҷрибаи ғании IT, ки муаллиф/ҳаммуаллифи ҳафт китоби чопшуда (асосан дар VMware vSphere) мебошад, навишта шудааст. Ҳоло ӯ дар фаръии VMware-и Heptio (соли 2016 харида шудааст) кор мекунад, ки дар роёниши абрӣ ва Kubernetes тахассус дорад. Худи матн ҳамчун муқаддимаи мухтасар ва фаҳмо барои идоракунии конфигуратсия барои Kubernetes бо истифода аз технология хидмат мекунад
Kustomize абзорест, ки ба корбарон имкон медиҳад, ки "файлҳои YAML-и оддӣ ва бе қолабро барои мақсадҳои гуногун мутобиқ созанд ва YAML-и аслии YAML-ро бетағйир ва қобили истифода гузоранд" (тафсири мустақим аз он гирифта шудааст. kubectl -k
барои дастрасӣ ба функсияи он (гарчанде ки аз Kubernetes 1.15, бинарии алоҳида аз қобилиятҳои дар kubectl сохташуда навтар аст). (Шарҳ. тарҷума.: Ва бо нашри охирин
Дар соддатарин шакл/барномааш, 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 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 конфигуратсияи YAML-ро барои муҳитҳои мухталифи истеҳсол/озмоиш тағир диҳед ; -
Кустомизатсия - Роҳи дурусти сохтани шаблон дар Кубернетес ; -
Идоракунии декларативии объектҳои Kubernetes бо истифода аз Customize ; -
Мутобиқсозии Диаграммаҳои Helm Upstream бо Customize .
Шарҳ. тарҷума.: Шумо инчунин метавонед як блоки истинодҳоеро, ки ҳамчун нашршуда нашр шудаанд, тавсия диҳед
Агар шумо барои такмил додани ин мавод савол ё пешниҳоде дошта бошед, ман ҳамеша барои фикру мулоҳизаҳо омодаам. Шумо метавонед бо ман дар тамос шавед
PS аз тарҷумон
Инчунин дар блоги мо хонед:
- «
Асбобҳо барои таҳиягарони барномаҳое, ки дар Kubernetes кор мекунанд »; - «
Kubernetes 1.14: шарҳи навовариҳои асосӣ »; - «
Панҷ натиҷаи асосии Саммити Ҳелм 2019 дар Амстердам »; - «
Муқаддимаи амалӣ ба менеҷери бастаҳо барои Kubernetes - Helm ".
Манбаъ: will.com