Hanumi 3-ara ki te werf: tuku ki Kubernetes me te Helm "i runga i te steroids"

Ko ta matou (kaore ko matou anake) e tatari ana mo te wa roa kua puta: werf, ko ta matou taputapu Open Source mo te hanga tono me te tuku ki a Kubernetes, inaianei kei te tautoko i te tono huringa ma te whakamahi i nga papa hanumi-3-ara! I tua atu i tenei, ka taea te tango i nga rauemi K8 o naianei ki roto i nga tukunga Helm me te kore e hanga ano i enei rauemi.

Hanumi 3-ara ki te werf: tuku ki Kubernetes me te Helm "i runga i te steroids"

Mena he poto rawa, ka waiho e matou WERF_THREE_WAY_MERGE=enabled - ka whiwhi tatou i te tohatoha "penei i roto kubectl apply", he hototahi ki nga whakaurunga Helm 2 o naianei me etahi atu.

Engari me timata tatou ki te ariā: he aha te ahua o nga papaa-3-ara-hanumi, i pehea te huarahi i puta mai ai te tangata ki te whakaputa i aua mea, a he aha te mea nui i roto i nga mahi CI/CD me nga hanganga-a-Kubernetes? A, i muri i tera, kia kite tatou he aha te 3-ara-hanumi kei roto i te werf, he aha nga tikanga e whakamahia ana ma te taunoa me pehea te whakahaere.

He aha te papaki hanumi-3-ara?

Na, me timata ma te mahi ki te huri i nga rauemi e whakaahuatia ana i roto i nga whakaaturanga YAML ki Kubernetes.

Hei mahi me nga rauemi, ka tukuna e te Kubernetes API nga mahi taketake e whai ake nei: hanga, papaki, whakakapi me te muku. Ko te whakaaro me to raatau awhina he mea tika ki te hanga i te watea tonu te whakaputa rauemi ki te roopu. Me pehea?

kubectl whakahau nui

Ko te huarahi tuatahi ki te whakahaere ahanoa i Kubernetes ko te whakamahi i nga kupu whakahau kubectl ki te hanga, ki te whakarereke, ki te muku i enei taonga. Me korero noa:

  • kapa kubectl run Ka taea e koe te whakahaere i te Whakamahinga, i te Hopa ranei:
    kubectl run --generator=deployment/apps.v1 DEPLOYMENT_NAME --image=IMAGE
  • kapa kubectl scale — Hurihia te maha o nga tauira:
    kubectl scale --replicas=3 deployment/mysql
  • me te pera.

Ko tenei huarahi ka ahua watea i te titiro tuatahi. Heoi ano he raruraru:

  1. He uaua mahi aunoa.
  2. Kia pehea te whakaata whirihoranga i roto i te Git? Me pehea te arotake i nga huringa ka pa ki te roopu?
  3. Me pehea te whakarato reproducibility whirihoranga i te whakaara ano?
  4. ...

E marama ana kaore tenei huarahi e pai ki te penapena i nga tono me nga hanganga hei waehere (IaC; ara GitOps hei kowhiringa hou ake, ka rongonui i roto i te punaha rauropi Kubernetes). No reira, karekau enei whakahau i whiwhi whanaketanga atu i te kubectl.

Waihanga, tiki, whakakapi me te whakakore i nga mahi

Me te tuatahi hangahanga he ngawari: tukuna te whakaaturanga ki te mahi create kube api me te rauemi kua hangaia. Ko te tohu YAML o te whakaaturanga ka taea te penapena ki Git ka hangaia ma te whakamahi i te whakahau kubectl create -f manifest.yaml.

С te tango ngawari hoki: whakakapi i te taua manifest.yaml mai i Git ki te kapa kubectl delete -f manifest.yaml.

Mahi replace ka taea e koe te whakakapi katoa i te whirihoranga rauemi me te mea hou, me te kore e hanga ano i te rauemi. Ko te tikanga i mua i te whakarereketanga ki tetahi rauemi, he mea tika kia uiuia te putanga o naianei me te mahi get, hurihia me te whakahou me te mahi replace. Kua hangaia te kube apiserver raka pai a, ki te whai muri i te pokanga get kua huri te ahanoa, katahi ka mahi replace e kore e mahi.

