He aha ka GitOps?

Nānā. unuhi.: Ma hope o kahi hoʻolaha hou nā meahana e pili ana i nā ʻano huki a paʻi ma GitOps, ua ʻike mākou i ka hoihoi i kēia kumu hoʻohālike ma ke ʻano nui, akā he kakaikahi loa nā paʻi ʻōlelo Lūkini ma kēia kumuhana (ʻaʻohe mea ma Habré). No laila, hauʻoli mākou e hāʻawi aku iā ʻoe i ka unuhi ʻana o kekahi ʻatikala - ʻoiai ʻaneʻane hoʻokahi makahiki i hala! - mai Weaveworks, ke poʻo i haku i ka huaʻōlelo "GitOps." Hōʻike ka kikokikona i ke ʻano o ke ala a me nā ʻokoʻa koʻikoʻi mai nā mea i loaʻa.

Hoʻokahi makahiki i hala aku nei ua paʻi mākou hoʻolauna iā GitOps. I kēlā manawa, ua kaʻana like mākou i ka hoʻokumu ʻana o ka hui Weaveworks i kahi SaaS i hoʻokumu ʻia ma nā Kubernetes a hoʻomohala i kahi hoʻonohonoho o nā hoʻomaʻamaʻa prescriptive maikaʻi loa no ka lawe ʻana, hoʻokele, a me ka nānā ʻana i kahi kaiapuni maoli.

Ua lilo ka ʻatikala i mea kaulana. Ua hoʻomaka nā poʻe ʻē aʻe e kamaʻilio e pili ana iā GitOps a hoʻomaka i ka paʻi ʻana i nā mea hana hou no pahu kuʻi git, hoʻomohala, mea huna, hana, hoʻohui mau a laila. Hōʻike ʻia ma kā mākou pūnaewele he heluna nui o nā puke a me nā hihia hoʻohana GitOps. Akā, he mau nīnau ko kekahi poʻe. Pehea ka ʻokoʻa o ke kŘkohu mai ka mea kahiko? nā ʻōnaehana e like me ka pāʻālua a me ka lawe mau ʻana (ka lawe mau)? Pono e hoʻohana i nā Kubernetes?

Ua ʻike koke mākou ua pono kahi wehewehe hou, hāʻawi:

  1. He helu nui o nā laʻana a me nā moʻolelo;
  2. Ka wehewehe kikoʻī o GitOps;
  3. Hoʻohālikelike me ka lawe mau ʻana maʻamau.

Ma kēia ʻatikala ua hoʻāʻo mākou e uhi i kēia mau kumuhana āpau. Hāʻawi ia i kahi hoʻolauna hou i GitOps a me kahi mea hoʻomohala a me ka hiʻohiʻona CI/CD. Ke nānā nui nei mākou i nā Kubernetes, ʻoiai hiki ke hoʻohālikelike ʻia ke kumu hoʻohālike.

E hui me GitOps

E noʻonoʻo iā Alice. Hoʻokele ʻo ia i ka Family Insurance, nāna e hāʻawi i ke olakino, kaʻa, home, a me ka ʻinikua huakaʻi i ka poʻe i paʻa loa i ka ʻike ʻana i nā ins a me waho o nā ʻaelike. Ua hoʻomaka kāna ʻoihana ma ke ʻano he papahana ʻaoʻao i ka wā e hana ana ʻo Alice ma kahi panakō ma ke ʻano he ʻepekema data. I kekahi lā ua ʻike ʻo ia hiki iā ia ke hoʻohana i nā algorithm computer holomua e kālele pono i ka ʻikepili a hoʻokumu i nā pūʻolo inikua. Ua hoʻolako kālā nā mea hoʻolale kālā i ka papahana, a i kēia manawa ua lawe mai kāna hui ma mua o $ 20 miliona i ka makahiki a ke ulu wikiwiki nei. I kēia manawa, hoʻohana ia i 180 poʻe ma nā kūlana like ʻole. Loaʻa kēia i kahi hui ʻenehana e hoʻomohala, mālama i ka pūnaewele, waihona, a me ka nānā ʻana i ka waihona mea kūʻai. ʻO ka hui o 60 poʻe e alakaʻi ʻia e Bob, ka luna ʻenehana o ka hui.

Hoʻopuka ka hui o Bob i nā ʻōnaehana hana ma ke ao. E holo ana kā lākou mau noi kumu ma GKE, e hoʻohana ana iā Kubernetes ma Google Cloud. Eia kekahi, hoʻohana lākou i nā ʻikepili like ʻole a me nā mea hana analytics i kā lākou hana.

