Puas yog nws yooj yim thiab yooj yim los npaj Kubernetes pawg? Tshaj tawm addon-operator

Puas yog nws yooj yim thiab yooj yim los npaj Kubernetes pawg? Tshaj tawm addon-operator

Tom qab shell-operator peb nthuav nws tus tij laug - addon-operator. Qhov no yog qhov Open Source project uas yog siv los txhim kho cov txheej txheem rau hauv Kubernetes pawg, uas tuaj yeem hu ua add-ons.

Vim li cas thiaj muaj qhov ntxiv?

Nws tsis pub leejtwg paub tias Kubernetes tsis yog ib qho khoom npaj txhij txhua, thiab tsim kom muaj pawg "neeg laus" koj yuav xav tau ntau yam ntxiv. Addon-operator yuav pab koj nruab, teeb tsa thiab khaws cov add-ons mus txog hnub tim.

Qhov xav tau rau cov khoom ntxiv hauv pawg tau nthuav tawm hauv qhia Cov npoj yaos driusha. Hauv luv luv, qhov xwm txheej nrog Kubernetes tam sim no yog qhov uas yooj yim "ua si ncig" kev teeb tsa koj tuaj yeem tau txais los ntawm cov khoom tawm ntawm lub thawv, rau cov neeg tsim khoom thiab kev sim koj tuaj yeem ntxiv Ingress, tab sis rau kev teeb tsa tag nrho, txog qhov twg. koj tuaj yeem hais tias "koj cov khoom tau npaj lawm", koj yuav tsum tau ntxiv nrog ntau lub kaum sib txawv add-ons: ib yam dab tsi rau kev saib xyuas, ib yam dab tsi rau kev txiav, tsis txhob hnov ​​​​qab ingress thiab cert-manager, xaiv pawg ntawm cov nodes, ntxiv cov cai hauv network, lub caij. nrog sysctl thiab pod autoscaler nqis ...

Puas yog nws yooj yim thiab yooj yim los npaj Kubernetes pawg? Tshaj tawm addon-operator

Dab tsi yog qhov tshwj xeeb ntawm kev ua haujlwm nrog lawv?

Raws li kev xyaum qhia, qhov teeb meem tsis txwv rau ib qho kev teeb tsa. Txhawm rau ua haujlwm yooj yim nrog pawg, cov add-ons yuav tsum tau hloov kho tshiab, xiam oob qhab (tshem tawm ntawm pawg), thiab koj yuav xav sim qee yam ua ntej txhim kho lawv hauv pawg tsim khoom.

Yog li, tej zaum Ansible yuav txaus ntawm no? Tej zaum. Tab sis Feem ntau, tag nrho-fledged add-ons tsis nyob yam tsis muaj chaw. Cov kev teeb tsa no yuav txawv nyob ntawm qhov sib txawv ntawm pawg (aws, gce, azure, liab qab-hlau, ua, ...). Qee qhov chaw tsis tuaj yeem teev ua ntej; lawv yuav tsum tau muab los ntawm pawg. Thiab pawg tsis zoo li qub: rau qee qhov chaw koj yuav tsum tau saib xyuas kev hloov pauv. Thiab ntawm no Ansible twb ploj lawm: koj xav tau ib qho kev pab cuam uas nyob hauv pawg, i.e. Kubernetes Operator.

Cov uas sim nws tom haujlwm shell-operator, lawv yuav hais tias cov dej num ntawm kev txhim kho thiab hloov kho add-ons thiab saib xyuas kev teeb tsa tuaj yeem daws tau tag nrho siv nuv rau shell-operator. Koj tuaj yeem sau ib tsab ntawv uas yuav ua raws li kev cai kubectl apply thiab saib xyuas, piv txwv li, ConfigMap, qhov chaw yuav khaws cia. Qhov no yog kwv yees li cas yog siv nyob rau hauv addon-operator.

Qhov no yog li cas hauv addon-operator?

