Hè faciule è cunvene per preparà un cluster Kubernetes? L'annunziu di l'addon-operatore

Hè faciule è cunvene per preparà un cluster Kubernetes? L'annunziu di l'addon-operatore

Dopu shell-operatore avemu prisentatu u so fratellu maiò - addun-operatore. Questu hè un prughjettu Open Source chì hè utilizatu per installà cumpunenti di u sistema in un cluster Kubernetes, chì pò esse chjamatu add-ons.

Perchè alcune aghjunte in tuttu?

Ùn hè micca un sicretu chì Kubernetes ùn hè micca un pruduttu all-in-one ready-made, è per custruisce un cluster "adultu" avete bisognu di diverse aghjunte. Addon-operatore vi aiuterà à stallà, cunfigurà è mantene questi add-ons aghjurnati.

A necessità di cumpunenti supplementari in u cluster hè divulgata in raportu Culleghi driusha. In breve, a situazione cù Kubernetes in u mumentu hè cusì chì per una stallazione simplice di "play around" pudete passà cù i cumpunenti fora di a scatula, per i sviluppatori è e teste pudete aghjunghje Ingress, ma per una stallazione completa, nantu à quale. pudete dì "a vostra pruduzzione hè pronta", avete bisognu di aghjunghje cù una decina di add-ons differenti: qualcosa per u monitoraghju, qualcosa per logging, ùn vi scurdate di ingress è cert-manager, selezziunate gruppi di nodi, aghjunghje pulitiche di rete, stagione. cù i paràmetri di l'autoscaler sysctl è pod...

Hè faciule è cunvene per preparà un cluster Kubernetes? L'annunziu di l'addon-operatore

Chì sò i specifichi di travaglià cun elli?

Comu a pratica mostra, a materia ùn hè micca limitata à una installazione. Per travaglià cunfortu cù u cluster, add-ons deve esse aghjurnatu, disattivatu (sguassatu da u cluster), è vi vulete pruvà alcuni prima di installà in u cluster di produzzione.

Allora, forse Ansible serà abbastanza quì? Forse. Ma In generale, add-ons full-fledged ùn campanu micca senza paràmetri. Queste paràmetri ponu differisce secondu a variante di cluster (aws, gce, azure, bare-metal, do, ...). Certi paràmetri ùn ponu esse specificati in anticipu; devenu esse acquistati da u cluster. È u cluster ùn hè micca staticu: per certi paràmetri avete da monitorà i cambiamenti. E quì Ansible hè digià mancante: avete bisognu di un prugramma chì vive in un cluster, i.e. Operatore Kubernetes.

Quelli chì anu pruvatu à u travagliu shell-operatore, diceranu chì i travaglii di installà è aghjurnà add-ons è paràmetri di monitoraghju ponu esse risolti cumplettamente usendu ganci per l'operatore di shell. Pudete scrive un script chì farà una cundizione kubectl apply è monitorà, per esempiu, ConfigMap, induve i paràmetri seranu guardati. Questu hè circa ciò chì hè implementatu in addon-operator.

Cumu hè questu urganizatu in addon-operatore?

Quandu creanu una nova suluzione, avemu principiatu da i seguenti principii:

  • L'installatore add-on deve supportà cunfigurazione di mudellu è dichjarazione. Ùn facemu micca script magichi chì installanu add-ons. Addon-operatore usa Helm per installà addons. Per installà, avete bisognu di creà un graficu è selezziunate i valori chì seranu utilizati per a cunfigurazione.
  • Settings pò esse generà nantu à a stallazione, ponu vene da u cluster, o riceve l'aghjurnamenti, surviglianza di e risorse di cluster. Queste operazioni ponu esse implementate cù ganci.
  • Settings pò esse almacenà in un cluster. Per almacenà i paràmetri in u cluster, un ConfigMap/addon-operatore hè creatu è l'Addon-operatore monitoreghja i cambiamenti à questu ConfigMap. Addon-operatore dà accessu à i ganci à i paràmetri utilizendu cunvenzioni simplici.
  • L'aggiunta dipende da i paràmetri. Se i paràmetri sò cambiati, allora l'Addon-operatore rolls out the Helm chart with new values. Avemu chjamatu a cumminazzioni di u graficu Helm, i valori per ellu è i ganci di un modulu (vede sottu per più dettagli).
  • Mise en scène. Ùn ci hè micca script di liberazione magica. U mecanismu di l'aghjurnamentu hè simile à una applicazione regulare - cullate add-ons è add-operatori in una maghjina, tagghjalli è stende.
  • U cuntrollu di u risultatu. Addon-operatore pò furnisce metriche per Prometheus.