ʻAʻole i hoʻonohonoho ʻia ʻo Family Insurance e hoʻohana i nā ipu, akā ua hopu ʻia i ka hoihoi Docker. Ua ʻike koke ka hui ua maʻalahi a maʻalahi ʻo GKE i ka hoʻonohonoho ʻana i nā pūʻulu e hoʻāʻo i nā hiʻohiʻona hou. Ua hoʻohui ʻia ʻo Jenkins no CI a me Quay e hoʻonohonoho i ka hoʻopaʻa inoa pahu, ua kākau ʻia nā palapala no Jenkins i hoʻohuli i nā ipu hou a me nā hoʻonohonoho i GKE.

Ua hala kekahi manawa. Ua hōʻeha ʻia ʻo Alice lāua ʻo Bob i ka hoʻokō ʻana i kā lākou ala i koho ai a me kona hopena i ka ʻoihana. ʻAʻole i hoʻomaikaʻi ka hoʻokomo ʻana o nā ipu i ka huahana e like me ka manaʻo o ka hui. I kekahi manawa e haki nā hoʻonohonoho ʻana, a ʻaʻole maopopo i ka hoʻololi ʻana i ke code ke hewa. Ua paʻakikī hoʻi ka nānā ʻana i nā loli config. I ka manawa pinepine, pono ia e hana i kahi puʻupuʻu hou a neʻe i nā noi iā ia, no ka mea ʻo ia ke ala maʻalahi loa e hoʻopau i ka ʻino i lilo ai ka ʻōnaehana. Ua makaʻu ʻo Alice e ʻoi aku ka maikaʻi o ke kūlana i ka wā i hoʻomohala ʻia ai ka palapala noi (eia kekahi, ua hana ʻia kahi papahana hou e pili ana i ka aʻo mīkini). Ua hoʻomaʻamaʻa ʻo Bob i ka hapa nui o ka hana a ʻaʻole maopopo i ke kumu no ka paʻa ʻole o ka paipu, ʻaʻole maikaʻi ka nui, a koi ʻia ka hana lima i kēlā me kēia manawa?

A laila ua aʻo lākou e pili ana iā GitOps. Ua lilo kēia hoʻoholo i ka mea e pono ai lākou e neʻe i mua me ka wiwo ʻole.

Ua lohe ʻo Alice lāua ʻo Bob e pili ana iā Git, DevOps, a me nā ʻōnaehana ma ke ʻano he code workflows no nā makahiki. ʻO ka mea kūʻokoʻa e pili ana iā GitOps, ʻo ia ka lawe ʻana i kahi pūʻulu o nā hana maikaʻi loa-ʻo ka ʻoiaʻiʻo a me ka normative-no ka hoʻokō ʻana i kēia mau manaʻo i ka pōʻaiapili o Kubernetes. ʻO kēia kumuhana ala pinepine, komo iloko blog weaveworks.

Hoʻoholo ka ʻImi ʻohana e hoʻokō iā GitOps. Loaʻa i ka hui i kēia manawa kahi hiʻohiʻona hana automated i kūpono me Kubernetes a hui pū mämä holo me kūpaʻano ka mea:

  • ua ʻike ʻia ua pālua ka huahana o ka hui me ka ʻole o kekahi e pupule;
  • ua ho'ōki i ka lawelawe ʻana i nā palapala. Akā, hiki iā lākou ke nānā aku i nā hiʻohiʻona hou a hoʻomaikaʻi i nā ʻano hana ʻenekinia - no ka laʻana, ka hoʻolauna ʻana i nā canary rollouts a me ka hoʻomaikaʻi ʻana i ka hoʻāʻo;
  • ua hoʻomaikaʻi mākou i ke kaʻina hana i hiki ʻole ke haki;
  • loaʻa i ka manawa kūpono e hoʻihoʻi i nā hoʻolālā ma hope o nā hemahema hapa me ka ʻole o ka hana lima;
  • kūʻai hoʻohana ʻiaоʻOi aku ka hilinaʻi i nā ʻōnaehana lawe. Ua ʻike ʻo Alice lāua ʻo Bob e hiki iā lāua ke hoʻokaʻawale i ka hui i mau hui microservice e hana like ana;
  • hiki ke hana i nā hoʻololi 30-50 i ka papahana i kēlā me kēia lā ma o ka hoʻoikaika ʻana o kēlā me kēia hui a hoʻāʻo i nā ʻenehana hou;
  • he mea maʻalahi ka huki ʻana i nā mea hoʻomohala hou i ka papahana, i loaʻa ka manawa e ʻōwili i nā mea hou i ka hana ʻana me ka hoʻohana ʻana i nā noi huki i loko o kekahi mau hola;
  • maʻalahi e hele i ka loiloi i loko o ka hoʻolālā o SOC2 (no ka hoʻokō ʻana o nā mea lawelawe me nā koi no ka mālama ʻana i ka ʻikepili paʻa; heluhelu hou aku, no ka laʻana, maanei - kokoke. unuhi.).

