Sayon ug sayon ​​ba ang pag-andam sa usa ka Kubernetes cluster? Gipahibalo ang addon-operator

Sayon ug sayon ​​ba ang pag-andam sa usa ka Kubernetes cluster? Gipahibalo ang addon-operator

Pagkahuman shell-operator Gipresentar namo ang iyang magulang nga lalaki - addon-operator. Kini usa ka Open Source nga proyekto nga gigamit sa pag-install sa mga sangkap sa sistema sa usa ka Kubernetes cluster, nga matawag nga mga add-on.

Ngano nga bisan unsang mga pagdugang?

Dili kini sekreto nga ang Kubernetes dili usa ka andam nga gihimo nga tanan-sa-usa nga produkto, ug aron magtukod usa ka "hamtong" nga kumpol kinahanglan nimo ang lainlaing mga pagdugang. Ang Addon-operator motabang kanimo sa pag-instalar, pag-configure ug pagpabilin niining mga add-on nga labing bag-o.

Ang panginahanglan alang sa dugang nga mga sangkap sa cluster gibutyag sa pagtaho Mga kauban driusha. Sa laktud, ang sitwasyon sa Kubernetes sa pagkakaron mao nga alang sa usa ka yano nga "pagdula sa palibot" nga pag-instalar mahimo nimong makuha uban ang mga sangkap gikan sa kahon, alang sa mga developers ug pagsulay mahimo nimong idugang ang Ingress, apan alang sa usa ka bug-os nga pag-instalar, mahitungod niini mahimo nimong isulti nga "andam na ang imong produksiyon", kinahanglan nimo nga idugang ang usa ka dosena nga lainlaing mga add-on: usa ka butang alang sa pag-monitor, usa ka butang alang sa pag-log, ayaw kalimti ang ingress ug cert-manager, pagpili mga grupo sa mga node, pagdugang mga palisiya sa network, panahon uban ang sysctl ug pod nga mga setting sa autoscaler...

Sayon ug sayon ​​ba ang pag-andam sa usa ka Kubernetes cluster? Gipahibalo ang addon-operator

Unsa ang mga detalye sa pagtrabaho uban kanila?

Ingon sa gipakita sa praktis, ang butang dili limitado sa usa ka pag-install. Aron komportable nga magtrabaho sa cluster, ang mga add-on kinahanglan nga i-update, disable (gitangtang gikan sa cluster), ug gusto nimo nga sulayan ang pipila sa dili pa kini i-install sa production cluster.

Busa, tingali ang Ansible igo na dinhi? Tingali. Apan Sa kinatibuk-an, ang hingpit nga mga add-on dili mabuhi kung wala ang mga setting. Kini nga mga setting mahimong magkalainlain depende sa variant sa cluster (aws, gce, azure, bare-metal, do, ...). Ang ubang mga setting dili matino nga daan; kini kinahanglan nga makuha gikan sa cluster. Ug ang cluster dili static: alang sa pipila ka mga setting kinahanglan nimo nga bantayan ang mga pagbag-o. Ug dinhi nawala na ang Ansible: kinahanglan nimo ang usa ka programa nga nagpuyo sa usa ka cluster, i.e. Kubernetes Operator.

Kadtong misulay niini sa trabaho shell-operator, moingon sila nga ang mga buluhaton sa pag-instalar ug pag-update sa mga add-on ug mga setting sa pag-monitor mahimong hingpit nga masulbad gamit ang mga kaw-it alang sa shell-operator. Mahimo kang magsulat og script nga magbuhat og conditional kubectl apply ug monitor, pananglitan, ConfigMap, diin ang mga setting itago. Kini ang gibana-bana nga gipatuman sa addon-operator.

Giunsa kini pag-organisar sa addon-operator?