Cosa hè u padding in add-operatore?

Un aghjuntu pò esse cunsideratu qualcosa chì aghjunghje novi funzioni à u cluster. Per esempiu, installà Ingress hè un grande esempiu di add-on. Questu pò esse qualsiasi operatore o controller cù u so propiu CRD: prometheus-operator, cert-manager, kube-controller-manager, etc. O qualcosa chjuca, ma più faciule d'utilizà - per esempiu, copiatrice secreta, chì copia i secreti di u registru à novi spazii di nomi, o sysctl tuner, chì cunfigura i paràmetri sysctl in novi nodi.

Per implementà add-ons, Addon-operatore furnisce parechji cuncetti:

  • Graficu di Helm utilizatu per installà diversi software in u cluster - per esempiu, Prometheus, Grafana, nginx-ingress. Se u cumpunente necessariu hà un graficu Helm, allora a stallazione cù Addon-operatore serà assai simplice.
  • U almacenamentu di i valori. I grafici di Helm sò generalmente parechji paràmetri diffirenti chì ponu cambià cù u tempu. Addon-operatore supporta l'almacenamiento di sti paràmetri è ponu monitorà i so cambiamenti per reinstallà u graficu Helm cù novi valori.
  • Ganci sò schedarii eseguibili chì l'Addon-operatore corre nantu à l'avvenimenti è chì accede à u magazinu di valori. U ganciu pò monitorà i cambiamenti in u cluster è aghjurnà i valori in a tenda di valori. Quelli. Aduprendu ganci, pudete fà scuperta per cullà i valori da u cluster à l'iniziu o secondu un calendariu, o pudete fà scuperta cuntinua, cullendu valori da u cluster basatu annantu à i cambiamenti in u cluster.
  • Modulu hè una cumminazione di un graficu Helm, una tenda di valori è ganci. I moduli ponu esse attivati ​​o disattivati. Disattivà un modulu significa sguassà tutte e versioni di i grafici Helm. I moduli ponu attivà dinamicamente, per esempiu, se tutti i moduli chì necessitanu sò attivati ​​o se a scuperta hà trovu i paràmetri necessarii in i ganci - questu hè fattu cù un script abilitatu ausiliariu.
  • Ganci globali. Quessi sò ganci "per sè stessu", ùn sò micca inclusi in moduli è anu accessu à una tenda di valori globale, i cui valori sò dispunibuli per tutti i ganci in moduli.

Cume sti parti travaglianu inseme? Fighjemu a stampa da a documentazione:

Hè faciule è cunvene per preparà un cluster Kubernetes? L'annunziu di l'addon-operatore

Ci sò dui scenarii di travagliu:

  1. U ganciu globale hè attivatu da un avvenimentu - per esempiu, quandu una risorsa in u cluster cambia. Stu ganciu processa i cambiamenti è scrive i novi valori in a tenda di valori globale. Addon-operatore nota chì l'almacenamiento globale hà cambiatu è principia tutti i moduli. Ogni modulu, utilizendu i so ganci, determina se deve esse attivatu è aghjurnà u so magazzinu di valori. Se u modulu hè attivatu, l'Addon-operatore principia a stallazione di a carta Helm. In questu casu, u graficu Helm hà accessu à i valori da l'almacenamiento di u modulu è da u almacenamiento globale.
  2. U sicondu scenariu hè più simplice: un ganciu di modulu hè attivatu da un avvenimentu è cambia i valori in a tenda di valori di u modulu. Addon-operatore nota questu è lancia u graficu Helm cù valori aghjurnati.

L'aghjuntu pò esse implementatu cum'è un unicu ganciu, o cum'è un graficu Helm, o ancu cum'è parechji moduli dipendenti - questu dipende da a cumplessità di u cumpunente installatu in u cluster è da u livellu desideratu di flessibilità di cunfigurazione. Per esempiu, in u repository (/esempii) ci hè un add-on sysctl-tuner, chì hè implementatu sia cum'è un modulu simplice cù un ganciu è un graficu Helm, è utilizendu a tenda di valori, chì permette di aghjunghje paràmetri editendu ConfigMap.