He aha i hana ai?

ʻElua mau mea ʻo GitOps:

  1. Hoʻohālike hana no nā Kubernetes a me ke ao maoli. Hāʻawi ia i kahi hoʻonohonoho o nā hoʻomaʻamaʻa maikaʻi loa no ka lawe ʻana, hoʻokele, a me ka nānā ʻana i nā puʻupuʻu containerized a me nā noi. ʻO ka wehewehe nani ma ke ʻano hookahi pahee от ʻO Luis Faceira:
  2. ʻO ke ala i ka hoʻokumu ʻana i kahi kaiapuni hoʻokele noiʻi hoʻomohala-centric. Hoʻohana mākou i ke kahe hana Git i nā hana ʻelua a me ka hoʻomohala ʻana. E ʻoluʻolu, ʻaʻole kēia e pili ana iā Git push, akā e pili ana i ka hoʻonohonoho ʻana i ka pūʻulu holoʻokoʻa o nā mea hana CI / CD a me UI / UX.

ʻO kekahi mau ʻōlelo e pili ana iā Git

Inā ʻaʻole ʻoe i kamaʻāina i nā ʻōnaehana mana mana a me ke kahe hana ma Git, makemake nui mākou e aʻo e pili ana iā lākou. ʻO ka hanaʻana me nā lālā a me nā noi huki e like paha me ke kilokiloʻeleʻele i ka wā mua, akā, pono nā pōmaikaʻi. Eia hua maikaʻi e hoomaka.

Pehea e hana ai ʻo Kubernetes

Ma kā mākou moʻolelo, huli ʻo Alice lāua ʻo Bob iā GitOps ma hope o ka hana ʻana me Kubernetes no kekahi manawa. ʻOiaʻiʻo, pili pili loa ʻo GitOps iā Kubernetes - he kumu hoʻohālike hana ia no nā ʻōnaehana a me nā noi e pili ana i nā Kubernetes.

He aha kā Kubernetes e hāʻawi ai i nā mea hoʻohana?

Eia kekahi mau hiʻohiʻona nui:

  1. Ma ke kumu hoʻohālike Kubernetes, hiki ke wehewehe ʻia nā mea a pau ma ke ʻano declarative.
  2. Lawe ke kikowaena API Kubernetes i kēia ʻōlelo hoʻokomo a hoʻāʻo mau e lawe i ka pūʻulu i loko o ka mokuʻāina i wehewehe ʻia ma ka ʻōlelo.
  3. Ua lawa nā ʻōlelo hoʻolaha no ka wehewehe ʻana a me ka mālama ʻana i nā ʻano hana like ʻole - "nā noi."
  4. ʻO ka hopena, hiki ke hoʻololi i ka noi a me ka hui ma muli o:
    • hoʻololi i nā kiʻi pahu;
    • nā hoʻololi i ka ʻōlelo hoʻolaha;
    • nā hewa i ke kaiapuni - no ka laʻana, hāʻule ka pahu.

Nā Mana Hoʻohui Nui o Kubernetes

Ke hoʻololi ka luna hoʻomalu i nā hoʻololi hoʻonohonoho, e hoʻopili ke Kubernetes orchestrator iā lākou i ka pūʻulu inā lōʻihi kona kūlana. ʻaʻole e hele kokoke i ka hoʻonohonoho hou. Hana ʻia kēia kŘkohu no nā kumuwaiwai Kubernetes a hiki ke hoʻonui ʻia me Custom Resource Definitions (CRDs). No laila, loaʻa i nā hoʻolaha Kubernetes nā waiwai kupanaha penei:

  • Automation: Hāʻawi nā hōʻano hou Kubernetes i kahi hana e hoʻokaʻawale i ke kaʻina hana o ka noi ʻana i nā loli me ka nani a me ka manawa kūpono.
  • Ka hui ana: E ho'āʻo mau nā Kubernetes i nā mea hou a hiki i ka holomua.
  • Idempotency: ʻO nā noi hou o ka convergence e alakaʻi i ka hopena like.
  • Hoʻoholo hoʻoholo: Ke lawa nā kumuwaiwai, pili wale ka mokuʻāina o ka pūʻulu hou i ka mokuʻāina i makemake ʻia.

Pehea e hana ai ʻo GitOps

Ua aʻo nui mākou e pili ana i nā Kubernetes e wehewehe i ka hana ʻana o GitOps.

E hoʻi kāua i nā hui microservices Family Insurance. He aha kā lākou hana maʻamau? E nānā i ka papa inoa ma lalo nei (inā he mea ʻē a ʻike ʻole paha kekahi mau mea i loko, e ʻoluʻolu e ʻae i ka hoʻohewa ʻana a noho pū me mākou). He mau hiʻohiʻona wale nō kēia o nā kaila hana e pili ana iā Jenkins. Nui nā kaʻina hana ʻē aʻe i ka hana ʻana me nā mea hana ʻē aʻe.