Hei penapena i te whirihoranga ki Git me te whakahou ma te whakamahi i te whakakapi, me mahi koe i te mahi get, hanumi te whirihora mai i a Git me nga mea i riro mai, ka mahia replace. Ma te taunoa, ka taea e kubectl anake te whakamahi i te whakahau kubectl replace -f manifest.yamlte wahi manifest.yaml - he whakaaturanga kua tino rite (i roto i ta maatau take, kua hanumi) me whakauru. Te ahua nei me whakauru e te kaiwhakamahi nga whakaaturanga hanumi, a ehara tenei i te mea iti...

He mea tika ano kia mohio ahakoa manifest.yaml a kei te rongoa i roto i te Git, kaore e taea te mohio i mua mena me hanga he ahanoa me whakahou ranei - me mahi tenei ma te rorohiko kaiwhakamahi.

Te tapeke: ka taea e tatou te hanga i te whakaputanga tonu te whakamahi noa i te waihanga, te whakakapi me te muku, me te whakarite kei te rongoa te whirihoranga hanganga ki Git me te waehere me te watea CI/CD?

Ko te tikanga, ka taea e tatou ... Mo tenei ka hiahia koe ki te whakatinana i te mahi hanumi whakaaturanga me etahi momo here e:

  • ka tirohia te noho mai o tetahi mea i roto i te tautau,
  • ka mahi i te hanga rauemi tuatahi,
  • whakahōu, mukua ranei.

I te wa e whakahou ana, me mahara mai kua rereke pea te rauemi mai i te whakamutunga get me te whakahaere aunoa i te keehi o te raka pai - mahia nga ngana whakahou.

Heoi, he aha te mea ka whakahou ano i te wira ina tuku a kube-apiserver i tetahi atu huarahi ki te whakahou i nga rauemi: te mahi patch, he aha te whakamaarama i te kaiwhakamahi i etahi o nga raru kua whakaahuahia?

Patch

Inaianei ka tae tatou ki nga papa.

Ko nga papaki te huarahi tuatahi ki te hoatu huringa ki nga taonga o naianei kei Kubernetes. Mahi patch he penei te mahi:

  • Me tuku e te kaiwhakamahi kube-apiserver he papaki ki te puka JSON me te tohu i te ahanoa,
  • ma te apiserver tonu e whakahaere te ahua o naianei o te ahanoa me te kawe ki te ahua e hiahiatia ana.

Kaore e hiahiatia te raka pai i tenei keehi. He korero nui ake tenei mahi i te whakakapi, ahakoa i te tuatahi he rereke te ahua.

I tenei ara:

  • te whakamahi i tetahi mahi create ka hangaia e matou he ahanoa kia rite ki te whakaaturanga mai i a Git,
  • me te awhina delete — muku ki te kore e hiahiatia te ahanoa,
  • me te awhina patch — ka huri tatou i te ahanoa, ka kawea ki te ahua e whakaahuatia ana i Git.

Heoi, ki te mahi i tenei, me hanga e koe papaki tika!

Me pehea te mahi o nga papaki i te Helm 2: 2-ara-hanumi

I te wa tuatahi ka whakauruhia e koe he tuku, ka mahia e Helm te mahi create mo nga rauemi tūtohi.

Ina whakahōu ana i te tuku Helm mo ia rauemi:

  • ka whakaarohia te papaki i waenga i te putanga rauemi mai i te tūtohi o mua me te putanga tūtohi o nāianei,
  • ka whakamahia tenei papaki.

Ka kiia e matou tenei papaki 2-ara hanumi papaki, no te mea e 2 nga whakaaturanga e uru ana ki tana hanganga:

  • whakaaturanga rauemi mai i te tukunga o mua,
  • whakaaturanga rauemi mai i te rauemi o naianei.

Ina tango mahi delete i roto i te kube apiserver ka karangahia mo nga rauemi i whakapuakihia i te tukunga o mua, engari kaore i whakapuakihia i te waa o naianei.

