A Brief Pambuka kanggo Kustomize

Cathetan. nerjemahake.: Artikel iki ditulis dening Scott Lowe, insinyur karo pengalaman ekstensif ing IT, sing penulis / co-penulis pitu buku dicithak (utamané ing VMware vSphere). Dheweke saiki kerja kanggo anak perusahaan VMware Heptio (dituku ing taun 2016), khusus ing komputasi awan lan Kubernetes. Teks kasebut minangka introduksi sing ringkes lan gampang dimangerteni babagan manajemen konfigurasi kanggo Kubernetes nggunakake teknologi. Ngatur, sing bubar dadi bagéan saka K8s.

A Brief Pambuka kanggo Kustomize

Kustomize minangka alat sing ngidini pangguna "ngatur file YAML sing prasaja, tanpa cithakan kanggo macem-macem tujuan, supaya YAML asli tetep utuh lan bisa digunakake" (deskripsi sing dipinjam langsung saka kustomize repositori ing GitHub). Kustomize bisa mbukak langsung utawa, minangka Kubernetes 1.14, digunakake kubectl -k kanggo ngakses fungsine (sanajan ing Kubernetes 1.15, binar kapisah luwih anyar tinimbang kemampuan sing dibangun ing kubectl). (Cathetan. nerjemahake.: Lan karo release anyar Kubernetes 1.16 ngatur didhukung dening uga ing utilitas kubeadm.) Ing kirim iki, aku pengin ngenalake para pembaca babagan dhasar kustomize.

Ing wangun/aplikasi sing paling gampang, kustomize mung minangka kumpulan sumber daya (file YAML sing nemtokake obyek Kubernetes: Deployment, Layanan, lsp.) plus dhaptar instruksi kanggo owah-owahan sing kudu ditindakake kanggo sumber daya kasebut. Kaya nggunakake set instruksi sing ana ing Makefile, lan Docker mbangun wadhah adhedhasar instruksi saka Dockerfile, ngatur panggunaan kustomization.yaml kanggo nyimpen instruksi babagan owah-owahan sing dikarepake pangguna menyang sakumpulan sumber daya.

Punika conto file kustomization.yaml:

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

Aku ora bakal nyoba kanggo pirembagan bab kabeh kolom bisa ing file. kustomization.yaml (iki ditulis kanthi apik kene), nanging aku bakal menehi panjelasan ringkes babagan conto tartamtu:

  • lapangan resources nuduhake apa (sumber daya) kustomize bakal ngganti. Ing kasus iki, bakal nggoleki sumber daya ing file deployment.yaml и service.yaml ing direktori sampeyan (sampeyan bisa nemtokake path lengkap utawa relatif yen perlu).
  • lapangan namePrefix prentah kustomize kanggo nambah ater-ater tartamtu (ing kasus iki - dev-) kanggo atribut name kabeh sumber daya ditetepake ing lapangan resources. Mangkono, yen Panyebaran wis name kanthi teges nginx-deployment, ngatur bakal nggawe dev-nginx-deployment.
  • lapangan namespace prentah kustomize kanggo nambah namespace diwenehi kanggo kabeh sumber daya. Ing kasus iki, Deployment lan Service bakal tiba ing namespace development.
  • Akhire, lapangan commonLabels ngemot sakumpulan label sing bakal ditambahake menyang kabeh sumber daya. Ing conto kita, kustomize bakal menehi label menyang sumber daya kanthi jeneng kasebut environment lan makna development.

Yen pangguna nindakake kustomize build . ing direktori karo file kustomization.yaml lan sumber daya sing dibutuhake (yaiku file deployment.yaml и service.yaml), banjur ing output bakal nampa teks kanthi owah-owahan kasebut ing kustomization.yaml.

A Brief Pambuka kanggo Kustomize
Cathetan. nerjemahake.: Ilustrasi saka dokumentasi proyek babagan panggunaan kustomize "prasaja".

Output bisa dialihake yen owah-owahan kudu ditindakake:

kustomize build . > custom-config.yaml

Data output iku deterministik (data input sing padha bakal ngasilake asil output sing padha), dadi sampeyan ora kudu nyimpen asil menyang file. Nanging, bisa langsung dikirim menyang printah liyane:

kustomize build . | kubectl apply -f -

Fitur kustomize uga bisa diakses liwat kubectl -k (wiwit Kubernetes versi 1.14). Nanging, elinga manawa paket kustomize mandiri dianyari luwih cepet tinimbang paket kubectl terintegrasi (paling ora kaya sing ana ing release Kubernetes 1.15).

Pembaca bisa uga takon: "Napa kabeh kerumitan iki yen sampeyan bisa ngowahi file langsung?" Pitakonan gedhe. Ing conto kita, tenan bisa ngowahi file deployment.yaml и service.yaml langsung, nanging apa yen lagi garpu saka project wong liya? Ngganti file langsung nggawe angel (yen ora mokal) kanggo rebase garpu nalika owah-owahan digawe kanggo asal / sumber. Nggunakake kustomize ngijini sampeyan kanggo sentralisasi owah-owahan ing file kustomization.yaml, ninggalake file asli utuh lan kanthi mangkono nggawe luwih gampang kanggo rebase file asli yen perlu.

Keuntungan saka kustomize dadi katon ing kasus panggunaan sing luwih rumit. Ing conto ing ndhuwur kustomization.yaml lan sumber daya ana ing direktori sing padha. Nanging, kustomize ndhukung kasus panggunaan sing ana konfigurasi dhasar lan akeh varian, uga dikenal minangka overlay. Contone, pangguna pengin njupuk Deployment and Service kanggo nginx, sing digunakake minangka conto, lan nggawe versi pangembangan, pementasan lan produksi (utawa varian) file kasebut. Kanggo nindakake iki, dheweke butuh overlay sing kasebut ing ndhuwur lan, nyatane, sumber daya dhasar dhewe.

Kanggo nggambarake ide overlay lan sumber daya dhasar (sumber daya), ayo nganggep yen direktori duwe struktur ing ngisor iki:

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

Ing file base/kustomization.yaml pangguna nggunakake lapangan resources mung ngumumake sumber daya sing kudu kalebu kustomize.

Ing saben file overlays/{dev,staging,prod}/kustomization.yaml pangguna deleng konfigurasi dhasar ing lapangan resources, banjur nuduhake owah-owahan tartamtu kanggo lingkungan diwenehi. Contone, file overlays/dev/kustomization.yaml bisa uga katon kaya conto sadurunge:

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

Ing kasus iki, file overlays/prod/kustomization.yaml bisa dadi beda banget:

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

Nalika pangguna mlaku kustomize build . ing katalog overlays/dev, kustomize bakal ngasilake pilihan pangembangan. Yen sampeyan mlayu kustomize build . ing katalog overlays/prod - sampeyan entuk pilihan produksi. Lan kabeh iki - tanpa nggawe owah-owahan menyang asline (dasar) file, kabeh kanthi cara deklaratif lan deterministik. Sampeyan bisa nindakake konfigurasi dhasar lan direktori overlay langsung menyang kontrol versi, ngerti yen adhedhasar file kasebut sampeyan bisa ngasilake konfigurasi sing dikarepake kapan wae.

A Brief Pambuka kanggo Kustomize
Cathetan. nerjemahake.: Ilustrasi saka dokumentasi proyek babagan nggunakake overlay ing kustomize

Kustomisasi bisa akeh luwih akeh tinimbang sing dibahas ing artikel iki. Nanging, muga-muga bisa dadi pambuka sing apik.

Sumber Daya Tambahan

Ana akeh artikel lan publikasi sing apik babagan kustomize. Ing ngisor iki sawetara sing ditemokake utamane migunani:

Cathetan. nerjemahake.: Sampeyan uga bisa menehi rekomendasi pemblokiran pranala diterbitake minangka Resources ing situs web utilitas, diikuti karo koleksi video kanthi laporan paling anyar babagan kustomize.

Yen sampeyan duwe pitakonan utawa saran kanggo nambah materi iki, aku tansah mbukak kanggo saran. Sampeyan bisa hubungi kula ing Twitter utawa ing Saluran Kubernetes Slack. Seneng-seneng ngowahi manifests karo kustomize!

PS saka penerjemah

Waca uga ing blog kita:

Source: www.habr.com

Add a comment