ʻO ka mea nui ke ʻike mākou ua pau kēlā me kēia hoʻololi me nā loli i nā faila hoʻonohonoho a me nā waihona Git. ʻO kēia mau hoʻololi iā Git ke kumu o ka "GitOps operator" e hoʻonui i ka pūʻulu:

1. Kaʻina hana: "Kūkulu ʻo Jenkins - lālā kumu".
Papa papa hana:

  • Kiʻi ʻo Jenkins i nā kiʻi i hoʻopaʻa ʻia iā Quay;
  • Hoʻokuʻu ʻo Jenkins i nā palapala config a me Helm i ka pahu mālama mālama;
  • Hoʻopili ka hana ao i ka config a me nā kiʻi mai ka waihona mālama master i ka master Git repository;
  • Hoʻopau ka mea hoʻohana GitOps i ka pūʻulu.

2. Kūkulu ʻo Jenkins - hoʻokuʻu a hoʻoponopono hou paha:

  • Hoʻokuʻu ʻo Jenkins i nā kiʻi i hoʻopaʻa ʻole ʻia i Quay;
  • Hoʻokuʻu ʻo Jenkins i nā palapala config a me Helm i ka pahu mālama mālama;
  • Hoʻopili ka hana ao i ka config a me nā pakuhi mai ka pahu mālama mālama staging a i ka staging Git repository;
  • Hoʻopau ka mea hoʻohana GitOps i ka pūʻulu.

3. Kūkulu ʻo Jenkins - hoʻomohala a hōʻike i ka lālā:

  • Hoʻokuʻu ʻo Jenkins i nā kiʻi i hoʻopaʻa ʻole ʻia i Quay;
  • Hoʻokuʻu ʻo Jenkins i nā palapala config a me Helm i loko o ka pahu mālama mālama;
  • Hoʻopili ka hana ao i ka config a me nā kiʻi mai ka pahu waihona hoʻomohala i ka waihona hoʻomohala Git;
  • Hoʻopau ka mea hoʻohana GitOps i ka pūʻulu.

4. Hoʻohui i kahi mea kūʻai aku hou:

  • Kāhea ka luna a luna paha (LCM/ops) iā Gradle no ka hoʻonohonoho mua ʻana a hoʻonohonoho i nā mea kaulike hoʻoili pūnaewele (NLBs);
  • Hana ʻo LCM/ops i kahi hoʻonohonoho hou no ka hoʻomākaukau ʻana i ke kau ʻana no nā mea hou;
  • Hoʻopau ka mea hoʻohana GitOps i ka pūʻulu.

ʻO ka wehewehe pōkole o GitOps

  1. E wehewehe i ke kūlana i makemake ʻia o ka ʻōnaehana holoʻokoʻa me ka hoʻohana ʻana i nā kikoʻī hoʻolaha no kēlā me kēia kaiapuni (ma kā mākou moʻolelo, wehewehe ka hui o Bob i ka hoʻonohonoho ʻōnaehana holoʻokoʻa ma Git).
    • ʻO ka waihona waihona ʻo Git ke kumu hoʻokahi o ka ʻoiaʻiʻo e pili ana i ke kūlana makemake o ka ʻōnaehana holoʻokoʻa.
    • Hoʻololi ʻia nā hoʻololi āpau i ka mokuʻāina i makemake ʻia ma o nā hana ma Git.
    • Hiki ke ʻike ʻia nā ʻāpana puʻupuʻu i makemake ʻia i loko o ka pūʻulu ponoʻī. Ma kēia ala hiki iā mākou ke hoʻoholo inā pili lākou (converge, ʻākoakoa) a ʻokoʻa paha (ʻokoʻa, hoʻokaʻawale) i makemake ʻia a nānā ʻia.
  2. Inā ʻokoʻa nā mokuʻāina i makemake ʻia a nānā ʻia, a laila:
    • Aia kahi hana convergence e hoʻonohonoho maʻalahi i ka pahu hopu a me nā mokuʻāina i ʻike ʻia. I loko o ka pūʻulu, hana ʻo Kubernetes i kēia.
    • Hoʻomaka koke ke kaʻina hana me kahi makaʻala "hoʻololi i hana".
    • Ma hope o kekahi manawa hiki ke hoʻonohonoho ʻia, hiki ke hoʻouna ʻia kahi makaʻala "ʻokoʻa" inā ʻokoʻa nā mokuʻāina.
  3. Ma kēia ala, ʻo nā hana a pau ma Git ke kumu i hōʻoia ʻia a me ka manaʻo hou i ka cluster.
    • ʻO ka rollback ka hui ʻana i kahi kūlana i makemake mua ʻia.
  4. ʻO ka convergence ka hope. Hōʻike ʻia kona hanana ʻana e:
    • ʻAʻohe makaʻala like ʻole no kekahi manawa.
    • "converged" makaʻala (e laʻa me webhook, Git writeback hanana).