Ko te huarahi 2 hanumi papaki he raruraru: ka arahi ki i te tukutahi me te tino ahuatanga o te rauemi i roto i te kahui me te whakaaturanga i Git.

He whakaahuatanga o te rapanga me tetahi tauira

  • I roto i te Git, ka penapena te tūtohi i tetahi whakaaturanga kei roto te mara image He mea nui te tuku ubuntu:18.04.
  • Kaiwhakamahi mā kubectl edit i hurihia te uara o tenei mara ki ubuntu:19.04.
  • Ina tukuna ano te tūtohi Helm e kore e whakaputa i te papaki, no te mea te mara image i te putanga o mua o te tukunga me te tūtohi o nāianei he rite tonu.
  • I muri i te tohatoha ano image toenga ubuntu:19.04, ahakoa ta te tūtohi ubuntu:18.04.

Kua wetewetehia matou, kua ngaro te korero.

He aha te rauemi tukutahi?

Ko te tikanga, полное E kore e taea te whiwhi i te tauritenga i waenga i te whakaaturanga rauemi i roto i te kahui e rere ana me te whakaaturanga mai i a Git. Na te mea i roto i te whakaaturanga pono tera pea he tuhinga korero/tapanga ratonga, ipu taapiri me etahi atu raraunga ka taapirihia ka tangohia mai i te rauemi ma te hihiri e etahi kaiwhakahaere. Kaore e taea, kaore hoki e hiahia ki te pupuri i enei raraunga ki Git. Heoi, e hiahia ana matou ko nga mara i tohua e matou i roto i te Git ki te tango i nga uara e tika ana ina puta ana.

Ka puta mai he tino whanui ture rauemi tukutahi: i te wa e huri ana i tetahi rauemi, ka taea e koe te whakarereke, te whakakore ranei i nga mara anake kua tohua i roto i te whakaaturanga mai i a Git (i tohua ranei i roto i te putanga o mua ka mukua inaianei).

3-ara hanumi papaki

Te whakaaro matua 3-ara hanumi papaki: ka hangaia e matou he papaki i waenga i te putanga whakamutunga o te whakaaturanga mai i a Git me te putanga whainga o te whakaaturanga mai i a Git, me te whakaaro ki te putanga o naianei o te whakaaturanga mai i te kahui rere. Me whai te papaki hua ki te ture rauemi tukutahi:

  • Ko nga mara hou kua taapirihia ki te putanga kua tohua ka taapirihia ma te whakamahi i te papaki;
  • Ko nga mara o mua kei te putanga whakamutunga kua tonohia, kaore ano i te waahanga kua tohua, ka tautuhia ma te whakamahi i te papaki;
  • Ko nga mara i te putanga o naianei o te ahanoa he rereke mai i te putanga whainga o te whakaaturanga ka whakahoutia ma te whakamahi i te papaki.

I runga i tenei maataapono ka hangaia e ia nga papaki kubectl apply:

  • ko te putanga whakamutunga o te whakaaturanga kua rongoatia ki te tuhipoka o te ahanoa ake,
  • ūnga - tangohia mai i te konae YAML kua tohua,
  • ko te mea o naianei mai i te kahui rere.

Inaianei kua whakatauhia e matou te ariā, kua tae ki te wa ki te korero ki a koe he aha ta matou mahi i roto i te werf.

Te tono huringa ki werf

I mua, ko te werf, penei i a Helm 2, i whakamahi i nga papanga 2-ara-hanumi.

Whakatikahia te papaki

Hei huri ki tetahi momo papaki hou - 3-ara-hanumi - te taahiraa tuatahi i whakauruhia e matou te mea e kiia nei. hanga papaki.

I te wa e tuku ana, ka whakamahia he papaki 2-ara-hanumi, engari ka hangaia e werf he papaki hei tukutahi i te tino ahuatanga o te rauemi me nga mea kua tuhia ki te Git (he mea hanga he papaki ma te whakamahi i te ture rauemi tukutahi i whakaahuatia i runga ake nei) .