Thaum tsim ib qho kev daws teeb meem tshiab, peb pib los ntawm cov hauv qab no:

  • Tus add-on installer yuav tsum txhawb nqa templateing thiab declarative configuration. Peb tsis ua cov ntawv sau ua khawv koob uas nruab add-ons. Addon-operator siv Helm rau nruab addons. Txhawm rau nruab, koj yuav tsum tsim ib daim ntawv qhia thiab xaiv cov txiaj ntsig uas yuav siv rau kev teeb tsa.
  • Kev teeb tsa tuaj yeem ua tau tsim rau installation, lawv ua tau tau los ntawm pawg, lossis tau txais kev hloov tshiab, saib xyuas cov peev txheej pawg. Cov haujlwm no tuaj yeem siv tau los ntawm kev siv hooks.
  • Kev teeb tsa tuaj yeem ua tau khaws cia hauv ib pawg. Txhawm rau khaws cov chaw hauv pawg, ConfigMap / addon-operator raug tsim thiab Addon-tus neeg ua haujlwm saib xyuas kev hloov pauv rau ConfigMap no. Addon-tus neeg teb xov tooj muab hooks nkag mus rau qhov chaw siv cov lus pom zoo.
  • Ntxiv nyob ntawm qhov chaw. Yog tias qhov chaw tau hloov pauv, ces tus Addon-tus neeg teb xov tooj dov tawm Helm daim ntawv nrog cov nqi tshiab. Peb hu ua kev sib xyaw ntawm Helm daim ntawv qhia, qhov tseem ceeb rau nws thiab hooks ib qho module (saib hauv qab no kom paub meej ntxiv).
  • Staging. Tsis muaj cov ntawv tso tawm khawv koob. Cov txheej txheem hloov tshiab zoo ib yam li daim ntawv thov niaj hnub - sau cov add-ons thiab addon-operators rau hauv ib daim duab, tag lawv thiab yob tawm.
  • Kev tswj xyuas. Addon-tus neeg ua haujlwm tuaj yeem muab kev ntsuas rau Prometheus.

Dab tsi yog padding hauv addon-operator?

Ib qho ntxiv tuaj yeem suav tias yog txhua yam uas ntxiv cov haujlwm tshiab rau pawg. Piv txwv li, kev txhim kho Ingress yog ib qho piv txwv zoo ntawm qhov ntxiv-on. Qhov no tuaj yeem yog tus neeg teb xov tooj lossis tus tswj hwm nrog nws tus kheej CRD: prometheus-tus neeg ua haujlwm, tus thawj tswj hwm, kube-controller-tus tswj hwm, thiab lwm yam. Los yog qee yam me me, tab sis siv yooj yim dua - piv txwv li, lub tshuab luam ntawv zais cia, uas luam cov ntawv sau npe zais cia rau lub npe tshiab, lossis sysctl tuner, uas teeb tsa sysctl tsis nyob ntawm cov nodes tshiab.

Txhawm rau siv cov add-ons, Addon-operator muab ntau lub tswv yim:

  • Helm daim duab siv los nruab ntau yam software rau hauv pawg - piv txwv li, Prometheus, Grafana, nginx-ingress. Yog tias qhov yuav tsum tau muaj muaj daim ntawv qhia Helm, tom qab ntawd txhim kho nws siv Addon-tus neeg ua haujlwm yuav yooj yim heev.
  • Cov nqi khaws cia. Helm kab kos feem ntau muaj ntau qhov chaw sib txawv uas tuaj yeem hloov pauv raws sijhawm. Addon-tus neeg ua haujlwm txhawb nqa khaws cia cov chaw no thiab tuaj yeem saib xyuas lawv cov kev hloov pauv txhawm rau txhawm rau txhim kho Helm daim ntawv nrog cov nqi tshiab.
  • Hooks yog cov ntaub ntawv executable uas tus Addon-neeg ua haujlwm khiav ntawm cov xwm txheej thiab nkag mus rau cov khoom muaj nqis. Tus nuv tuaj yeem saib xyuas kev hloov pauv hauv pawg thiab hloov kho cov txiaj ntsig hauv cov khoom muaj nqis. Cov. Siv cov hooks, koj tuaj yeem ua qhov kev tshawb pom los sau cov txiaj ntsig los ntawm pawg ntawm kev pib lossis raws li lub sijhawm, lossis koj tuaj yeem ua qhov kev tshawb pom txuas ntxiv, sau cov txiaj ntsig los ntawm pawg raws li kev hloov pauv hauv pawg.
  • Module yog kev sib xyaw ua ke ntawm Helm chart, lub khw muag khoom muaj nuj nqis thiab hooks. Modules tuaj yeem qhib lossis kaw. Disabling ib module txhais tau tias tshem tag nrho Helm daim ntawv tso tawm. Modules tuaj yeem ua rau lawv tus kheej tsis muaj zog, piv txwv li, yog tias tag nrho cov modules nws xav tau yog qhib los yog nrhiav tau pom qhov tsim nyog tsis nyob hauv cov hooks - qhov no yog ua tiav siv cov ntawv pabcuam pabcuam.
  • Ntiaj teb no hooks. Cov no yog cov hooks "ntawm lawv tus kheej", lawv tsis suav nrog cov modules thiab muaj kev nkag mus rau lub khw muag khoom muaj txiaj ntsig thoob ntiaj teb, cov txiaj ntsig uas muaj rau txhua tus hooks hauv modules.

