ʻO kā mākou hoʻokō ʻana i ka Hoʻolaha Hoʻomau ma ka paepae o ka mea kūʻai aku

Ua hoʻonohonoho mākou ma True Engineering i kahi kaʻina no ka hoʻouna mau ʻana i nā mea hou i nā kikowaena mea kūʻai aku a makemake mākou e kaʻana like i kēia ʻike.

No ka hoʻomaka ʻana, ua kūkulu mākou i kahi ʻōnaehana pūnaewele no ka mea kūʻai aku a kau ʻia i loko o kā mākou hui Kubernetes ponoʻī. I kēia manawa ua neʻe kā mākou hāʻina haʻahaʻa kiʻekiʻe i ka paepae o ka mea kūʻai aku, no laila mākou i hoʻonohonoho ai i kahi kaʻina hana hoʻomau hoʻomau. Mahalo i kēia, ua wikiwiki mākou i ka manawa-i-makeke - ka hāʻawi ʻana i nā loli i ke kaiapuni huahana.

Ma kēia ʻatikala e kamaʻilio mākou e pili ana i nā pae āpau o ke kaʻina hana hoʻomau (CD) a i ʻole ka hāʻawi ʻana i nā mea hou i ka paepae o ka mea kūʻai:

  1. Pehea e hoʻomaka ai kēia hana?
  2. ka hoʻonohonoho ʻana me ka waihona Git o ka mea kūʻai aku,
  3. ka hui ʻana o ka hope a me ka hope,
  4. ka hoʻokomo ʻana i ka noi ma kahi ʻano hoʻāʻo,
  5. hoʻoili ʻakomi iā Prod.

E kaʻana like mākou i nā kikoʻī hoʻonohonoho ma ke ala.

ʻO kā mākou hoʻokō ʻana i ka Hoʻolaha Hoʻomau ma ka paepae o ka mea kūʻai aku

1. Hoʻomaka CD

Hoʻomaka ka hoʻomau ʻana me ka mea hoʻomohala e hoʻohuli nei i nā loli i ka lālā hoʻokuʻu o kā mākou waihona Git.

Ke holo nei kā mākou noi ma kahi hoʻolālā microservice a mālama ʻia kāna mau ʻāpana āpau i hoʻokahi waihona. Mahalo i kēia, hōʻiliʻili ʻia nā microservice a pau, ʻoiai inā ua loli kekahi o lākou.

Ua hoʻonohonoho mākou i ka hana ma hoʻokahi waihona no nā kumu he nui:

  • ʻO ka maʻalahi o ka hoʻomohala - ke hoʻomohala nei ka noi, no laila hiki iā ʻoe ke hana me nā code āpau i ka manawa hoʻokahi.
  • ʻO kahi pipeline CI / CD hoʻokahi e hōʻoiaʻiʻo ana i ka noi ʻana ma ke ʻano he ʻōnaehana hoʻokahi i hala i nā hoʻokolohua āpau a hāʻawi ʻia i ka ʻenehana hana o ka mea kūʻai.
  • Hoʻopau mākou i ka huikau i nā mana - ʻaʻole pono mākou e mālama i kahi palapala ʻāina o nā mana microservice a wehewehe i kona hoʻonohonoho ʻana no kēlā me kēia microservice ma nā palapala Helm.

2. Hoʻonohonoho pū me ka waihona Git o ke code kumu o ka mea kūʻai

Hoʻololi ʻia nā hoʻololi i hana ʻia me ka waihona Git o ka mea kūʻai aku. Ma laila ua hoʻonohonoho ʻia ka hui noiʻi, i hoʻomaka ʻia ma hope o ka hoʻonui ʻana i ka lālā, a me ka waiho ʻana i ka hoʻomau. Loaʻa nā kaʻina hana ʻelua i ko lākou kaiapuni mai kahi waihona Git.

ʻAʻole hiki iā mākou ke hana pololei me ka waihona o ka mea kūʻai aku no ka mea pono mākou i kā mākou wahi ponoʻī no ka hoʻomohala ʻana a me ka hoʻāʻo ʻana. Hoʻohana mākou i kā mākou waihona Git no kēia mau kumu - ua hoʻonohonoho ʻia me kā lākou waihona Git. Ke hoʻololi koke ka mea hoʻomohala i ka lālā kūpono o kā mākou waihona, hoʻopuka koke ʻo GitLab i kēia mau loli i ka mea kūʻai.

ʻO kā mākou hoʻokō ʻana i ka Hoʻolaha Hoʻomau ma ka paepae o ka mea kūʻai aku

Ma hope o kēia pono ʻoe e hana i ka hui. Loaʻa ia i kekahi mau pae: backend a me frontend hui, hoʻāʻo a hāʻawi i ka hana.

3. ʻO ka hui ʻana i ka hope a me ka hope

ʻO ke kūkulu ʻana i ka hope a me ka frontend ʻelua mau hana like i hana ʻia ma ka ʻōnaehana GitLab Runner. Aia kona hoʻonohonoho hui mua ma ka waihona hoʻokahi.

Aʻo no ke kākau ʻana i kahi palapala YAML no ke kūkulu ʻana ma GitLab.

Lawe ʻo GitLab Runner i ke code mai ka waihona i koi ʻia, hōʻuluʻulu iā ia me ke kauoha kūkulu Java a hoʻouna aku iā ia i ka papa inoa Docker. Maanei mākou e hōʻuluʻulu ai i ka hope a me ka mua, e kiʻi i nā kiʻi Docker, a mākou e hoʻokomo ai i kahi waihona ma ka ʻaoʻao o ka mea kūʻai. No ka mālama ʻana i nā kiʻi Docker a mākou e hoʻohana ai Gradle plugin.

Hoʻonohonoho mākou i nā mana o kā mākou mau kiʻi me ka mana hoʻokuʻu e paʻi ʻia ma Docker. No ka hana maʻalahi ua hana mākou i kekahi mau hoʻololi:

1. ʻAʻole i kūkulu hou ʻia nā pahu ma waena o ka hoʻāʻo ʻana a me ka ʻenehana hana. Hana mākou i nā parametrizations i hiki i ka pahu hoʻokahi ke hana me nā hoʻonohonoho āpau, nā ʻano hoʻololi kaiapuni a me nā lawelawe ma ka ʻenehana hoʻāʻo a i ka hana ʻana me ke kūkulu hou ʻole.

2. No ka hoʻonui ʻana i kahi noi ma o Helm, pono ʻoe e kuhikuhi i kona mana. Kūkulu mākou i ka hope, ka mua a me ka hōʻano hou i ka noi - ʻekolu mau hana like ʻole kēia, no laila he mea nui e hoʻohana i ka mana like o ka noi ma nā wahi āpau. No kēia hana, hoʻohana mākou i ka ʻikepili mai ka mōʻaukala Git, ʻoiai ʻo kā mākou K8S cluster hoʻonohonoho a me nā noi i loko o ka waihona Git like.

Loaʻa iā mākou ka mana noi mai nā hopena hoʻokō kauoha
git describe --tags --abbrev=7.

4. Hoʻopuka 'akomi i nā hoʻololi a pau i ke kaiapuni ho'āʻo (UAT)

ʻO ka hana hou aʻe i loko o kēia palapala kūkulu ʻana ʻo ia ka hoʻopou hou ʻana i ka pūʻulu K8S. Hana ʻia kēia inā ua kūkulu ʻia ka noi holoʻokoʻa a ua paʻi ʻia nā mea kiʻi āpau i ka Docker Registry. Ma hope o kēia, hoʻomaka ka hōʻano hou kaiapuni hoʻāʻo.

Hoʻomaka ka hoʻohana hou ʻana i ka cluster Helm Hou. Inā ʻaʻole i hele kekahi mea e like me ka hoʻolālā, e hoʻohuli ʻokoʻa ʻo Helm i kāna mau hoʻololi a pau. ʻAʻole pono e mālama ʻia kāna hana.

Hāʻawi mākou i ka hoʻonohonoho hui K8S me ka hui. No laila, ʻo ka hana aʻe e hoʻohou iā ia: configMaps, deployments, services, secrets a me nā hoʻonohonoho K8S ʻē aʻe a mākou i hoʻololi ai.

A laila holo ʻo Helm i kahi hōʻano hou o RollOut o ka noi ponoʻī ma ke kaiapuni hoʻāʻo. Ma mua o ka hoʻoili ʻia ʻana o ka noi i ka hana. Hana ʻia kēia i hiki i nā mea hoʻohana ke hoʻāʻo lima lima i nā hiʻohiʻona ʻoihana a mākou i hoʻokomo ai i loko o ke kaiapuni hoʻāʻo.

5. Hoʻokomo 'akomi i nā hoʻololi a pau i Prod

No ka kau ʻana i kahi mea hou i ka ʻenehana hana, pono ʻoe e kaomi i hoʻokahi pihi ma GitLab - a hāʻawi koke ʻia nā ipu i ka ʻenehana hana.

Hiki i ka noi like ke hana i nā kaiapuni like ʻole - hoʻāʻo a hana ʻole - me ke kūkulu hou ʻole. Hoʻohana mākou i nā mea like me ka hoʻololi ʻole i kekahi mea i ka noi, a hoʻonohonoho mākou i nā ʻāpana ma waho.

ʻO ka hoʻonohonoho maʻalahi o nā hoʻonohonoho noi e pili ana i ke kaiapuni kahi e hoʻokō ʻia ai ka noi. Ua hoʻoneʻe mākou i nā hoʻonohonoho kaiapuni āpau ma waho: ua hoʻohālikelike ʻia nā mea āpau ma o ka hoʻonohonoho K8S a me nā ʻāpana Helm. Ke kau ʻo Helm i kahi hui i ke kaiapuni hoʻāʻo, ua hoʻopili ʻia nā hoʻonohonoho hoʻāʻo iā ia, a ua pili nā hoʻonohonoho huahana i ke kaiapuni hana.

ʻO ka mea paʻakikī loa, ʻo ia ka hoʻohālikelike ʻana i nā lawelawe i hoʻohana ʻia a me nā ʻano like ʻole e hilinaʻi ana i ke kaiapuni, a unuhi iā lākou i loko o nā ʻano hoʻololi kaiapuni a me ka wehewehe-hoʻonohonoho ʻana o nā ʻāpana kaiapuni no Helm.

Hoʻohana nā hoʻonohonoho noiʻi i nā loli kaiapuni. Hoʻonohonoho ʻia kā lākou waiwai i loko o nā ipu me ka hoʻohana ʻana i ka configmap K8S, i hoʻohālikelike ʻia me ka hoʻohana ʻana i nā templates Go. No ka laʻana, hiki ke hana ʻia e like me kēia ka hoʻonohonoho ʻana i kahi hoʻololi kaiapuni i ka inoa domain:

APP_EXTERNAL_DOMAIN: {{ (pluck .Values.global.env .Values.app.properties.app_external_domain | first) }}

.Values.global.env - mālama kēia ʻano hoʻololi i ka inoa o ke kaiapuni (prod, stage, UAT).
.Values.app.properties.app_external_domain – i loko o kēia ʻano hoʻololi mākou e hoʻonoho i ka waihona i makemake ʻia ma ka faila .Values.yaml

Ke hoʻohou nei i kahi noi, hana ʻo Helm i kahi faila configmap.yaml mai nā templates a hoʻopiha i ka waiwai APP_EXTERNAL_DOMAIN me ka waiwai i makemake ʻia e pili ana i ke kaiapuni kahi e hoʻomaka ai ka hoʻohou noi. Ua hoʻonoho ʻia kēia ʻano hoʻololi i loko o ka ipu. Hiki ke kiʻi ʻia mai ka palapala noi, no laila e loaʻa i kēlā me kēia kaiapuni noi kahi waiwai ʻokoʻa no kēia ʻano.

I kēia mau lā, ua ʻike ʻia ke kākoʻo K8S ma Spring Cloud, me ka hana pū me configMaps: Puna Kapua Kubernetes. ʻOiai e ulu ikaika ana ka papahana a hoʻololi nui, ʻaʻole hiki iā mākou ke hoʻohana iā ia i ka hana. Akā ke nānā pono nei mākou i kona kūlana a hoʻohana iā ia i nā hoʻonohonoho DEV. Ke hoʻopaʻa koke ʻia, e hoʻololi mākou mai ka hoʻohana ʻana i nā mea hoʻololi kaiapuni iā ​​ia.

Hōʻuluʻulu

No laila, hoʻonohonoho ʻia ka hoʻomau mau ʻana a hana. Loaʻa nā mea hou a pau me hoʻokahi kī kī. ʻO ka hāʻawi ʻana i nā hoʻololi i ke kaiapuni huahana. A ʻo ka mea nui, ʻaʻole hoʻopau nā mea hou i ka ʻōnaehana.

ʻO kā mākou hoʻokō ʻana i ka Hoʻolaha Hoʻomau ma ka paepae o ka mea kūʻai aku

Nā hoʻolālā o ka wā e hiki mai ana: ka neʻe ʻana i ka waihona waihona

Ua noʻonoʻo mākou e pili ana i ka hoʻonui ʻana i ka waihona a me ka hiki ke hoʻohuli i kēia mau loli. Ma hope o nā mea a pau, ʻelua mau ʻano like ʻole o ka noi e holo nei i ka manawa like: ke holo nei ka mea kahiko, a ke kū nei ka mea hou. A e hoʻopau mākou i ka mea kahiko inā maopopo mākou e hana ana ka mana hou. Pono ka neʻe ʻana o ka waihona e ʻae iā ʻoe e hana me nā mana ʻelua o ka noi.

No laila, ʻaʻole hiki iā mākou ke hoʻololi wale i ka inoa kolamu a i ʻole nā ​​​​ʻikepili ʻē aʻe. Akā, hiki iā mākou ke hana i kahi kolamu hou, kope i ka ʻikepili mai ke kolamu kahiko i loko a kākau i nā mea hoʻowalewale, i ka wā e hoʻonui ai i ka ʻikepili, e kope a hoʻohou iā ia i kahi kolamu ʻē aʻe. A ma hope o ka holomua ʻana o ka mana hou o ka noi, ma hope o ka manawa kākoʻo o ka hoʻomaka ʻana, hiki iā mākou ke hoʻopau i ke kolamu kahiko a me ke kumu i lilo i mea pono ʻole.

Inā ʻaʻole holo pololei ka mana hou o ka palapala noi, hiki iā mākou ke ʻōwili hou i ka mana mua, me ka mana o ka waihona mua. I ka pōkole, e ʻae kā mākou hoʻololi iā ʻoe e hana like me kekahi mau mana o ka noi.

Hoʻolālā mākou e hoʻokaʻawale i ka neʻe ʻana o ka waihona ma o ka hana K8S, e hoʻohui iā ia i ke kaʻina CD. A e kaʻana like mākou i kēia ʻike ma Habré.

Source: www.habr.com

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