Ki te puta he wetenga tukutahitanga, i te mutunga o te tukunga ka whiwhi te kaiwhakamahi i te WHAKATŪPATO me tetahi karere e rite ana me tetahi papaki me tono hei kawe i te rauemi ki te puka tukutahi. Ka tuhia ano tenei papaki ki tetahi korero motuhake werf.io/repair-patch. E kiia ana ko nga ringaringa o te kaiwhakamahi сам ka tono tenei papaki: e kore rawa e whakamahia e werf.

Ko te hanga i nga papa whakatikatika he ine rangitahi e taea ai e koe te whakamatau i te hanga o nga papaki i runga i te maapono hanumi-3-ara, engari kaua e whakamahi aunoa i enei papanga. I tenei wa, kua whakahohea tenei aratau whakahaere ma te taunoa.

3-ara-hanumi papaki mo nga putanga hou anake

Ka timata i te Hakihea 1, 2019, ka timata nga putanga beta me te alpha o werf taunoa whakamahia nga papa hanumi-3-ara-katoa ki te tono huringa ki nga whakaputanga Helm hou i tukuna ma te werf. Ko nga tukunga o naianei ka whakamahi tonu i te huarahi 2-ara-hanumi + whakatika papaki.

Ko tenei aratau whakahaere ka taea te mahi ma te tautuhi WERF_THREE_WAY_MERGE_MODE=onlyNewReleases inaianei.

parau: i puta te ahuatanga i roto i te werf i runga i te maha o nga putanga: i roto i te hongere alpha kua reri me te putanga v1.0.5-alpha.19, me te hongere beta - me v1.0.4-beta.20.

3-ara-hanumi papaki mo nga putanga katoa

Mai i te Hakihea 15, 2019, ka timata nga putanga beta me te alpha o te werf ki te whakamahi i nga papaa hanumi-3-ara katoa ma te taunoa hei tono huringa ki nga putanga katoa.

Ko tenei aratau whakahaere ka taea te mahi ma te tautuhi WERF_THREE_WAY_MERGE_MODE=enabled inaianei.

He aha te mahi ki te inenga-aunoa?

E 2 nga momo tauine-aunoa i Kubernetes: HPA (whakapae) me VPA (poutū).

Ka kowhiri aunoa a Whakapae i te maha o nga tauira, poutū - te maha o nga rauemi. Ko te maha o nga tauira me nga whakaritenga rauemi kua tohua ki te whakaaturanga rauemi (tirohia te Whakaaturanga Rauemi). spec.replicas ranei spec.containers[].resources.limits.cpu, spec.containers[].resources.limits.memory и Tuhinga).

Raruraru: mena ka whirihorahia e te kaiwhakamahi tetahi rauemi ki roto i te tūtohi kia tohuhia e ia etahi uara mo nga rauemi, he tauira ranei ka taea te whakahoahoa autoscalers mo tenei rauemi, katahi ka tukuna e te werf enei uara ki nga mea kua tuhia ki te whakaaturanga tūtohi. .

E rua nga otinga mo te raruraru. Hei timata, he pai ki te karo i te whakaatu i nga uara kua tohua aunoa i roto i te whakaaturanga tūtohi. Mena karekau tenei whiringa i te pai mo etahi take (hei tauira, na te mea he pai ki te whakarite i nga tepe rauemi tuatahi me te maha o nga tauira ki te tūtohi), ka tukuna e werf nga korero e whai ake nei:

  • werf.io/set-replicas-only-on-creation=true
  • werf.io/set-resources-only-on-creation=true

Mena he korero penei, e kore e werf te tautuhi i nga uara e pa ana ki ia tukunga, engari ka tautuhia i te wa i hangaia ai te rauemi.

Mo etahi atu korero, tirohia te tuhinga kaupapa mo HPA и VPA.

Aukati i te whakamahi i te papaki 3-ara-hanumi

I tenei wa ka taea e te kaiwhakamahi te aukati i te whakamahi i nga papanga hou ki te werf ma te whakamahi i tetahi taurangi taiao WERF_THREE_WAY_MERGE_MODE=disabled. Heoi, ka timata Mai i te Maehe 1, 2020, ka kore tenei aukati e pa. a ka taea anake te whakamahi i nga papanga 3-ara-hanumi.

Te tango rauemi i te werf

