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:
He helu nui o nā laʻana a me nā moʻolelo;
Ka wehewehe kikoʻī o GitOps;
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:
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:
ʻ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:
Ma ke kumu hoʻohālike Kubernetes, hiki ke wehewehe ʻia nā mea a pau ma ke ʻano declarative.
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.
Ua lawa nā ʻōlelo hoʻolaha no ka wehewehe ʻana a me ka mālama ʻana i nā ʻano hana like ʻole - "nā noi."
ʻ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
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.
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.
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.
ʻ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).
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:
ʻO ka hiʻohiʻona hana no nā Kubernetes a me ke ao maoli i wehewehe ʻia ma luna.
ʻ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:
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).
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.
ʻ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?
ʻ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.
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.
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.