He aha ka ʻokoʻa?

E hana hou kakou: pono e ʻike ʻia nā waiwai puʻupuʻu i makemake ʻia i loko o ka pūʻulu ponoʻī.

ʻO kekahi mau laʻana o ka ʻokoʻa:

  • Hoʻololi i ka faila hoʻonohonoho ma muli o ka hoʻohui ʻana i nā lālā ma Git.
  • He hoʻololi i ka faila hoʻonohonoho ma muli o kahi hana Git i hana ʻia e ka mea kūʻai aku GUI.
  • Nui nā hoʻololi i ka mokuʻāina i makemake ʻia ma muli o PR ma Git i ukali ʻia e ke kūkulu ʻana i ke kiʻi pahu a me nā loli hoʻololi.
  • He hoʻololi i ka mokuʻāina o ka pūʻulu ma muli o kahi hewa, paio kumu waiwai i loaʻa ai ka "ʻano hewa", a i ʻole ka hoʻokaʻawale wale ʻana mai ke kūlana kumu.

He aha ke ʻano o ka convergence?

Nā hiʻohiʻi he nui:

  • No nā ipu a me nā puʻupuʻu, hāʻawi ʻia ka mīkini convergence e Kubernetes.
  • Hiki ke hoʻohana ʻia ka mīkini like no ka hoʻokele ʻana i nā noi a me nā hoʻolālā e pili ana i nā Kubernetes (e like me Istio a me Kubeflow).
  • He ʻano hana no ka hoʻokele ʻana i ka pilina hana ma waena o Kubernetes, nā waihona kiʻi a me Git i hāʻawi Mea hoʻohana ʻo GitOps Weave Flux, he hapa ia Kapua ulana.
  • No nā mīkini kumu, pono e hoʻolaha a kūʻokoʻa ka mīkini convergence. Mai ko mākou ʻike ponoʻī hiki iā mākou ke ʻōlelo i kēlā ʻOhana hoʻoponopono kokoke loa i kēia wehewehe ʻana, akā pono naʻe ka mana kanaka. Ma kēia ʻano, hoʻonui ʻo GitOps i ka moʻomeheu o Infrastructure as Code.

Hoʻohui ʻo GitOps iā Git me ka mīkini convergence maikaʻi loa o Kubernetes e hāʻawi i kahi kumu hoʻohālike no ka hoʻohana.

ʻAe ʻo GitOps iā mākou e ʻōlelo: ʻO kēlā mau ʻōnaehana hiki ke wehewehe a nānā ʻia hiki ke hoʻohana ʻia a mālama ʻia.

Ua manaʻo ʻia ʻo GitOps no ke ao holoʻokoʻa holoʻokoʻa (no ka laʻana, Terraform, etc.)

ʻAʻole ʻo Kubernetes wale nō ʻo GitOps. Makemake mākou e alakaʻi ʻia ka ʻōnaehana holoʻokoʻa a hoʻohana i ka convergence. ʻO ka ʻōnaehana holoʻokoʻa mākou e manaʻo nei i kahi hōʻiliʻili o nā kaiapuni e hana pū ana me Kubernetes - no ka laʻana, "dev cluster 1", "production", etc. Aia i kēlā me kēia kaiapuni nā mīkini, nā pūʻulu, nā noi, a me nā loulou no nā lawelawe waho e hāʻawi i ka ʻikepili, ka nānā ʻana. a pela aku.

E nānā i ke koʻikoʻi o Terraform i ka pilikia bootstrapping i kēia hihia. Pono e hoʻoneʻe ʻia nā Kubernetes ma kekahi wahi, a me ka hoʻohana ʻana iā Terraform, hiki iā mākou ke hoʻohana i nā kahe hana like ʻo GitOps e hana i ka papa mana e hoʻokumu i nā Kubernetes a me nā noi. He hana maikaʻi loa kēia.

Aia ka manaʻo nui i ka hoʻopili ʻana i nā manaʻo GitOps i nā papa ma luna o nā Kubernetes. I kēia manawa, aia nā ʻano hoʻonā GitOps-type no Istio, Helm, Ksonnet, OpenFaaS a me Kubeflow, a me ka laʻana, no Pulumi, e hana ana i kahi papa no ka hoʻomohala ʻana i nā noi no ke ao maoli.

Kubernetes CI/CD: hoʻohālikelike i nā GitOps me nā ala ʻē aʻe