Ma te mohio ki nga tikanga o te tono huringa me nga papaki hanumi-3-ara i taea ai e matou te whakatinana i taua ahuatanga penei i te tango rauemi kei roto i te roopu ki roto i te tuku Helm.

He raru te Helm 2: kaore e taea e koe te taapiri i tetahi rauemi ki te whakaatu i nga whakaaturanga kei roto i te roopu me te kore e hanga ano i tenei rauemi mai i te wahanga (tirohia. #6031, #3275). I whakaako matou ki a werf ki te whakaae ki nga rauemi o naianei hei tuku. Ki te mahi i tenei, me whakauru koe i tetahi tuhipoka ki te putanga o naianei o te rauemi mai i te kahui rere (hei tauira, te whakamahi kubectl edit):

"werf.io/allow-adoption-by-release": RELEASE_NAME

Inaianei me whakaahuahia te rauemi ki te tūtohi me te wa e whai ake nei ka tukuna e werf he tuku me te ingoa e tika ana, ka whakaaehia te rauemi kei roto i tenei tukunga ka noho tonu ki raro i tana mana whakahaere. I tua atu, i te wa e whakaaehia ana he rauemi mo te tuku, ka kawea mai e werf te ahuatanga o naianei o te rauemi mai i te kahui e rere ana ki te ahua e whakaahuatia ana i te tūtohi, ma te whakamahi i nga papahanga 3-ara-hanumi me te ture rauemi tukutahi.

parau: whakatakotoranga WERF_THREE_WAY_MERGE_MODE e kore e pa ki te tango rauemi - i te take o te whakatamarikitanga, ka whakamahia te papaki-3-ara-hanumi i nga wa katoa.

Nga korero - in tuhinga.

Nga whakatau me nga mahere mo meake nei

Kei te tumanako ahau i muri mai i tenei tuhinga kua marama ake he aha nga papanga 3-ara-hanumi me te take i tae mai ai ki a raatau. Mai i te tirohanga whaitake mo te whakawhanaketanga o te kaupapa werf, ko ta ratou whakatinanatanga ko tetahi atu huarahi ki te whakapai ake i te whakatakotoranga rite-Helm. Inaianei ka wareware koe ki nga raru o te tukutahitanga whirihoranga, i puta mai i te wa e whakamahi ana i te Helm 2. I te wa ano, he mea whai hua hou mo te tango i nga rauemi Kubernetes kua oti te tango kua taapirihia ki te tuku Helm.

Arā tonu etahi take me nga wero mo nga whakatakotoranga penei i te Helm, penei i te whakamahi i nga tauira Go, ka whakatika tonuhia e matou.

Ka kitea hoki nga korero mo nga tikanga whakahou rawa me te whakatamarikitanga i tenei wharangi tuhinga.

Heremi 3

He tika mo te tuhipoka motuhake tukuna i tera ra he putanga nui hou o Helm - v3 - e whakamahi ana hoki i nga papaki 3-ara-hanumi me te whakakore i te Tiller. Ko te putanga hou o Helm e hiahia ana hekenga nga whakaurunga o naianei hei huri ki te whakatakotoranga rokiroki tuku hou.

Ko Werf, mo tana waahanga, kua whakakorehia te whakamahi i te Tiller, kua huri ki te 3-ara-hanumi me te taapiri. nui noa atu, i te wa e noho hototahi ana ki nga whakaurunga Helm 2 o naianei (kaore e tika kia mahia nga tuhinga heke). No reira, kia huri ra ano te werf ki te Helm 3, kare nga kaiwhakamahi werf e ngaro i nga tino painga o te Helm 3 ki runga i te Helm 2 (kei a werf ano).

Heoi, ko te huringa o te werf ki te Helm 3 codebase kaore e taea te karo, a ka puta i roto i nga wa e heke mai nei. Ko te ahua pea ko te werf 1.1, werf 1.2 ranei (i tenei wa, ko te putanga matua o te werf ko te 1.0; mo etahi atu korero mo te taputapu whakaputa werf, tirohia. konei). I tenei wa, ka whai wa a Helm 3 ki te whakapumau.

PS

Pānuihia hoki i runga i ta maatau blog:

Source: will.com

Tāpiri i te kōrero