Fərdiləşdirmə üçün Qısa Giriş

Qeyd. tərcümə.: Məqalə yeddi çap olunmuş kitabın (əsasən VMware vSphere-də) müəllifi/həmmüəllifi olan İT sahəsində böyük təcrübəyə malik mühəndis Skott Lou tərəfindən yazılmışdır. İndi o, bulud hesablamaları və Kubernetes üzrə ixtisaslaşmış VMware törəmə şirkəti Heptio (2016-cı ildə alınıb) üçün işləyir. Mətnin özü texnologiyadan istifadə edən Kubernetes üçün konfiqurasiya idarəçiliyinə qısa və asan başa düşülən giriş kimi xidmət edir. Özəlləşdirmək, bu yaxınlarda K8-lərin bir hissəsi oldu.

Fərdiləşdirmə üçün Qısa Giriş

Kustomize istifadəçilərə "sadə, şablonsuz YAML fayllarını müxtəlif məqsədlər üçün fərdiləşdirməyə, orijinal YAML-ni toxunulmaz və istifadəyə yararlı hala gətirməyə" imkan verən bir vasitədir (təsvir birbaşa olaraq götürülmüşdür. GitHub-da deponu kustomize edin). Kustomize birbaşa işlədilə bilər və ya Kubernetes 1.14-dən etibarən istifadə edilə bilər kubectl -k onun funksionallığına daxil olmaq üçün (Baxmayaraq ki, Kubernetes 1.15-ə görə, ayrıca binar kubectl-də qurulmuş imkanlardan daha yenidir). (Qeyd. tərcümə.: Və son buraxılışla Kubernetes 1.16 özəlləşdirmək tərəfindən dəstəklənir kubeadm yardım proqramında da.) Bu yazıda mən oxucuları kustomizenin əsasları ilə tanış etmək istəyirəm.

Ən sadə formada/tətbiqdə kustomize sadəcə resurslar toplusudur (Kubernetes obyektlərini müəyyən edən YAML faylları: Yerləşdirmələr, Xidmətlər və s.) üstəgəl həmin resurslara edilməsi lazım olan dəyişikliklər üçün təlimatların siyahısı. Eynilə make-də olan təlimat dəstindən istifadə edir Makefile, və Docker konteyneri təlimatlar əsasında qurur Dockerfile, istifadələri fərdiləşdirin kustomization.yaml istifadəçinin resurslar dəstinə hansı dəyişikliklər etmək istədiyi barədə təlimatları saxlamaq.

Budur bir nümunə fayl kustomization.yaml:

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

Fayldakı bütün mümkün sahələr haqqında danışmağa çalışmayacağam. kustomization.yaml (bu haqda yaxşı yazılıb burada), lakin konkret bir misalın qısa izahını verəcəyəm:

  • Sahə resources kustomizenin nəyin (hansı resursların) dəyişəcəyini göstərir. Bu halda o, fayllardakı resursları axtaracaq deployment.yaml и service.yaml kataloqunuzda (lazım olduqda tam və ya nisbi yolları təyin edə bilərsiniz).
  • Sahə namePrefix kustomize müəyyən bir prefiks əlavə etmək üçün göstəriş verir (bu halda - dev-) atribut etmək name sahədə müəyyən edilmiş bütün resurslar resources. Beləliklə, əgər Deployment varsa name mənası ilə nginx-deployment, fərdiləşdirmək bunu edəcək dev-nginx-deployment.
  • Sahə namespace kustomize-ə verilən ad sahəsini bütün resurslara əlavə etmək üçün göstəriş verir. Bu halda, Yerləşdirmə və Xidmət ad sahəsinə düşəcək development.
  • Nəhayət, sahə commonLabels bütün resurslara əlavə olunacaq etiketlər toplusunu ehtiva edir. Bizim nümunəmizdə kustomize adı olan resurslara etiket təyin edəcək environment və məna development.

İstifadəçi edərsə kustomize build . faylı olan kataloqda kustomization.yaml və lazımi resurslar (məsələn, fayllar deployment.yaml и service.yaml), sonra çıxışda göstərilən dəyişikliklərlə mətn alacaq kustomization.yaml.

Fərdiləşdirmə üçün Qısa Giriş
Qeyd. tərcümə.: kustomize-nin “sadə” istifadəsinə dair layihə sənədlərindən illüstrasiya

Dəyişikliklərin edilməsi lazım gələrsə, çıxış yönləndirilə bilər:

kustomize build . > custom-config.yaml

Çıxış məlumatları deterministikdir (eyni giriş məlumatları eyni çıxış nəticələrini verəcəkdir), buna görə də nəticəni faylda saxlamaq lazım deyil. Bunun əvəzinə, o, birbaşa başqa bir əmrə ötürülə bilər:

kustomize build . | kubectl apply -f -