E like me ka ʻōlelo ʻana, ʻelua mau mea ʻo GitOps:

  1. ʻO ka hiʻohiʻona hana no nā Kubernetes a me ke ao maoli i wehewehe ʻia ma luna.
  2. ʻO ke ala i kahi kaiapuni hoʻokele polokalamu hoʻomohala.

No ka poʻe he nui, ʻo GitOps kahi kaila hana e pili ana i nā pana ʻo Git. Makemake mākou iā ia. Akā ʻaʻole ʻo ia wale nō: e nānā kākou i nā paipu CI/CD.

Hiki iā GitOps ke hoʻomau mau (CD) no nā Kubernetes

Hāʻawi ʻo GitOps i kahi ʻōnaehana hoʻonohonoho hoʻomau e hoʻopau i ka pono no ka ʻokoʻa "nā ʻōnaehana hoʻokele hoʻonohonoho." Hana ʻo Kubernetes i nā hana a pau no ʻoe.

  • Pono ka hoʻonui ʻana i ka noi i ka hoʻonui ʻana ma Git. He hōʻano hou kēia i ke kūlana i makemake ʻia. A laila hana ʻia ka "Deployment" i loko o ka pūʻulu e Kubernetes ponoʻī e pili ana i ka wehewehe hou ʻana.
  • Ma muli o ke ʻano o ke ʻano o ka hana ʻana o Kubernetes, ua hui pū kēia mau mea hou. Hāʻawi kēia i kahi hana no ka hoʻolaha mau ʻana i nā mea hou a pau he atomic.
  • 'Ōlelo Aʻo: Kapua ulana hāʻawi i kahi mea hoʻohana GitOps e hoʻohui iā Git a me Kubernetes a hiki ke hoʻokō ʻia ka CD ma o ka hoʻoponopono ʻana i ke kūlana i makemake ʻia a i kēia manawa o ka hui.

Me ka ʻole o kubectl a me nā palapala

Pono ʻoe e hōʻalo i ka hoʻohana ʻana iā Kubectl e hoʻonui i kāu puʻupuʻu, a ʻoi aku ka pale ʻana i ka hoʻohana ʻana i nā palapala e hui pū i nā kauoha kubectl. Akā, me ka pipeline GitOps, hiki i kahi mea hoʻohana ke hoʻonui i kā lākou Kubernetes cluster ma o Git.

Loaʻa nā pōmaikaʻi:

  1. Akau. Hiki ke hoʻohana ʻia kahi pūʻulu o nā mea hou, hoʻohui ʻia a hoʻopaʻa ʻia, e hoʻokokoke ana iā mākou i ka pahuhopu o ka hoʻokau atomika. Ma ka hoʻokaʻawale ʻana, ʻaʻole hāʻawi ka hoʻohana ʻana i nā palapala i kahi hōʻoia o ka convergence (e pili ana i kēia ma lalo).
  2. Ka maluhia. Ke kuhi nei Kelsey Hightower: "E hoʻokaʻawale i ke komo ʻana i kāu hui Kubernetes i nā mea hana automation a me nā luna hoʻomalu nona ke kuleana no ka debugging a mālama ʻana paha." e nana hoi ka'u hoolaha ana e pili ana i ka palekana a me ka hoʻokō ʻana i nā kikoʻī ʻenehana, a me ʻatikala e pili ana i ka hacking Homebrew ma ka ʻaihue ʻana i nā palapala hōʻoia mai kahi palapala Jenkins i kākau ʻole ʻia.
  3. ʻIke mea hoʻohana. Hōʻike ʻo Kubectl i nā mechanics o ke kumu hoʻohālike Kubernetes, he paʻakikī loa. ʻO ke kūpono, pono nā mea hoʻohana e launa pū me ka ʻōnaehana ma kahi kiʻekiʻe o ka abstraction. Ma ʻaneʻi e nānā hou wau iā Kelsey a ʻōlelo aku e nānā he palapala hoʻomau.

Ka ʻokoʻa ma waena o CI a me CD

Hoʻomaikaʻi ʻo GitOps i nā hiʻohiʻona CI/CD.

ʻO kahi kikowaena CI hou he mea hana hoʻokani. ʻO ka mea kūikawā, he mea hana ia no ka hoʻonohonoho ʻana i nā pipeline CI. Hoʻopili kēia mau mea i ke kūkulu ʻana, hoʻāʻo, hoʻohui i ka pahu, a me nā mea ʻē aʻe. ʻO nā kikowaena CI e hoʻomaʻamaʻa i ka hoʻokele ʻana i nā pipeline multi-step paʻakikī. ʻO ka hoʻowalewale maʻamau, ʻo ia ke kākau ʻana i kahi pūʻulu o nā mea hou Kubernetes a holo ia ma ke ʻano o ka pipeline e hoʻohuli i nā loli i ka hui. ʻOiaʻiʻo, ʻo ia ka hana a nā poʻe loea. Akā naʻe, ʻaʻole kūpono kēia, a eia ke kumu.

