ProHoster > Pūnaewele > Nā Administration > Nā hoʻolālā hoʻolālā ma Kubernetes: ʻōwili, hana hou, uliuli/'ōmaʻomaʻo, canary, ʻeleʻele (hoʻāʻo A/B)
Nā hoʻolālā hoʻolālā ma Kubernetes: ʻōwili, hana hou, uliuli/'ōmaʻomaʻo, canary, ʻeleʻele (hoʻāʻo A/B)
Nānā unuhi: Hōʻike kēia hiʻohiʻona mai Weaveworks i nā hoʻolālā hoʻolālā noiʻi kaulana loa a hōʻike i ka hiki ke hoʻokō ʻia nā mea holomua loa me ka hoʻohana ʻana i ka mea hoʻohana Kubernetes Flagger. Ua kākau ʻia ma ka ʻōlelo maʻalahi a loaʻa nā kiʻi ʻike e hiki ai i nā ʻenekini hou ke hoʻomaopopo i ka pilikia.
Lawe ʻia ke kiʻikuhi mai loiloi hou ʻia hoʻolālā hoʻolālā i hana ʻia ma Container Solutions
ʻO kekahi o nā paʻakikī nui loa i ka hoʻomohala ʻana i nā noi kapua i kēia lā ʻo ka wikiwiki ʻana i ka hoʻolaha ʻana. Ma kahi ʻano microservices, hana nā mea hoʻomohala a hoʻolālā i nā noi modular holoʻokoʻa, e ʻae ana i nā hui like ʻole e kākau i nā code a hana i nā loli i ka noi.
Loaʻa nā pōmaikaʻi o nā hoʻolaha pōkole a ʻoi aku ka nui:
Hoʻemi ʻia ka manawa kūʻai.
Hiki wikiwiki nā hiʻohiʻona hou i nā mea hoʻohana.
Hiki wikiwiki ka manaʻo o ka mea hoʻohana i ka hui hoʻomohala. ʻO ia ke ʻano hiki i ka hui ke hoʻohui i nā hiʻohiʻona a hoʻoponopono wikiwiki i nā pilikia.
Piʻi ka manaʻo o ka mea hoʻomohala: ʻoi aku ka leʻaleʻa o nā hiʻohiʻona i ka hoʻomohala ʻana.
Akā i ka piʻi ʻana o ke alapine o ka hoʻokuʻu ʻana, hoʻonui ʻia ka hopena o ka hopena maikaʻi ʻole i ka hilinaʻi o ka noi a i ʻole ka ʻike mea hoʻohana. ʻO ia ke kumu he mea nui i nā hana a me nā hui DevOps ke kūkulu i nā kaʻina hana a mālama i nā hoʻolālā hoʻolālā i kahi ala e hōʻemi ai i ka pilikia i ka huahana a me nā mea hoʻohana. (Hiki iā ʻoe ke aʻo hou e pili ana i ka automation pipeline CI/CD maanei.)
Ma kēia pou, e kūkākūkā mākou i nā hoʻolālā hoʻolālā like ʻole ma Kubernetes, e komo pū ana me nā hoʻolaha ʻana a me nā ʻano ʻoi aku ka holomua e like me ka canary rollouts a me kā lākou mau ʻokoʻa.
Hoʻolālā hoʻolālā
Nui nā ʻano hoʻolālā hoʻolālā e hiki iā ʻoe ke hoʻohana ma muli o kāu pahuhopu. No ka laʻana, pono paha ʻoe e hoʻololi i kekahi kaiapuni no ka hoʻāʻo hou ʻana, a i ʻole i kahi ʻāpana o nā mea hoʻohana/mea kūʻai aku, a i ʻole pono ʻoe e hana i ka hoʻāʻo ʻana i nā mea hoʻohana ma mua o ka hana ʻana i kahi hiʻohiʻona. lehulehu.
ʻO ka holo ʻana (hoʻolili ʻana, "rolling" deployment)
ʻO kēia ka hoʻolālā hoʻolālā maʻamau ma Kubernetes. Hoʻololi ʻo ia, hoʻokahi i nā pods me ka mana kahiko o ka noi me nā pods me ka mana hou - me ka ʻole o ka cluster downtime.
Ke kali nei ʻo Kubernetes a mākaukau nā pods hou e hana (e nānā iā lākou me ka hoʻohana ʻana hoʻāʻo mākaukau), ma mua o kou hoʻomaka ʻana e ʻōwili i nā mea kahiko. Inā loaʻa kahi pilikia, hiki ke hoʻopau ʻia kēia hoʻololi hou me ka ʻole e hoʻōki i ka hui holoʻokoʻa. Ma ka faila YAML e wehewehe ana i ke ʻano o ka hoʻouka ʻana, hoʻololi ke kiʻi hou i ke kiʻi kahiko:
ʻO ka hoʻolālā hoʻolālā uliuli-'ōmaʻomaʻo (i kapa ʻia kekahi manawa ʻulaʻula/ʻeleʻele) e pili ana i ka hoʻoili like ʻana o nā mana kahiko ('ōmaʻomaʻo) a me nā mana hou (uliuli) o ka noi. Ma hope o ka hoʻolaha ʻana i nā mana ʻelua, hiki i nā mea hoʻohana maʻamau ke komo i ka ʻōmaʻomaʻo, ʻoiai e loaʻa ana ka polū no ka hui QA e hoʻokaʻawale i nā hoʻokolohua ma o kahi lawelawe ʻokoʻa a i ʻole ka hoʻouna ʻana i ke awa pololei:
Ma hope o ka hoʻāʻo ʻia ʻana o ka mana polū (hou) a ua ʻae ʻia ka hoʻokuʻu ʻana, ua hoʻololi ka lawelawe iā ia, a ua pelu ʻia ka mana ʻōmaʻomaʻo (kahiko).
Ua like ka canary rollouts me ka uliuli-'ōmaʻomaʻo rollouts, akā ʻoi aku ka maikaʻi o ka mana a me ka hoʻohana ʻana holomua ʻanuʻu ʻanuʻu. Aia kēia ʻano i nā hoʻolālā like ʻole, me ka hoʻokuʻu "stealth" a me ka hoʻāʻo A/B.
Hoʻohana ʻia kēia hoʻolālā i ka wā e pono ai e hoʻāʻo i kekahi mau hana hou, maʻamau ma ka hope o ka noi. ʻO ke kumu o ka hoʻokokoke ʻana, ʻo ia ka hana ʻana i ʻelua mau kikowaena like ʻole: lawelawe kekahi i nā mea hoʻohana a pau, a ʻo kekahi, me nā hana hou, lawelawe wale i kahi pūʻulu liʻiliʻi o nā mea hoʻohana, a laila hoʻohālikelike ʻia nā hopena o kā lākou hana. Inā hele nā mea āpau me ka ʻole o nā hewa, ua ʻōwili ʻia ka mana hou i ka ʻōnaehana holoʻokoʻa.
ʻOiai hiki ke hoʻokō wale ʻia kēia hoʻolālā me ka hoʻohana ʻana i nā Kubernetes, e hoʻololi ana i nā pods kahiko me nā mea hou, ʻoi aku ka maʻalahi a me ka maʻalahi o ka hoʻohana ʻana i kahi mesh lawelawe e like me Istio.
No ka laʻana, loaʻa paha iā ʻoe ʻelua mau hōʻike like ʻole ma Git: kahi hōʻike maʻamau me ka tag 0.1.0 a me kahi hōʻike canary me ka tag 0.2.0. Ma ka hoʻololi ʻana i nā paona ma ka Istio virtual gateway manifest, hiki iā ʻoe ke hoʻomalu i ka hoʻohele ʻana o ke kaʻa ma waena o kēia mau hoʻolālā ʻelua:
No kahi alakaʻi i kēlā me kēia ʻanuʻu i ka hoʻokō ʻana i nā deployments canary me ka hoʻohana ʻana iā Istio, ʻike ʻO GitOps Workflows me Istio. (Nānā. unuhi.: Ua unuhi pū mākou i nā mea pili e pili ana i nā canary rollouts i loko o Istio maanei.)
Hoʻokomo ʻia ʻo Canary me ka Weaveworks Flagger
Weaveworks Flagger hiki iā ʻoe ke hoʻokele maʻalahi a me ka hoʻokele canary rollouts.
Hana pū ʻo Flagger me lākou. Hoʻohana ʻo ia iā Istio a i ʻole AWS App Mesh e ala a hoʻololi i nā kaʻa, a me nā metric Prometheus e nānā i nā hopena. Eia kekahi, hiki ke hoʻonui ʻia ka nānā ʻana o nā hoʻolaha canary me nā webhooks e hana i nā hoʻokolohua ʻae, hoʻāʻo hoʻouka, a me nā ʻano loiloi ʻē aʻe.
Ma muli o ka hoʻolaha ʻana o Kubernetes a, inā pono, ka hoʻonui ʻia ʻana o nā pods (HPA), hana ʻo Flagger i nā pūʻulu o nā mea (kubernetes deployments, ClusterIP services and Istio or App Mesh virtual services) no ka nānā ʻana a hoʻokō i nā hoʻolaha canary:
Ke hoʻokō nei i ka loop control (ka loop hoʻomalu), Hoʻololi mālie ʻo Flagger i ke kaʻa i ke kikowaena canary, ʻoiai ke ana ʻana i nā metric hana nui e like me ka pākēneka o nā noi HTTP kūleʻa, ka lōʻihi o ka noi ʻana, a me ke olakino pod. Ma muli o ka KPI (Key Performance Indicators), e ulu a hāʻule paha ka canary a paʻi ʻia nā hopena o ka loiloi ma Slack. Hiki ke loaʻa kahi wehewehe a me ka hōʻike ʻana o kēia kaʻina hana ma ka mea Hoʻouna holomua no ka App Mesh.
Poʻeleʻele (huna) a i ʻole A/B deployments
ʻO ka hoʻolaha ʻana o Stealth kahi ʻano ʻē aʻe o ka hoʻolālā canary (ʻo ia, ma ke ala, hiki ke hana pū me Flagger). ʻO ka ʻokoʻa ma waena o ka stealth a me ka canary deployments ʻo ia ka hoʻopili ʻana o ka stealth me ka frontend ma mua o ka hope e like me ka hoʻomoe canary.
ʻO ka inoa ʻē aʻe no kēia hoʻolaha ʻana ʻo ia ka hoʻāʻo A/B. Ma kahi o ka hoʻolako ʻana i ka hiʻohiʻona hou i nā mea hoʻohana a pau, hāʻawi ʻia ia i kahi hapa palena wale nō o lākou. ʻO ka maʻamau, ʻaʻole ʻike kēia mau mea hoʻohana he mau mea hoʻāʻo paionia lākou (no laila ka huaʻōlelo "stealth deployment").
Ke hoʻohana nei i nā hoʻololi hana (hoʻololi hiʻohiʻona) a me nā mea hana ʻē aʻe, hiki iā ʻoe ke nānā i ke ʻano o ka hoʻohana ʻana o nā mea hoʻohana me ka hiʻohiʻona hou, inā paha lākou e hoʻopili ʻia e ia, a i ʻole e ʻike lākou i ka huikau o ka mea hoʻohana hou, a me nā ʻano metric ʻē aʻe.
Hoʻolālā hae a me A/B
Ma waho aʻe o ka hoʻokele ʻana i ke kaumaha, hiki iā Flagger ke hoʻokele i ke kaʻa i ke kikowaena canary e pili ana i nā ʻāpana HTTP. Ma ka hoʻāʻo ʻana A/B, hiki iā ʻoe ke hoʻohana i nā poʻomanaʻo HTTP a i ʻole nā kuki e huli i kahi ʻāpana kikoʻī o nā mea hoʻohana. ʻOi aku ka maikaʻi o kēia i ka hihia o nā noi frontend e koi ana i ka hoʻopaʻa ʻana i ka manawa i ke kikowaena (ka pilina pili). Hiki ke loaʻa ka ʻike hou aku ma ka palapala Flagger.
Mahalo ka mea kākau Stefan Prodan, Weaveworks engineer (a me ka mea nāna i hana iā Flagger), no kēia mau hiʻohiʻona hoʻolālā kupanaha.