Consegna di l'aghjurnamenti

Uni pochi parolle nantu à l'urganizazione di l'aghjurnamenti di cumpunenti chì l'Addon-operatore installate.

Per eseguisce Addon-operator in un cluster, avete bisognu custruì una maghjina cù aghjunte in a forma di hook and Helm chart files, aghjunghje un schedariu binariu addon-operator è tuttu ciò chì avete bisognu per i ganci: bash, kubectl, jq, python ecc. Allora sta maghjina pò esse rializatu in u cluster cum'è una applicazione regulare, è più prubabilmente vulete urganizà unu o un altru schema di tagging. Se ci sò pochi clusters, u listessu approcciu cum'è cù l'applicazioni pò esse adattatu: nova versione, nova versione, passa per tutti i clusters è corregge l'imaghjini di i Pods. In ogni casu, in u casu di un rollout à un numeru significativu di clusters, u cuncettu di auto-aggiornamentu da un canale era più adattatu per noi.

Eccu cumu facemu:

  • Un canale hè essenzialmente un identificatore chì pò esse stabilitu à qualcosa (per esempiu, dev/stage/ea/stable).
  • U nome di u canali hè u tag di l'imaghjini. Quandu avete bisognu di mette l'aghjurnamenti à un canale, una nova maghjina hè assemblata è marcata cù u nome di u canali.
  • Quandu una nova maghjina appare in u registru, Addon-operatore hè riavviatu è lanciatu cù a nova maghjina.

Questa ùn hè micca una bona pratica, cum'è scrittu in Documentazione Kubernetes. Ùn hè micca cunsigliatu per fà questu, ma parlemu una applicazione regulare chì vive in u stessu cluster. In u casu di Addon-operatore, una applicazione hè assai di Deployments spargugliati in clusters, è l'auto-aghjurnamentu aiuta assai è rende a vita più faciule.

I canali aiutanu è in prova: se ci hè un cluster ausiliariu, pudete cunfigurà à u canali stage è aghjurnate l'aghjurnamenti in questu prima di sparghje à i canali ea и stable. Sè cun un cluster in u canali ea un errore hè accadutu, pudete cambià à stable, mentri u prublema cù stu cluster hè investigatu. Se u cluster hè eliminatu da u supportu attivu, cambia à u so canale "congelatu" - per esempiu, freeze-2019-03-20.

In più di aghjurnà i ganci è i charts Helm, pudete avè bisognu aghjurnamentu è cumpunente di terzu partitu. Per esempiu, avete nutatu un bug in u node-esportatore cundizionale è ancu capitu cumu per patch it. In seguitu, avete apertu u PR è aspettate chì a nova liberazione passa per tutti i clusters è cresce a versione di l'imaghjini. Per ùn aspittà indefinitu, pudete custruisce u vostru node-exporter è cambià à ellu prima di accettà u PR.

In generale, questu pò esse fattu senza Addon-operatore, ma cù Addon-operatore u modulu per installà node-exporter serà visibile in un repository, u Dockerfile per custruisce a vostra maghjina pò esse guardatu quì, diventa più faciule per tutti i participanti in u prucessu per capisce ciò chì succede ... È s'ellu ci sò parechji clusters, allora diventa più faciule per pruvà u vostru PR è sbulicà una nova versione!

Questa urganizazione di l'aghjurnamentu di cumpunenti funziona bè per noi, ma qualsiasi altru schema adattatu pò esse implementatu - dopu tuttu in stu casu Addon-operatore hè un schedariu binariu simplice.

cunchiusioni

I principii implementati in Addon-operatore permettenu di custruisce un prucessu trasparente per creà, pruvà, installà è aghjurnà add-ons in un cluster, simili à i prucessi di sviluppu di l'applicazioni regulare.

Add-ons per Addon-operatore in formatu di modulu (Helm chart + hooks) ponu esse dispunibuli publicamente. Avemu, a cumpagnia Flant, prughjettanu di pubblicà i nostri sviluppi in a forma di tali aghjunte durante l'estiu. Unisciti à u sviluppu nantu à GitHub (shell-operatore, addun-operatore), pruvate à fà u vostru propiu aghjuntu basatu nantu esempi и ducumentazione, aspittà nutizie nant'à Habré è nant'à i nostri canale YouTube!

PS

Leghjite puru nant'à u nostru blog:

Source: www.habr.com

Add a comment