Sa paghimo og bag-ong solusyon, mipadayon kami sa mosunod nga mga prinsipyo:

  • Ang add-on installer kinahanglang mosuporta template ug declarative configuration. Wala kami maghimo mga magic script nga nag-install sa mga add-on. Ang Addon-operator naggamit sa Helm aron i-install ang mga addon. Aron ma-install, kinahanglan nimo nga maghimo usa ka tsart ug pilia ang mga kantidad nga gamiton alang sa pag-configure.
  • Ang mga setting mahimong paghimo sa pag-instalar, mahimo nila pagkuha gikan sa cluster, o makadawat og mga update, pagmonitor sa mga kapanguhaan sa cluster. Kini nga mga operasyon mahimong ipatuman gamit ang mga kaw-it.
  • Ang mga setting mahimong tindahan sa usa ka cluster. Aron matipigan ang mga setting sa cluster, usa ka ConfigMap/addon-operator ang gihimo ug ang Addon-operator nag-monitor sa mga pagbag-o niini nga ConfigMap. Ang Addon-operator naghatag sa mga kaw-it og access sa mga setting gamit ang yano nga mga kombensiyon.
  • Ang pagdugang nagdepende sa mga setting. Kung nabag-o ang mga setting, ang Addon-operator mag-roll out sa Helm chart nga adunay bag-ong mga kantidad. Gitawag namon ang kombinasyon sa tsart sa Helm, mga kantidad alang niini ug mga kaw-it nga usa ka module (tan-awa sa ubos alang sa dugang nga mga detalye).
  • Pagpahigayon. Walay magic release scripts. Ang mekanismo sa pag-update parehas sa usa ka regular nga aplikasyon - pagkolekta mga add-on ug addon-operator sa usa ka imahe, i-tag kini ug i-roll kini.
  • Pagkontrol sa resulta. Ang Addon-operator makahatag ug metrics para sa Prometheus.

Unsa ang padding sa addon-operator?

Ang usa ka pagdugang mahimong isipon nga bisan unsa nga makadugang bag-ong mga gimbuhaton sa cluster. Pananglitan, ang pag-instalar sa Ingress usa ka maayong pananglitan sa usa ka add-on. Mahimo kini nga bisan unsang operator o controller nga adunay kaugalingon nga CRD: prometheus-operator, cert-manager, kube-controller-manager, etc. O usa ka butang nga gamay, apan dali gamiton - pananglitan, sekreto nga copier, nga nagkopya sa mga sekreto sa rehistro sa bag-ong mga namespace, o sysctl tuner, nga nag-configure sa mga parameter sa sysctl sa bag-ong mga node.

Aron ipatuman ang mga add-on, ang Addon-operator naghatag daghang mga konsepto:

  • Helm nga tsart gigamit sa pag-install sa lainlaing software sa cluster - pananglitan, Prometheus, Grafana, nginx-ingress. Kung ang gikinahanglan nga sangkap adunay tsart sa Helm, nan ang pag-instalar niini gamit ang Addon-operator mahimong yano ra kaayo.
  • Pagtipig sa mga kantidad. Ang mga tsart sa helm kasagaran adunay daghang lain-laing mga setting nga mahimong mausab sa paglabay sa panahon. Gisuportahan sa Addon-operator ang pagtipig niini nga mga setting ug mahimong mamonitor ang ilang mga pagbag-o aron ma-install pag-usab ang Helm chart nga adunay bag-ong mga kantidad.
  • Mga kaw-it mao ang mga executable nga mga file nga gipadagan sa Addon-operator sa mga panghitabo ug nga nag-access sa mga kantidad nga tindahan. Ang kaw-it mahimong magmonitor sa mga pagbag-o sa cluster ug i-update ang mga kantidad sa tindahan sa mga kantidad. Mga. Gamit ang mga kaw-it, mahimo nimong madiskobrehan ang pagkolekta sa mga kantidad gikan sa cluster sa pagsugod o sumala sa usa ka iskedyul, o mahimo nimo ang padayon nga pagdiskobre, pagkolekta mga kantidad gikan sa cluster base sa mga pagbag-o sa cluster.
  • Modyul maoy kombinasyon sa Helm chart, value store ug hook. Ang mga module mahimong ma-enable o ma-disable. Ang pag-disable sa module nagpasabot sa pagtangtang sa tanang gipagawas nga Helm chart. Ang mga modulo makahimo sa ilang kaugalingon nga dinamikong, pananglitan, kung ang tanan nga mga module nga gikinahanglan niini gipagana o kung ang pagkadiskobre nakakaplag sa gikinahanglan nga mga parameter sa mga kaw-it - kini gihimo gamit ang usa ka auxiliary enabled script.
  • Tibuok kalibutan nga mga kaw-it. Kini mga kaw-it "sa ilang kaugalingon", wala kini gilakip sa mga module ug adunay access sa usa ka global nga tindahan sa mga kantidad, ang mga kantidad nga magamit sa tanan nga mga kaw-it sa mga module.