Pono e hoʻohana ʻia ʻo CI no ka pana ʻana i nā mea hou i ka pahu, a pono e hoʻololi ka hui Kubernetes iā ia iho ma muli o kēlā mau mea hou e hoʻokele i ka CD ma loko. Kāhea mākou huki kükohu no CD, ʻaʻole like me ke kumu hoʻohālike CI. He ʻāpana ʻo CD hoʻolāʻau manawa holo.

No ke aha e hana ʻole ai nā kikowaena CI i nā CD ma o nā Hoʻohou pololei ma Kubernetes

Mai hoʻohana i kahi kikowaena CI no ka hoʻonohonoho pono ʻana i nā mea hou i Kubernetes ma ke ʻano he mau hana CI. ʻO kēia ke kumu kūʻē a mākou e kamaʻilio nei haʻi mua ʻia ma kāu blog.

E hoʻi kāua iā Alice lāua ʻo Bob.

He aha nā pilikia i loaʻa iā lākou? Hoʻopili ke kikowaena CI o Bob i nā hoʻololi i ka pūʻulu, akā inā hāʻule i ke kaʻina hana, ʻaʻole ʻike ʻo Bob i ke ʻano o ka pūʻulu (a i ʻole) i loko a pehea e hoʻoponopono ai. Pela no ka holomua.

E noʻonoʻo kākou ua kūkulu ka hui o Bob i kiʻi hou a laila hoʻopaʻa i kā lākou hoʻoili ʻana e hoʻokau i ke kiʻi (mai ka pipeline CI).

Inā kūkulu maʻamau ke kiʻi, akā hāʻule ka pipeline, pono e noʻonoʻo ka hui:

  • Ua hoʻopuka ʻia ka mea hou?
  • Ke hoʻomaka nei mākou i kahi kūkulu hou? E alakaʻi anei kēia i nā hopena ʻaoʻao pono ʻole - me ka hiki ke loaʻa i ʻelua mau hale o ke kiʻi hiki ʻole ke hoʻololi ʻia?
  • Pono mākou e kali no ka hoʻonui hou aʻe ma mua o ka holo ʻana i ke kūkulu?
  • He aha ka mea i hewa? He aha nā ʻanuʻu e pono e hana hou ʻia (a ʻo wai ka mea palekana e hana hou)?

ʻAʻole ʻo ka hoʻokumu ʻana i kahi kaʻina hana ma Git e hōʻoiaʻiʻo ʻaʻole e hālāwai ka hui o Bob i kēia mau pilikia. Hiki iā lākou ke hana hewa me ka commit push, ka tag, a i ʻole kekahi ʻāpana ʻē aʻe; akā naʻe, ʻoi aku ka pili o kēia ʻano i kahi ʻano kikoʻī āpau-a-ʻole.

No ka hōʻuluʻulu ʻana, eia ke kumu ʻaʻole pono nā kikowaena CI e hana me CD:

  • ʻAʻole paʻa mau nā palapala hōʻano hou; He maʻalahi ke hana hewa i loko o lākou.
  • ʻAʻole hui nā kikowaena CI i ke kumu hoʻohālike puʻupuʻu declarative.
  • He paʻakikī ke hōʻoia i ka idempotency. Pono nā mea hoʻohana e hoʻomaopopo i nā semantics hohonu o ka ʻōnaehana.
  • ʻOi aku ka paʻakikī o ka hoʻōla ʻana mai kahi hemahema hapa.

Nānā e pili ana iā Helm: Inā makemake ʻoe e hoʻohana i ka Helm, manaʻo mākou e hui pū me kahi mea hoʻohana GitOps e like me Holoi-Helm. E kōkua kēia i ka hōʻoia ʻana i ka convergence. ʻAʻole hoʻoholo ʻo Helm ponoʻī a i ʻole atomic.

ʻO GitOps ke ala maikaʻi loa e hoʻokō ai i ka Hoʻouna Hoʻomau no nā Kubernetes

Hoʻokomo ka hui ʻo Alice lāua ʻo Bob i nā GitOps a ʻike ua maʻalahi ka hana me nā huahana lako polokalamu, mālama i ka hana kiʻekiʻe a me ke kūpaʻa. E hoʻopau kākou i kēia ʻatikala me kahi kiʻi e hōʻike ana i ke ʻano o kā lākou ala hou. E hoʻomanaʻo e kamaʻilio mākou e pili ana i nā noi a me nā lawelawe, akā hiki ke hoʻohana ʻia ʻo GitOps e hoʻokele i kahi kahua holoʻokoʻa.