Cov khoom no ua haujlwm ua ke li cas? Cia peb saib daim duab ntawm cov ntaub ntawv:

Puas yog nws yooj yim thiab yooj yim los npaj Kubernetes pawg? Tshaj tawm addon-operator

Muaj ob qhov xwm txheej ua haujlwm:

  1. Kev sib txuas thoob ntiaj teb yog tshwm sim los ntawm ib qho kev tshwm sim - piv txwv li, thaum cov peev txheej hauv pawg hloov pauv. Qhov kev sib txuas no ua tiav cov kev hloov pauv thiab sau cov txiaj ntsig tshiab rau lub khw muag khoom muaj txiaj ntsig thoob ntiaj teb. Addon-tus neeg teb xov tooj ceeb toom tias lub ntiaj teb cia tau hloov pauv thiab pib tag nrho cov modules. Txhua lub module, siv nws cov hooks, txiav txim siab seb nws puas yuav tsum tau qhib thiab hloov kho nws cov khoom muaj nqis. Yog tias lub module qhib, Addon-neeg ua haujlwm pib qhov kev teeb tsa ntawm Helm daim ntawv. Nyob rau hauv cov ntaub ntawv no, daim ntawv Helm muaj kev nkag tau mus rau qhov tseem ceeb ntawm lub module cia thiab los ntawm lub ntiaj teb no cia.
  2. Qhov thib ob scenario yog yooj yim dua: ib tug module nuv yog tshwm sim los ntawm ib qho kev tshwm sim thiab hloov cov nqi nyob rau hauv lub module tus nqi khw. Addon-tus neeg teb xov tooj ceeb toom qhov no thiab nthuav tawm Helm daim ntawv nrog cov nqi tshiab.

Qhov sib ntxiv tuaj yeem siv tau ua ib qho sib txuas, lossis ua ib daim ntawv qhia Helm, lossis txawm li ob peb nyob ntawm modules - qhov no nyob ntawm qhov nyuaj ntawm cov khoom siv tau nruab rau hauv pawg thiab ntawm qhov xav tau ntawm kev teeb tsa yooj yim. Piv txwv li, nyob rau hauv lub repository (/ piv txwv) muaj ib tug sysctl-tuner add-on, uas yog siv ob qho tib si raws li ib tug yooj yim module nrog ib tug nuv thiab ib tug Helm daim ntawv, thiab siv cov khoom muaj nqis, uas ua rau nws muaj peev xwm mus ntxiv tej chaw los ntawm kev kho ConfigMap.

Kev xa tawm tshiab

Ob peb lo lus hais txog kev txhim kho cov khoom hloov tshiab uas Addon-neeg ua haujlwm nruab.

Txhawm rau khiav Addon-operator hauv pawg, koj xav tau tsim ib daim duab nrog ntxiv nyob rau hauv daim ntawv ntawm nuv thiab Helm daim ntawv cov ntaub ntawv, ntxiv ib tug binary ntaub ntawv addon-operator thiab txhua yam koj xav tau rau hooks: bash, kubectl, jq, python lwm. Tom qab ntawd cov duab no tuaj yeem muab dov tawm mus rau pawg raws li daim ntawv thov tsis tu ncua, thiab feem ntau koj yuav xav npaj ib lossis lwm lub tswv yim tagging. Yog tias muaj ob peb pawg, tib txoj hauv kev nrog rau cov ntawv thov yuav tsim nyog: kev tso tawm tshiab, tshiab version, mus rau txhua pawg thiab kho cov duab ntawm Pods. Txawm li cas los xij, nyob rau hauv rooj plaub ntawm kev nthuav tawm mus rau ib qho tseem ceeb ntawm pawg, lub tswv yim ntawm kev hloov kho tus kheej los ntawm cov channel tau tsim nyog rau peb.

