A Perkenalan singket pikeun Kustomize

Catetan. narjamahkeun.: Artikel ieu ditulis ku témbal Lowe, insinyur jeung pangalaman éksténsif dina IT, nu panulis / ko-panulis tujuh buku dicitak (utamana on VMware vSphere). Anjeunna ayeuna damel pikeun anak perusahaan VMware Heptio (kaala dina 2016), khusus dina komputasi awan sareng Kubernetes. Téks sorangan janten bubuka anu singket sareng gampang kahartos pikeun manajemén konfigurasi pikeun Kubernetes nganggo téknologi. Sesuaikeun, nu nembe janten bagian tina K8s.

A Perkenalan singket pikeun Kustomize

Kustomize mangrupikeun alat anu ngamungkinkeun para pangguna "ngaropea file YAML anu saderhana, gratis template pikeun tujuan anu béda-béda, nyésakeun YAML asli gembleng sareng tiasa dianggo" (deskripsi anu diinjeum langsung ti kustomize Repository on GitHub). Kustomize tiasa dijalankeun langsung atanapi, sakumaha tina Kubernetes 1.14, dianggo kubectl -k pikeun ngaksés fungsionalitasna (sanaos ku Kubernetes 1.15, binér anu misah langkung énggal tibatan kamampuan anu diwangun ku kubectl). (Catetan. narjamahkeun.: Tur kalawan release panganyarna Kubernet 1.16 ngaropéa dirojong ku ogé dina utilitas kubeadm.) Dina tulisan ieu, abdi hoyong ngenalkeun pamiarsa kana dasar-dasar kustomize.

Dina bentuk/aplikasi pangbasajanna, kustomize ngan saukur kumpulan sumberdaya (file YAML nu nangtukeun objék Kubernetes: Deployments, Services, jeung sajabana) ditambah daptar parentah pikeun parobahan nu kudu dilakukeun kana eta sumberdaya. Sagampil make ngagunakeun set instruksi anu aya dina Makefile, sarta Docker ngawangun wadahna dumasar kana parentah ti Dockerfile,ngaropea kagunaan kustomization.yaml pikeun nyimpen parentah ngeunaan parobahan naon pamaké hayang nyieun ka susunan sumberdaya.

Ieu conto file kustomization.yaml:

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

Abdi moal nyobian ngobrol ngeunaan sagala widang mungkin dina file. kustomization.yaml (ieu ogé ditulis ngeunaan di dieu), tapi kuring bakal masihan katerangan ringkes ngeunaan conto khusus:

  • médan resources nunjukkeun naon (sumber daya) kustomize bakal robah. Dina hal ieu, éta bakal milarian sumber dina file deployment.yaml и service.yaml dina diréktori anjeun (anjeun tiasa netepkeun jalur lengkep atanapi relatif upami diperyogikeun).
  • médan namePrefix maréntahkeun kustomize pikeun nambahkeun awalan tangtu (dina hal ieu - dev-) pikeun atribut name sadaya sumberdaya didefinisikeun dina widang resources. Ku kituna, lamun deployment boga name kalawan harti nginx-deployment, ngaropéa bakal nyieun eta dev-nginx-deployment.
  • médan namespace maréntahkeun kustomize pikeun nambahkeun ngaranspasi husus ka sadaya sumberdaya. Dina hal ieu, Deployment and Service bakal digolongkeun kana namespace development.
  • Tungtungna, sawah commonLabels ngandung sakumpulan labél nu bakal ditambahkeun kana sagala sumberdaya. Dina conto urang, kustomize bakal napelkeun labél ka sumberdaya nu ngaranna environment jeung hartina development.

Lamun pamaké ngalakukeun kustomize build . dina diréktori sareng file kustomization.yaml sareng sumber daya anu diperyogikeun (nyaéta file deployment.yaml и service.yaml), teras dina kaluaran éta bakal nampi téks kalayan parobihan anu dijelaskeun dina kustomization.yaml.

A Perkenalan singket pikeun Kustomize
Catetan. narjamahkeun.: Ilustrasi tina dokuméntasi proyék ngeunaan "basajan" pamakéan kustomize

Kaluaran tiasa dialihkeun upami parobihan kedah dilakukeun:

kustomize build . > custom-config.yaml

Data kaluaran deterministik (data input anu sami bakal ngahasilkeun hasil kaluaran anu sami), janten anjeun henteu kedah nyimpen hasilna kana file. Gantina, éta tiasa dikirimkeun langsung ka paréntah anu sanés:

kustomize build . | kubectl apply -f -

Fitur kustomize ogé tiasa diaksés via kubectl -k (saprak Kubernetes versi 1.14). Nanging, émut yén pakét kustomize mandiri diénggalan langkung gancang tibatan pakét kubectl terpadu (sahenteuna ieu kasus sareng pelepasan Kubernetes 1.15).

Pamiarsa tiasa naroskeun: "Naha sadayana pajeulitna ieu upami anjeun tiasa ngédit file langsung?" Patarosan hébat. Dina conto urang, memang bisa ngaropéa file deployment.yaml и service.yaml langsung, tapi kumaha lamun aranjeunna garpu proyek batur? Ngarobah file langsung ngajadikeun hésé (lamun teu mungkin) rebase a garpu lamun parobahan dijieun kana asal / sumber. Ngagunakeun kustomize ngidinan Anjeun pikeun sentralize parobahan ieu dina file kustomization.yaml, ninggalkeun file aslina gembleng sahingga leuwih gampang pikeun rebase file aslina lamun perlu.

Mangpaat kustomize janten atra dina kasus pamakéan leuwih kompleks. Dina conto di luhur kustomization.yaml sareng sumberna aya dina diréktori anu sami. Nanging, kustomize ngadukung kasus panggunaan dimana aya konfigurasi dasar sareng seueur varian, ogé katelah overlays. Salaku conto, pangguna hoyong nyandak Deployment and Service pikeun nginx, anu kuring dianggo sabagé conto, sareng nyiptakeun pamekaran, pementasan, sareng versi produksi (atanapi varian) file éta. Jang ngalampahkeun ieu, anjeunna bakal butuh overlays luhur-disebutkeun na, kanyataanna, sumberdaya dasar sorangan.

Pikeun ngagambarkeun ideu overlay sareng sumber daya dasar (sumberdaya dasar), hayu urang nganggap yén diréktori ngagaduhan struktur ieu:

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

Dina file base/kustomization.yaml pamaké ngagunakeun widang resources ngan saukur nyatakeun sumber daya anu kedah dilebetkeun ku kustomize.

Dina unggal file overlays/{dev,staging,prod}/kustomization.yaml pamaké tingal konfigurasi dasar dina widang resources, lajeng nunjukkeun parobahan husus pikeun lingkungan dibikeun. Contona, file overlays/dev/kustomization.yaml sigana sapertos conto anu dipasihkeun sateuacana:

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

Dina hal ieu, file overlays/prod/kustomization.yaml bisa jadi sagemblengna béda:

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

Nalika pamaké ngajalankeun kustomize build . dina katalog overlays/dev, kustomize bakal ngahasilkeun pilihan ngembangkeun. Lamun lumpat kustomize build . dina katalog overlays/prod - anjeun meunang pilihan produksi. Sarta sakabeh ieu - tanpa nyieun parobahan mana wae kana aslina (dasar) file, sadayana dina cara déklaratif sareng deterministik. Anjeun tiasa ngalakukeun konfigurasi dasar sareng diréktori overlay langsung ka kontrol versi, terang yén dumasar kana file ieu anjeun tiasa ngahasilkeun deui konfigurasi anu dipikahoyong iraha waé.

A Perkenalan singket pikeun Kustomize
Catetan. narjamahkeun.: Ilustrasi tina dokuméntasi proyék dina ngagunakeun overlays di kustomize

Sesuaikeun tiasa langkung seueur leuwih ti naon katutupan dina artikel ieu. Nanging, kuring ngarepkeun éta janten perkenalan anu saé.

Sumberdaya tambahan

Aya seueur tulisan sareng publikasi anu saé ngeunaan kustomize. Ieu sababaraha anu kuring mendakan mangpaat pisan:

Catetan. narjamahkeun.: Anjeun oge bisa nyarankeun blok Tumbu diterbitkeun salaku sumberdaya dina situs wéb utiliti, dituturkeun ku kumpulan pidéo sareng laporan panganyarna ngeunaan kustomize.

Upami anjeun gaduh patarosan atanapi bongbolongan pikeun ningkatkeun bahan ieu, kuring sok kabuka pikeun eupan balik. Anjeun tiasa ngahubungan kuring di Twitter atawa Saluran Kubernetes Slack. Senang ngarobih manifes anjeun sareng kustomize!

PS ti penerjemah

Baca ogé dina blog urang:

sumber: www.habr.com

Tambahkeun komentar