Kustomize xüsusiyyətlərinə də vasitəsilə daxil olmaq olar kubectl -k (Kubernetes versiyası 1.14-dən bəri). Bununla birlikdə, müstəqil kustomize paketinin inteqrasiya olunmuş kubectl paketindən daha sürətli yeniləndiyini unutmayın (ən azı Kubernetes 1.15 buraxılışında belədir).

Oxucular soruşa bilər: "Əgər siz faylları birbaşa redaktə edə bilirsinizsə, niyə bütün bu mürəkkəblik var?" Əla sual. Bizim nümunəmizdə, həqiqətən olar faylları dəyişdirin deployment.yaml и service.yaml birbaşa, amma əgər onlar başqasının layihəsinin çəngəlidirsə? Faylların birbaşa dəyişdirilməsi mənşəyə/mənbəyə dəyişikliklər edildikdə çəngəlinin yenidən qurulmasını çətinləşdirir (mümkün deyilsə). Kustomize-dən istifadə bu dəyişiklikləri faylda mərkəzləşdirməyə imkan verir kustomization.yaml, orijinal faylları toxunulmaz buraxaraq və beləliklə, zəruri hallarda orijinal faylları yenidən əsaslandırmağı asanlaşdırır.

Kustomizenin faydaları daha mürəkkəb istifadə vəziyyətlərində aydın olur. Yuxarıdakı nümunədə kustomization.yaml və resurslar eyni kataloqdadır. Bununla belə, kustomize əsas konfiqurasiyanın və onun bir çox variantının olduğu istifadə hallarını dəstəkləyir. bindirmələr. Məsələn, istifadəçi mənim nümunə kimi istifadə etdiyim nginx üçün Deployment and Service-i götürmək və həmin faylların inkişaf, quruluş və istehsal versiyalarını (və ya variantlarını) yaratmaq istəyirdi. Bunun üçün o, yuxarıda qeyd olunan örtüklərə və əslində əsas resurslara ehtiyac duyacaq.

Bindirmələr və əsas mənbələr ideyasını göstərmək üçün (əsas resurslar), fərz edək ki, kataloqlar aşağıdakı struktura malikdir:

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

Faylda base/kustomization.yaml sahəsindən istifadə edən istifadəçilər resources sadəcə olaraq kustomizasiyaya daxil edilməli olan resursları bəyan edin.

Faylların hər birində overlays/{dev,staging,prod}/kustomization.yaml istifadəçilər sahədəki əsas konfiqurasiyaya istinad edirlər resources, və sonra üçün xüsusi dəyişiklikləri göstərin verilmiş mühit. Məsələn, fayl overlays/dev/kustomization.yaml daha əvvəl verilmiş nümunə kimi görünə bilər:

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

Bu halda fayl overlays/prod/kustomization.yaml tamamilə fərqli ola bilər:

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

İstifadəçi işlədikdə kustomize build . kataloqda overlays/dev, kustomize inkişaf variantını yaradacaq. Əgər qaçsan kustomize build . kataloqda overlays/prod - istehsal variantını əldə edirsiniz. Və bütün bunlar - orijinalda heç bir dəyişiklik etmədən (baza) faylları, hamısı deklarativ və deterministik şəkildə. Siz əsas konfiqurasiyanı və üst-üstə düşən qovluqları birbaşa versiya nəzarətinə həvalə edə bilərsiniz, belə ki, bu fayllar əsasında istənilən vaxt istədiyiniz konfiqurasiyanı bərpa edə bilərsiniz.

Fərdiləşdirmə üçün Qısa Giriş
Qeyd. tərcümə.: Kustomize-də üst-üstə düşmələrin istifadəsinə dair layihə sənədlərindən illüstrasiya

Fərdiləşdirə bilərsiniz çoxdur bu məqalədə göstərilənlərdən daha çox. Bununla belə, ümid edirəm ki, bu, yaxşı bir giriş kimi xidmət edəcəkdir.

Əlavə Resurslar

Kustomize haqqında çoxlu yaxşı məqalələr və nəşrlər var. Xüsusilə faydalı hesab etdiyim bəziləri bunlardır:

Qeyd. tərcümə.: Siz həmçinin olaraq nəşr olunan keçidlər blokunu tövsiyə edə bilərsiniz Resources kommunalın veb saytında, ardınca kustomize haqqında ən son hesabatları olan videolar toplusu.

Bu materialı təkmilləşdirmək üçün suallarınız və ya təklifləriniz varsa, mən həmişə rəyə açıram. Mənimlə əlaqə saxlaya bilərsiniz Twitter və ya Kubernetes Slack kanalı. Kustomize ilə manifestlərinizi dəyişdirərək əylənin!

Tərcüməçidən PS

Bloqumuzda da oxuyun:

Mənbə: www.habr.com

Добавить комментарий