Sa unsang paagi kini nga mga bahin nagtinabangay? Atong tan-awon ang hulagway gikan sa dokumentasyon:

Sayon ug sayon ​​ba ang pag-andam sa usa ka Kubernetes cluster? Gipahibalo ang addon-operator

Adunay duha ka senaryo sa trabaho:

  1. Ang global hook na-trigger sa usa ka panghitabo - pananglitan, kung ang usa ka kapanguhaan sa cluster mausab. Giproseso niini nga kaw-it ang mga pagbag-o ug gisulat ang bag-ong mga kantidad sa tindahan sa mga kantidad sa kalibutan. Ang Addon-operator nakamatikod nga ang global storage nausab ug nagsugod sa tanang modules. Ang matag module, gamit ang mga kaw-it niini, nagtino kung kinahanglan ba kini nga ma-enable ug i-update ang tindahan sa mga kantidad niini. Kung ang module gipagana, ang Addon-operator magsugod sa pag-instalar sa Helm chart. Sa kini nga kaso, ang tsart sa Helm adunay access sa mga kantidad gikan sa pagtipig sa module ug gikan sa pagtipig sa kalibutan.
  2. Ang ikaduha nga senaryo mas simple: ang usa ka module hook na-trigger sa usa ka panghitabo ug nagbag-o sa mga kantidad sa tindahan sa mga kantidad sa module. Ang Addon-operator nakamatikod niini ug naglansad sa Helm chart nga adunay updated nga mga bili.

Ang pagdugang mahimong ipatuman ingon usa ka kaw-it, o ingon usa ka tsart sa Helm, o bisan ingon sa daghang nagsalig nga mga module - kini nagdepende sa pagkakomplikado sa sangkap nga gi-install sa cluster ug sa gitinguha nga lebel sa pagka-flexible sa pag-configure. Pananglitan, sa repository (/mga pananglitan) adunay usa ka add-on sa sysctl-tuner, nga gipatuman ingon usa ka yano nga module nga adunay usa ka kaw-it ug usa ka tsart sa Helm, ug gamit ang tindahan sa mga kantidad, nga nagpaposible sa pagdugang mga setting pinaagi sa pag-edit sa ConfigMap.

Paghatud sa mga update

Pipila ka mga pulong bahin sa pag-organisar sa mga update sa sangkap nga gi-install sa Addon-operator.

Aron makadagan ang Addon-operator sa usa ka cluster, kinahanglan nimo paghimo usa ka imahe nga adunay mga pagdugang sa porma sa hook ug Helm chart files, pagdugang ug binary file addon-operator ug ang tanan nga imong gikinahanglan alang sa mga kaw-it: bash, kubectl, jq, python ug uban pa. Dayon kini nga hulagway mahimong i-roll out ngadto sa cluster isip usa ka regular nga aplikasyon, ug lagmit gusto nimo nga mag-organisar og usa o lain nga pamaagi sa pag-tag. Kung adunay pipila ka mga pungpong, ang parehas nga pamaagi sama sa mga aplikasyon mahimong angay: bag-ong pagpagawas, bag-ong bersyon, pag-agi sa tanan nga mga pungpong ug tul-iron ang imahe sa mga Pod. Apan, sa kaso sa usa ka rollout ngadto sa usa ka mahinungdanon nga gidaghanon sa mga clusters, ang konsepto sa kaugalingon nga pag-update gikan sa usa ka channel mas angay alang kanamo.