Nov yog peb ua li cas:

  • Ib qho channel yog qhov tseem ceeb ntawm tus cim uas tuaj yeem teeb tsa rau txhua yam (piv txwv li, dev/stage/ea/stable).
  • Lub npe channel yog daim duab tag. Thaum koj xav tau dov tawm tshiab rau ib channel, ib daim duab tshiab tau sib sau ua ke thiab tagged nrog lub npe channel.
  • Thaum cov duab tshiab tshwm nyob rau hauv daim ntawv teev npe, Addon-tus neeg teb xov tooj rov pib dua thiab pib nrog cov duab tshiab.

Qhov no tsis yog qhov kev coj ua zoo tshaj plaws, raws li sau rau hauv Kubernetes cov ntaub ntawv. Nws tsis pom zoo kom ua qhov no, tab sis peb tab tom tham txog ib daim ntawv thov tsis tu ncua uas nyob hauv tib pawg. Nyob rau hauv rooj plaub ntawm Addon-tus neeg teb xov tooj, ib daim ntawv thov yog ntau ntawm Deployments tawg nyob rau hauv pawg, thiab nws tus kheej hloov tshiab pab tau ntau thiab ua rau lub neej yooj yim dua.

Channel pab thiab hauv kev sim: yog tias muaj cov pab pawg, koj tuaj yeem teeb tsa nws mus rau channel stage thiab yob hloov tshiab rau hauv nws ua ntej dov nws tawm mus rau channels ea ΠΈ stable. Yog muaj ib pawg ntawm cov channel ea ib qho yuam kev tshwm sim, koj tuaj yeem hloov mus rau stable, thaum qhov teeb meem nrog pawg no tab tom tshawb xyuas. Yog tias pawg raug tshem tawm ntawm kev txhawb nqa, nws hloov mus rau nws cov "kua" channel - piv txwv li, freeze-2019-03-20.

Ntxiv nrog rau kev hloov kho hooks thiab Helm kab kos, koj yuav xav tau hloov tshiab thiab thib peb cov khoom siv. Piv txwv li, koj pom cov kab laum nyob rau hauv cov xwm txheej ntawm tus neeg xa tawm thiab txawm pom tias yuav ua li cas kho nws. Tom ntej no, koj qhib PR thiab tos rau qhov kev tso tawm tshiab kom dhau mus rau txhua pawg thiab nce cov duab ntawm cov duab. Txhawm rau kom tsis txhob tos tsis tu ncua, koj tuaj yeem tsim koj cov node-exporter thiab hloov mus rau nws ua ntej lees txais PR.

Feem ntau, qhov no tuaj yeem ua tiav yam tsis muaj Addon-tus neeg teb xov tooj, tab sis nrog Addon-tus neeg teb xov tooj lub module rau kev txhim kho node-exporter yuav pom nyob rau hauv ib lub repository, Dockerfile rau kev tsim koj cov duab tuaj yeem khaws cia rau ntawd, nws yooj yim dua rau txhua tus neeg koom hauv. cov txheej txheem kom nkag siab tias yuav ua li cas ... Thiab yog tias muaj ntau pawg, ces nws yooj yim dua rau ob qho tib si sim koj PR thiab yob tawm ib qho tshiab!

Lub koom haum ntawm kev hloov kho tshiab no ua haujlwm tau zoo rau peb, tab sis lwm yam kev tsim nyog tuaj yeem siv tau - tom qab tag nrho Nyob rau hauv rooj plaub no Addon-operator yog ib tug yooj yim binary ntaub ntawv.

xaus

Cov hauv paus ntsiab lus siv hauv Addon-tus neeg ua haujlwm tso cai rau koj los tsim cov txheej txheem pob tshab rau kev tsim, sim, txhim kho thiab hloov kho cov add-ons hauv pawg, zoo ib yam li cov txheej txheem kev txhim kho ntawm cov ntawv thov niaj hnub.

Ntxiv-ons rau Addon-tus neeg teb xov tooj hauv hom qauv (Helm chart + hooks) tuaj yeem ua rau pej xeem muaj. Peb, lub tuam txhab Flant, npaj yuav tshaj tawm peb cov kev txhim kho nyob rau hauv daim ntawv ntawm xws li ntxiv rau lub caij ntuj sov. Koom nrog kev txhim kho ntawm GitHub (shell-operator, addon-operator), sim ua kom koj tus kheej ntxiv raws li piv txwv ΠΈ cov ntaub ntawv, tos cov xov xwm ntawm Habre thiab ntawm peb YouTube channel!

PS

Nyeem kuj ntawm peb blog:

Tau qhov twg los: www.hab.com

Ntxiv ib saib