GitOps: Hoʻohālikelike o nā ʻano Huki a me nā ʻano Push

Nānā. unuhi.: I loko o ke kaiāulu Kubernetes, ke kaulana nei kahi ʻano i kapa ʻia ʻo GitOps, e like me kā mākou i ʻike pono ai, kipa ana KubeCon Europe 2019. He mea hou kēia huaʻōlelo hana ʻia e ke poʻo o Weaveworks - Alexis Richardson - a ʻo ia hoʻi ka hoʻohana ʻana i nā mea hana i kamaʻāina i nā mea hoʻomohala (ma mua o Git, no laila ka inoa) e hoʻoponopono i nā pilikia hana. ʻO ka mea kūikawā, ke kamaʻilio nei mākou e pili ana i ka hana ʻana o Kubernetes ma ka mālama ʻana i kāna mau hoʻonohonoho ma Git a me ka hoʻololi ʻana i nā loli i ka hui. Ua kamaʻilio ʻo Matthias Jg e pili ana i ʻelua ala i kēia ʻōwili ʻia ma kēia ʻatikala.

GitOps: Hoʻohālikelike o nā ʻano Huki a me nā ʻano Push

ʻO ka makahiki i hala (ʻoiaʻiʻo, ua hana ʻia kēia ma ʻAukake 2017 - ma kahi o. transl.) Aia kahi ala hou e kau ai i nā noi ma Kubernetes. Kapa ʻia ʻo ia ʻo GitOps, a ua hoʻokumu ʻia ia ma ka manaʻo kumu e nānā ʻia nā mana hoʻolaha i loko o ka wahi palekana o kahi waihona Git.

ʻO nā pōmaikaʻi nui o kēia ala e like me kēia::

  1. Ka hoʻohana ʻana a me ka hoʻololi ʻana i ka mōʻaukala. Mālama ʻia ka mokuʻāina o ka pūʻulu holoʻokoʻa i loko o kahi waihona Git, a ua hoʻonui ʻia nā deployments ma o nā hana. Eia hou, hiki ke nānā ʻia nā loli āpau me ka hoʻohana ʻana i ka mōʻaukala commit.
  2. Rollbacks me ka hoʻohana ʻana i nā kauoha Git maʻamau. Maʻalahi git reset hiki iā ʻoe ke hoʻonohonoho hou i nā hoʻololi i nā hoʻolālā; loaʻa mau nā mokuʻāina i hala.
  3. Mākaukau ka mana komo. ʻO ka maʻamau, loaʻa i kahi ʻōnaehana Git ka nui o nā ʻikepili koʻikoʻi, no laila ka hapa nui o nā ʻoihana e nānā kūikawā i ka pale ʻana. No laila, pili kēia palekana i nā hana me nā hoʻolālā.
  4. Nā Kulekele no ka Hoʻolaha. Kākoʻo maoli ka hapa nui o nā ʻōnaehana Git i nā kulekele lālā-ʻo ka lālā—no ka laʻana, hiki i nā noi huki ke hoʻonui i ka haku, a pono e loiloi ʻia nā loli a ʻae ʻia e kekahi lālā o ka hui. E like me ka mana ʻae, pili nā kulekele like i nā hoʻolaha hoʻolaha.

E like me kāu e ʻike ai, nui nā pōmaikaʻi i ke ala GitOps. I ka makahiki i hala iho nei, ua loaʻa i nā ala ʻelua ke kaulana. Hoʻokumu ʻia kekahi, huki ʻia kekahi. Ma mua o ka nānā ʻana iā lākou, e nānā mua kākou i ke ʻano o nā hoʻolaha maʻamau o Kubernetes.

Nā Hana Hoʻolaha

I nā makahiki i hala iho nei, ua hoʻokumu ʻia nā ʻano hana like ʻole a me nā mea hana no ka hoʻolaha ʻana ma Kubernetes:

  1. Ma muli o nā kumu hoʻohālike Kubernetes/Kustomize. ʻO kēia ke ala maʻalahi e kau i nā noi ma Kubernetes. Hoʻokumu ka mea hoʻomohala i nā faila YAML maʻamau a pili iā lākou. No ka hoʻopau ʻana i ka kākau mau ʻana i nā mamana like, ua hoʻomohala ʻia ʻo Kustomize (e hoʻololi i nā template Kubernetes i mau modula). Nānā. unuhi.: Ua hoʻohui ʻia ʻo Kustomize i kubectl me ka hoʻokuʻu ʻana o Kubernetes 1.14.
  2. Nā Papa Helm. Hāʻawi nā palapala Helm iā ʻoe e hana i nā hoʻonohonoho o nā templates, nā ipu init, sidecars, etc., i hoʻohana ʻia no ka hoʻopili ʻana i nā noi me nā koho hoʻoponopono maʻalahi ma mua o ke ʻano hoʻohālikelike. Hoʻokumu ʻia kēia ala ma nā faila YAML i hoʻohālikelike ʻia. Hoʻopiha ʻo Helm iā lākou me nā ʻāpana like ʻole a laila hoʻouna iā lākou iā Tiller, kahi ʻāpana cluster e kau ana iā lākou i ka hui a hiki i nā mea hou a me nā rollbacks. ʻO ka mea nui, ʻo Helm wale nō e hoʻokomo i nā waiwai i makemake ʻia i loko o nā templates a laila hoʻopili iā lākou ma ke ʻano like me ka hana ʻana i ka hana kuʻuna. (E heluhelu hou e pili ana i ka hana a pau a pehea ʻoe e hoʻohana ai i kā mākou ʻatikala na Helm - kokoke. unuhi.). Nui nā ʻano palapala Helm i mākaukau e uhi ana i nā ʻano hana.
  3. Nā mea hana ʻokoʻa. Nui nā mea hana ʻē aʻe. ʻO ka mea maʻamau o lākou a pau, ʻo ia ka hoʻohuli ʻana i nā faila template i nā faila YAML hiki ke heluhelu ʻia e Kubernetes a laila hoʻohana iā lākou.

Ma kā mākou hana, hoʻohana mau mākou i nā palapala Helm no nā mea hana koʻikoʻi (no ka mea, ua mākaukau mua lākou, e maʻalahi ai ke ola) a me nā faila Kubernetes YAML "maʻemaʻe" no ka lawe ʻana i kā mākou mau noi ponoʻī.

Huki & Puhi

Ma kekahi o kaʻu mau moʻomanaʻo moʻomanaʻo hou, ua hoʻokomo wau i ka mea hana Weave Flux, ka mea e hiki ai iā ʻoe ke hoʻokomo i nā templates i ka waihona Git a hōʻano hou i ka hoʻoili ʻana ma hope o kēlā me kēia hana a paʻi paha o ka ipu. Hōʻike koʻu ʻike ʻo kēia mea hana kekahi o nā mea nui i ka hoʻolaha ʻana i ke ala huki, no laila e kuhikuhi pinepine wau iā ia. Inā makemake ʻoe e ʻike hou aʻe e pili ana i ka hoʻohana ʻana, maanei loulou i ka ʻatikala.

NB! ʻO nā pōmaikaʻi āpau o ka hoʻohana ʻana i GitOps e noho like no nā ala ʻelua.

ʻO ke ala huki huki

GitOps: Hoʻohālikelike o nā ʻano Huki a me nā ʻano Push

Hoʻokumu ʻia ke ala huki ma ka ʻoiaʻiʻo ua hoʻohana ʻia nā hoʻololi āpau mai loko mai o ka pūpū. Aia kekahi mea hoʻohana i loko o ka puʻupuʻu e nānā mau i nā waihona Registry Git a me Docker. Inā loaʻa kekahi hoʻololi iā lākou, hoʻonui ʻia ka mokuʻāina o ka hui i loko. Manaʻo ʻia kēia kaʻina hana he mea palekana loa, no ka mea, ʻaʻohe mea kūʻai aku i waho i loaʻa i nā kuleana luna hoʻomalu cluster.

Kākoʻo:

  1. ʻAʻohe kuleana o ka mea kūʻai aku o waho e hoʻololi i ka pūʻulu; ua ʻōwili ʻia nā mea hou mai loko mai.
  2. ʻAe kekahi mau mea hana iā ʻoe e hoʻonohonoho i nā hōʻano hou o ka pakuhi Helm a hoʻopili iā lākou i ka hui.
  3. Hiki ke nānā ʻia ka Docker Registry no nā mana hou. Inā loaʻa kahi kiʻi hou, hoʻonui ʻia ka waihona Git a me ka hoʻolālā ʻana i ka mana hou.
  4. Hiki ke hoʻokaʻawale ʻia nā mea hana huki ma nā inoa inoa like ʻole me nā waihona Git a me nā ʻae. Mahalo i kēia, hiki ke hoʻohana ʻia kahi hiʻohiʻona multitenant. No ka laʻana, hiki i ka hui A ke hoʻohana i ka namespace A, hiki i ka hui B ke hoʻohana i ka inoa inoa B, a hiki i ka hui hana ke hoʻohana i ka lewa honua.
  5. Ma keʻano he kūlana, he māmā loa nā mea hana.
  6. Hoʻohuiʻia me nā mea hana e like me ka mea hoʻohana Nā mea huna i hoʻopaʻa ʻia ʻo Bitnami, hiki ke mālama ʻia nā mea huna i loko o kahi waihona Git a kiʻi ʻia i loko o ka pūʻulu.
  7. ʻAʻohe pili i nā pipeline CD mai ka wā i hoʻokomo ʻia ai ka hoʻolaha ʻana i loko o ka pūʻulu.

Минусы:

  1. ʻOi aku ka paʻakikī o ka hoʻonohonoho ʻana i nā mea huna mai nā palapala Helm ma mua o nā mea maʻamau, no ka mea, pono lākou e hana mua ʻia ma ke ʻano o, e ʻōlelo, i hoʻopaʻa ʻia i nā mea huna, a laila decrypted e kahi mea hana kūloko, a ma hope wale nō e loaʻa ai i ka hāmeʻa huki. A laila hiki iā ʻoe ke holo i ka hoʻokuʻu ʻana ma Helm me nā waiwai i nā mea huna i kau ʻia. ʻO ke ala maʻalahi loa ka hana ʻana i kahi huna me nā waiwai Helm āpau i hoʻohana ʻia no ka waiho ʻana, decrypt a hāʻawi iā ia iā Git.
  2. Ke lawe ʻoe i kahi ala huki, lilo ʻoe i nakinaki i nā mea hana huki. Hoʻopili kēia i ka hiki ke hoʻopilikino i ke kaʻina hana i loko o kahi pūʻulu. No ka laʻana, paʻakikī ʻo Kustomize e ka mea pono e holo ma mua o ka hoʻokō ʻana i nā hoʻohālike hope loa iā Git. ʻAʻole wau e ʻōlelo ʻaʻole hiki iā ʻoe ke hoʻohana i nā mea hana kūʻokoʻa, akā ʻoi aku ka paʻakikī o ka hoʻohui ʻana i kāu kaʻina hana.

ʻO ke ala paʻi

GitOps: Hoʻohālikelike o nā ʻano Huki a me nā ʻano Push

I ka hoʻokokoke ʻana, hoʻomaka kahi ʻōnaehana waho (ka nui o nā pipeline CD) i ka hoʻopili ʻana i ka hui ma hope o ka hana ʻana i ka waihona Git a i ʻole inā kūleʻa ka pipeline CI mua. Ma kēia ala, hiki i ka ʻōnaehana ke komo i ka hui.

Плюсы:

  1. Hoʻoholo ʻia ka palekana e ka waihona Git a kūkulu i ka pipeline.
  2. ʻOi aku ka maʻalahi o ka hoʻohana ʻana i nā palapala Helm a kākoʻo i nā plugins Helm.
  3. ʻOi aku ka maʻalahi o ka mālama ʻana i nā mea huna no ka mea hiki ke hoʻohana ʻia nā mea huna i nā pipeline a hiki ke mālama ʻia i hoʻopili ʻia ma Git (ma muli o ka makemake o ka mea hoʻohana).
  4. ʻAʻohe pili i kahi mea hana kūikawā, no ka mea hiki ke hoʻohana ʻia kekahi ʻano.
  5. Hiki ke hoʻomaka ʻia nā mana hou o ka pahu e ka pipeline kūkulu.

Минусы:

  1. Aia ka ʻikepili komo puʻupuʻu i loko o ka ʻōnaehana kūkulu.
  2. ʻOi aku ka maʻalahi o ka hoʻonui ʻana i nā pahu hoʻolaha me kahi kaʻina huki.
  3. ʻO ka hilinaʻi nui i ka ʻōnaehana CD, ʻoiai ua kākau mua ʻia nā pipelines a mākou e pono ai no Gitlab Runners, a laila hoʻoholo ka hui e neʻe i Azure DevOps a i ʻole Jenkins ...

Nā hualoaʻa: Paʻi a Huki paha?

E like me ka mea maʻamau, loaʻa i kēlā me kēia ala kona mau pono a me nā pōʻino. ʻOi aku ka maʻalahi o kekahi mau hana me kekahi a ʻoi aku ka paʻakikī me kekahi. I ka wā mua, ke hana nei au i nā hoʻolaha me ka lima, akā ma hope o koʻu ʻike ʻana i kekahi mau ʻatikala e pili ana iā Weave Flux, ua hoʻoholo wau e hoʻokō i nā kaʻina GitOps no nā papahana āpau. No nā la'ana ma'amau, ua ma'alahi kēia, akā, ua ho'omaka au i nā pilikia me nā palapala Helm. I kēlā manawa, hāʻawi wale ʻo Weave Flux i kahi mana kumu o ka Helm Chart Operator, akā i kēia manawa ua ʻoi aku ka paʻakikī o kekahi mau hana ma muli o ka pono e hana lima i nā mea huna a hoʻopili iā lākou. Hiki iā ʻoe ke hoʻopaʻapaʻa ʻoi aku ka palekana o ke ala huki no ka mea ʻaʻole hiki ke ʻike ʻia nā hōʻoia o ka puʻupuʻu ma waho o ka pūʻulu, e ʻoi aku ka paʻa o ka hoʻoikaika ʻana.

Ma hope o kekahi noʻonoʻo, ua hiki iaʻu i ka hopena i manaʻo ʻole ʻia ʻaʻole pēlā. Inā mākou e kamaʻilio e pili ana i nā ʻāpana e pono ai ka pale ʻoi loa, e komo kēia papa inoa i kahi mālama huna, nā ʻōnaehana CI/CD, a me nā waihona Git. ʻO ka ʻike i loko o lākou he palupalu loa a pono ka pale ʻoi loa. Eia hou, inā komo kekahi i loko o kāu waihona Git a hiki iā ia ke pana i ka code ma laila, hiki iā lākou ke kau i nā mea a lākou e makemake ai (inā paha he huki a paʻi paha) a hoʻokomo i nā ʻōnaehana o ka cluster. No laila, ʻo nā ʻāpana koʻikoʻi e pono e pale ʻia ʻo ka waihona Git a me nā ʻōnaehana CI / CD, ʻaʻole nā ​​hōʻoia cluster. Inā loaʻa iā ʻoe nā kulekele hoʻonohonoho maikaʻi a me nā mana palekana no kēia mau ʻano o nā ʻōnaehana, a lawe wale ʻia nā hōʻoia cluster i loko o nā pipeline ma ke ʻano he mea huna, ʻaʻole i waiwai nui ka palekana hoʻohui ʻia o kahi ala huki e like me ka mea i manaʻo mua ʻia.

No laila, inā ʻoi aku ka ikaika o ka hana huki a ʻaʻole ia e hāʻawi i kahi pōmaikaʻi palekana, ʻaʻole pono anei ka hoʻohana ʻana i ke ala pana? Akā hiki i kekahi ke hoʻopaʻapaʻa i ka hoʻokokoke ʻana ua pili ʻoe i ka ʻōnaehana CD a, malia paha, ʻoi aku ka maikaʻi o ka hana ʻole i kēia i mea e maʻalahi ai ka hoʻokō ʻana i nā neʻe i ka wā e hiki mai ana.

I koʻu manaʻo (e like me nā manawa a pau), pono ʻoe e hoʻohana i ka mea kūpono loa no kahi hihia kūikawā a hui pū paha. ʻO wau iho, hoʻohana wau i nā ala ʻelua: Weave Flux no ka huki ʻana i ka hoʻopili ʻana i ka hapa nui o kā mākou lawelawe ponoʻī, a me kahi hoʻokokoke ʻana me ka Helm a me nā plugins, kahi e maʻalahi ai ka hoʻopili ʻana i nā palapala Helm i ka hui a hiki iā ʻoe ke hana i nā mea huna me ka maʻalahi. Manaʻo wau ʻaʻole loa e loaʻa kahi hopena hoʻokahi kūpono no nā hihia āpau, no ka mea aia mau ka nui o nā nuances a hilinaʻi lākou i ka noi kikoʻī. ʻO ka ʻōlelo ʻana, paipai nui wau iā GitOps - ʻoi aku ka maʻalahi o ke ola a hoʻomaikaʻi i ka palekana.

Manaʻo wau e kōkua kaʻu ʻike e pili ana i kēia kumuhana iā ʻoe e hoʻoholo i ke ʻano o ke ʻano kūpono no kāu ʻano hoʻolaha, a hauʻoli wau i ka lohe ʻana i kou manaʻo.

PS Note mai ka mea unuhi

ʻO ka ʻaoʻao haʻahaʻa o ka hiʻohiʻona huki he mea paʻakikī ke kau ʻana i nā hōʻike i loko o Git, akā ʻaʻohe mea i lalo e noho kaʻawale ka pipeline CD i ke kumu huki mai ka rollout a lilo maoli i pipeline ʻano. Hoʻopili mau. No laila, ʻoi aku ka nui o ka hoʻoikaika ʻana no ka hōʻiliʻili ʻana i ko lākou kūlana mai nā hoʻoili ʻana a me ke ʻano o ka loaʻa ʻana o nā logs/status, ʻoi aku ka maikaʻi me ka pili ʻana i ka ʻōnaehana CD.

Ma kēia ʻano, hiki i ke kumu hoʻohālikelike ke hāʻawi iā mākou i ka liʻiliʻi o kekahi mau mea hōʻoia o ka rollout, no ka mea hiki ke hoʻohālikelike ʻia ke ola o ka pipeline me ke ola o ka rollout.

Ua hoʻāʻo mākou i nā hiʻohiʻona ʻelua a hiki i nā hopena like me ka mea kākau o ka ʻatikala:

  1. He kūpono ke kumu hoʻohālike no mākou e hoʻonohonoho i nā mea hou o nā ʻōnaehana ʻōnaehana ma kahi nui o nā puʻupuʻu (e ʻike. 'atikala e pili ana i addon-operator).
  2. ʻO ke kumu hoʻohālike i hoʻokumu ʻia ma GitLab CI ua kūpono no ka ʻōwili ʻana i nā noi me ka hoʻohana ʻana i nā palapala Helm. I ka manawa like, nānā ʻia ka ʻōwili ʻana o nā hoʻolaha i loko o nā pipeline me ka hoʻohana ʻana i ka mea hana werf. Ma ke ala, i ka pōʻaiapili o kēia papahana a mākou, ua lohe mākou i ka "GitOps" mau i ka wā i kūkākūkā ai mākou i nā pilikia koʻikoʻi o nā ʻenekini DevOps ma kā mākou kū ma KubeCon Europe'19.

PPS mai ka mea 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.

Ke hoʻohana nei ʻoe iā GitOps?

  • ʻAe, huki hoʻokokoke

  • ʻAe, paʻi

  • ʻAe, huki + pahu

  • ʻAe, he mea ʻē aʻe

  • No

30 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