Ania kung giunsa namo kini buhaton:

  • Ang usa ka channel usa ka identifier nga mahimong itakda sa bisan unsang butang (pananglitan, dev/stage/ea/stable).
  • Ang ngalan sa channel mao ang tag sa imahe. Kung kinahanglan nimo nga i-roll out ang mga update sa usa ka channel, usa ka bag-ong imahe ang gitigum ug gi-tag sa ngalan sa channel.
  • Kung adunay usa ka bag-ong imahe nga makita sa rehistro, ang Addon-operator gi-restart ug gilunsad uban ang bag-ong imahe.

Dili kini ang labing kaayo nga praktis, ingon sa nahisulat sa Dokumentasyon sa Kubernetes. Dili girekomenda nga buhaton kini, apan among gihisgutan usa ka regular nga aplikasyon nga nagpuyo sa parehas nga cluster. Sa kaso sa Addon-operator, ang usa ka aplikasyon mao ang daghang mga Deployment nga nagkatag sa mga pungpong, ug ang pag-update sa kaugalingon nakatabang ug dako ug nagpadali sa kinabuhi.

Ang mga channel makatabang ug sa pagsulay: kung adunay usa ka auxiliary cluster, mahimo nimo kini i-configure sa channel stage ug i-roll ang mga update niini sa dili pa kini i-roll sa mga channel ea и stable. Kung adunay usa ka cluster sa channel ea usa ka sayup ang nahitabo, mahimo nimo kini ibalhin stable, samtang ang problema sa kini nga cluster giimbestigahan. Kung ang cluster gikuha gikan sa aktibong suporta, kini mobalhin sa "frozen" nga channel - pananglitan, freeze-2019-03-20.

Dugang sa pag-update sa mga kaw-it ug mga tsart sa Helm, mahimo nimo kinahanglan update ug third party component. Pananglitan, namatikdan nimo ang usa ka bug sa conditional node-exporter ug nahibal-an kung giunsa kini pag-patch. Sunod, giablihan nimo ang PR ug naghulat sa bag-ong pagpagawas nga moagi sa tanan nga mga pungpong ug dugangan ang bersyon sa imahe. Aron dili maghulat nga walay katapusan, mahimo nimong tukuron ang imong node-exporter ug ibalhin kini sa dili pa dawaton ang PR.

Sa kinatibuk-an, mahimo kini nga wala ang Addon-operator, apan sa Addon-operator ang module alang sa pag-install sa node-exporter makita sa usa ka repository, ang Dockerfile alang sa pagtukod sa imong imahe mahimong tipigan didto mismo, kini mahimong mas sayon ​​alang sa tanan nga mga partisipante sa ang proseso aron masabtan kung unsa ang mahitabo ... Ug kung adunay daghang mga pungpong, nan kini mahimong mas sayon ​​sa pagsulay sa imong PR ug pag-roll out sa usa ka bag-ong bersyon!

Kini nga organisasyon sa pag-update sa sangkap malampuson nga nagtrabaho alang kanamo, apan ang bisan unsang uban nga angay nga laraw mahimong ipatuman - pagkahuman sa tanan sa kini nga kaso ang Addon-operator usa ka yano nga binary file.

konklusyon

Ang mga prinsipyo nga gipatuman sa Addon-operator nagtugot kanimo sa pagtukod og usa ka transparent nga proseso alang sa paghimo, pagsulay, pag-instalar ug pag-update sa mga add-on sa usa ka cluster, susama sa mga proseso sa pagpalambo sa regular nga mga aplikasyon.

Ang mga add-on para sa Addon-operator sa module format (Helm chart + hooks) mahimong magamit sa publiko. Kami, ang kompanya sa Flant, nagplano nga imantala ang among mga kalamboan sa porma sa ingon nga mga pagdugang sa panahon sa ting-init. Apil sa pagpalambo sa GitHub (shell-operator, addon-operator), sulayi paghimo ang imong kaugalingon nga pagdugang base sa mga pananglitan и dokumentasyon, hulata ang balita sa Habré ug sa among channel sa YouTube!

PS

Basaha usab sa among blog:

Source: www.habr.com

Idugang sa usa ka comment