Hoʻohālike hana no nā Kubernetes

E nana i keia kii. Hōʻike ia iā Git a me ka waihona kiʻi pahu e like me nā kumuwaiwai like ʻole no ʻelua mau ola ola i hoʻonohonoho ʻia:

  • He pipeline hoʻohui mau e heluhelu a kākau i nā faila iā Git a hiki ke hoʻololi i kahi waihona o nā kiʻi pahu.
  • ʻO kahi pipeline Runtime GitOps e hui pū me ka hoʻokele a me ka nānā. Heluhelu a kākau ʻo ia i nā faila iā Git a hiki ke hoʻoiho i nā kiʻi pahu.

He aha nā ʻike nui?

  1. ʻO ka hoʻokaʻawale ʻana i nā pilikia: E ʻoluʻolu e hiki ke kamaʻilio ʻia nā pipeline ʻelua ma ka hoʻonui ʻana iā Git a i ʻole ka waihona kiʻi. I nā huaʻōlelo ʻē aʻe, aia kahi pā ahi ma waena o CI a me ke kaiapuni runtime. Kapa mākou iā ia ʻo ka "firewall imutability" (palena ahi hiki ʻole ke hoʻololi ʻia), no ka mea, hoʻokumu ʻia nā mana hou o ka waihona. No ka 'ike hou aku no keia kumuhana, e nana i na pahehe 72-87 keia hoikeike.
  2. Hiki iā ʻoe ke hoʻohana i kekahi kikowaena CI a me Git: Hana pū ʻo GitOps me kekahi ʻāpana. Hiki iā ʻoe ke hoʻomau i ka hoʻohana ʻana i kāu mau kikowaena CI a me Git punahele, nā waihona kiʻi, a me nā suite hoʻāʻo. Ma kahi kokoke i nā mea hana hoʻomau hoʻomau ʻē aʻe ma ka mākeke e koi i kā lākou kikowaena CI/Git a i ʻole waihona kiʻi. E lilo paha kēia i kumu palena ʻole i ka hoʻomohala ʻana i ke ao maoli. Me GitOps, hiki iā ʻoe ke hoʻohana i nā mea hana maʻamau.
  3. Nā hanana ma ke ʻano he mea hana hoʻohui: Ke hōʻano hou ʻia ka ʻikepili ma Git, hōʻike ʻo Weave Flux (a i ʻole ka mea hoʻohana Weave Cloud) i ka manawa holo. Ke ʻae ʻo Kubernetes i kahi hoʻololi hoʻololi, hoʻonui ʻia ʻo Git. Hāʻawi kēia i kahi kumu hoʻohui maʻalahi no ka hoʻonohonoho ʻana i nā kahe hana no GitOps, e like me ka mea i hōʻike ʻia ma lalo nei.

hopena

Hāʻawi ʻo GitOps i nā hōʻoia hōʻoia ikaika e koi ʻia e kekahi mea hana CI/CD hou:

  • mīkini hana;
  • huikau;
  • idempotency;
  • manaʻo hoʻoholo.

He mea koʻikoʻi kēia no ka mea hāʻawi ia i kahi hiʻohiʻona hana no nā mea hoʻomohala ʻōiwi.

  • Hoʻopili ʻia nā mea hana kuʻuna no ka mālama ʻana a me ka nānā ʻana i nā ʻōnaehana me nā hui hana e hana ana i loko o kahi runbook (he pūʻulu o nā kaʻina hana maʻamau a me nā hana - ma kahi o transl.), pili i kahi hoʻolālā kikoʻī.
  • Ma ka hoʻokele ʻōiwi ʻōiwi, ʻo nā mea hana nānā ke ala maikaʻi loa e ana i nā hopena o nā hoʻolaha i hiki i ka hui hoʻomohala ke pane koke.

E noʻonoʻo i nā pūʻulu he nui i hoʻopuehu ʻia ma nā ao like ʻole a me nā lawelawe he nui me kā lākou hui ponoʻī a me nā hoʻolālā hoʻolālā. Hāʻawi ʻo GitOps i kahi hiʻohiʻona nui-invariant no ka hoʻokele ʻana i kēia waiwai āpau.

PS mai ka unuhi

E heluhelu pū ma kā mākou blog:

Hiki i nā mea hoʻohana i hoʻopaʻa inoa ʻia ke komo i ka noiʻi. Eʻe, e 'oluʻolu.

Ua ʻike paha ʻoe e pili ana iā GitOps ma mua o ka puka ʻana o kēia mau unuhi ʻelua ma Habré?

  • ʻAe, ua ʻike wau i nā mea a pau

  • Ma luna wale nō

  • No

35 mea hoʻohana i koho. Ua hōʻole nā ​​mea hoʻohana 10.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka