Ke kau nei i nā noi iā VM, Nomad a me Kubernetes

Aloha kākou! ʻO Pavel Agaletsky koʻu inoa. Hana wau ma ke ʻano he alakaʻi hui i kahi hui e hoʻomohala i ka ʻōnaehana lawe Lamoda. I ka makahiki 2018, ua ʻōlelo wau ma ka hālāwai HighLoad++, a i kēia lā makemake wau e hōʻike i kahi kope o kaʻu hōʻike.

Hoʻolaʻa ʻia kaʻu kumuhana i ka ʻike o kā mākou hui i ka lawe ʻana i nā ʻōnaehana a me nā lawelawe i nā kaiapuni like ʻole. E hoʻomaka ana mai ko mākou wā prehistoric, i ka wā i hoʻonoho ai mākou i nā ʻōnaehana āpau i nā kikowaena virtual maʻamau, e hoʻopau ana me ka neʻe lohi ʻana mai Nomad a hiki i ke kau ʻana ma Kubernetes. E haʻi wau iā ʻoe i ke kumu i hana ai mākou a me nā pilikia i loaʻa iā mākou i ke kaʻina hana.

Ke hoʻolālā nei i nā noi iā VM

E hoʻomaka me ka ʻoiaʻiʻo ʻo 3 mau makahiki i hala aku nei ua kau ʻia nā ʻōnaehana a me nā lawelawe āpau o ka hui ma nā kikowaena virtual maʻamau. Ma keʻano loea, ua hoʻonohonoho ʻia ma ke ʻano i mālama ʻia a hōʻuluʻulu ʻia nā code a pau no kā mākou ʻōnaehana me ka hoʻohana ʻana i nā mea hana hui maʻalahi, me ka hoʻohana ʻana i nā jenkins. Ke hoʻohana nei iā Ansible, ua ʻōwili ʻia ia mai kā mākou ʻōnaehana mana mana i nā kikowaena virtual. Eia kekahi, ua hoʻonohonoho ʻia kēlā me kēia ʻōnaehana i kā mākou hui i ka liʻiliʻi o 2 mau kikowaena: hoʻokahi o lākou ma ke poʻo, ʻo ka lua ma ka huelo. Ua like loa kēia mau ʻōnaehana ʻelua i kekahi i ko lākou mau hoʻonohonoho āpau, mana, hoʻonohonoho, etc. ʻO ka ʻokoʻa wale nō ma waena o lākou ʻo ia ka loaʻa ʻana o ke poʻo i nā mea hoʻohana, ʻoiai ʻaʻole loaʻa ka huelo i nā mea hoʻohana.

No ke aha i hana ʻia ai kēia?

I ka wā i hoʻokuʻu ai mākou i nā hoʻokuʻu hou o kā mākou noi, makemake mākou e hōʻoia i ka holo ʻole ʻana, ʻo ia hoʻi, me ka ʻike ʻole ʻia o nā hopena no nā mea hoʻohana. Ua hoʻokō ʻia kēia ma muli o ka hoʻokuʻu hou ʻia ʻana me ka hoʻohana ʻana iā Ansible i ʻōwili ʻia i ka huelo. Ma laila, hiki i ka poʻe i komo i ka hoʻolālā ke nānā a hōʻoia i ka maikaʻi o nā mea a pau: e hana ana nā metric a pau, nā ʻāpana a me nā noi; hoʻomaka ʻia nā palapala e pono ai. Ma hope wale nō o ko lākou manaʻo ʻana ua maikaʻi nā mea a pau, ua hoʻololi ʻia ke kaʻa. Ua hoʻomaka ʻo ia e hele i ke kikowaena ma mua o ka huelo. A ʻo ka mea ma mua ke poʻo i noho me ka ʻole o ka hoʻohana ʻana i ka mea hoʻohana, ʻoiai e loaʻa ana ka mana mua o kā mākou noi ma luna.

No laila ua maʻalahi ia no nā mea hoʻohana. No ka mea, hikiwawe ka hoʻololi ʻana, ʻoiai ke hoʻololi wale nei i ka mea kaulike. Hiki iā ʻoe ke huli hou i ka mana mua ma ka hoʻololi wale ʻana i ka mea kaulike. Hiki iā mākou ke hōʻoia i ka hiki ke hana i ka noi ma mua o ka loaʻa ʻana o nā mea hoʻohana, ʻoi aku ka maʻalahi.

He aha nā pōmaikaʻi a mākou i ʻike ai ma kēia mau mea a pau?

  1. ʻO ka mea mua, ua lawa hana wale ia. Hoʻomaopopo ka poʻe a pau i ka hana ʻana o ia ʻano hoʻolālā, no ka mea, ʻo ka hapa nui o ka poʻe i kau ʻia i nā kikowaena virtual maʻamau.
  2. Ua lawa kēia kū mālie, no ka mea he maʻalahi ka ʻenehana hoʻolaha, hoʻāʻo ʻia e nā tausani o nā hui. Hoʻonohonoho ʻia nā miliona o nā kikowaena i kēia ala. He paʻakikī ke uhaki i kekahi mea.
  3. A hiki iā mākou ke loaʻa nā hoʻoili atomika. Hoʻohana ʻia nā mea hoʻohana i ka manawa like, me ka ʻike ʻole ʻia o ka hoʻololi ʻana ma waena o ka mana kahiko a me ka mea hou.

Akā, ua ʻike mākou i kekahi mau hemahema ma kēia mau mea a pau.

  1. Ma waho aʻe o ke kaiapuni hana, ke kaiapuni hoʻomohala, aia nā wahi ʻē aʻe. No ka laʻana, qa a me ka preproduction. I kēlā manawa he nui nā kikowaena a ma kahi o 60 mau lawelawe. No kēia kumu i pono ai no kēlā me kēia lawelawe, mālama i ka mana hou loa no ia mīkini uila. Eia kekahi, inā makemake ʻoe e hoʻonui i nā hale waihona puke a hoʻokomo i nā hilinaʻi hou, pono ʻoe e hana i kēia ma nā wahi āpau. Pono ʻoe e hoʻonohonoho i ka manawa āu e hoʻokau ai i ka mana hou aʻe o kāu noi me ka manawa e hana ai nā devops i nā hoʻonohonoho kaiapuni kūpono. Ma kēia hihia, maʻalahi ke komo i kahi kūlana e ʻokoʻa ʻē aʻe ko mākou kaiapuni i nā kaiapuni āpau i ka manawa hoʻokahi. No ka laʻana, i loko o kahi kaiapuni QA e loaʻa kekahi mau ʻano o nā hale waihona puke, a ma kahi ʻano hana e loaʻa nā ʻano like ʻole, e alakaʻi i nā pilikia.
  2. Paʻakikī i ka hoʻonui ʻana i nā hilinaʻi kāu noi. ʻAʻole pili iā ʻoe, akā i ka hui ʻē aʻe. ʻO ia, mai ka hui devops e mālama nei i nā kikowaena. Pono ʻoe e hāʻawi iā lākou i kahi hana kūpono a me ka wehewehe ʻana i kāu mea e makemake ai e hana.
  3. I kēlā manawa, makemake mākou e hoʻokaʻawale i nā monoliths nui nui i loaʻa iā mākou i nā lawelawe liʻiliʻi kaʻawale, ʻoiai ua hoʻomaopopo mākou e nui aʻe ana o lākou. I kēlā manawa, ua loaʻa iā mākou ma mua o 100. No kēlā me kēia lawelawe hou, pono ia e hana i kahi mīkini virtual hou kaʻawale, pono hoʻi e mālama ʻia a kau ʻia. Eia kekahi, ʻaʻole pono ʻoe i hoʻokahi kaʻa, akā ma ka liʻiliʻi ʻelua. Hoʻohui ʻia i kēia mau mea āpau ʻo ke kaiapuni QA. Hoʻopilikia kēia i nā pilikia a paʻakikī iā ʻoe ke kūkulu a holo i nā ʻōnaehana hou. paʻakikī, pipiʻi a lōʻihi ka hana.

No laila, ua hoʻoholo mākou e ʻoi aku ka maʻalahi o ka neʻe ʻana mai ka hoʻohana ʻana i nā mīkini virtual maʻamau i ka hoʻopololei ʻana i kā mākou mau noi i loko o kahi pahu docker. Inā loaʻa iā ʻoe ka docker, pono ʻoe i kahi ʻōnaehana hiki ke holo i ka noi i loko o kahi pūpū, no ka mea ʻaʻole hiki iā ʻoe ke hoʻāla wale i kahi pahu. I ka maʻamau, makemake ʻoe e mālama i ka nui o nā ipu i hāpai ʻia i hiki ke hāpai ʻokoʻa. No kēia kumu, pono mākou e koho i kahi ʻōnaehana mana.

Ua noʻonoʻo mākou no ka manawa lōʻihi e hiki ke lawe. ʻO ka mea ʻoiaʻiʻo, i kēlā manawa kēia hoʻonohonoho hoʻonohonoho ma nā kikowaena virtual maʻamau ua ʻano kahiko, ʻoiai ʻaʻole lākou i nā mana hou o nā ʻōnaehana hana. I kekahi manawa, aia ʻo FreeBSD, ʻaʻole maʻalahi ke kākoʻo. Ua hoʻomaopopo mākou pono mākou e neʻe i ka docker i ka hikiwawe loa. Ua nānā kā mākou devops i kā lākou ʻike i kēia manawa me nā ʻano hoʻonā like ʻole a koho i kahi ʻōnaehana e like me Nomad.

E hoʻololi iā Nomad

He huahana ʻo Nomad na HashiCorp. Ua ʻike ʻia lākou no kā lākou mau hoʻonā ʻē aʻe:

Ke kau nei i nā noi iā VM, Nomad a me Kubernetes

"Kanela" he mea hana no ka ʻike lawelawe.

"Terraform" - he ʻōnaehana no ka mālama ʻana i nā kikowaena e hiki ai iā ʻoe ke hoʻonohonoho iā lākou ma o ka hoʻonohonoho ʻana, ka mea i kapa ʻia ʻo infrastructure-as-a-code.

"Waewaewa" hiki iā ʻoe ke kau i nā mīkini virtual ma ka ʻāina a i ʻole ma ke ao ma o nā faila hoʻonohonoho kikoʻī.

Ua like ʻo Nomad i kēlā manawa i kahi hopena maʻalahi hiki ke hoʻololi koke ʻia me ka ʻole o ka hoʻololi ʻana i ka ʻōnaehana holoʻokoʻa. Eia kekahi, maʻalahi loa ke aʻo ʻana. ʻO ia ke kumu i koho ai mākou i ʻōnaehana kānana no kā mākou ipu.

He aha kāu e pono ai e kau i kāu ʻōnaehana iā Nomad?

  1. ʻO ka mea mua āu e pono ai kiʻi docker kāu noi. Pono ʻoe e kūkulu a waiho i loko o ka waihona kiʻi docker. I kā mākou hihia, he mea artifactory kēia - he ʻōnaehana e hiki ai iā ʻoe ke kiola i nā ʻano mea like ʻole o nā ʻano like ʻole i loko. Hiki iā ia ke mālama i nā waihona, nā kiʻi docker, nā pūʻolo PHP haku mele, nā pūʻolo NPM, a pēlā aku.
  2. Pono pū kekahi waihona hoʻonohonoho, e haʻi iā Nomad i ka mea, i hea a me ka nui āu e makemake ai e kau.

Ke kamaʻilio nei mākou e pili ana iā Nomad, hoʻohana ia i ka ʻōlelo HCL e like me kāna ʻano faila ʻike, ʻo ia hoʻi ʻŌlelo hoʻonohonoho HashiCorp. He superset kēia o Yaml e hiki ai iā ʻoe ke wehewehe i kāu lawelawe ma nā ʻōlelo Nomad.

Ke kau nei i nā noi iā VM, Nomad a me Kubernetes

Hāʻawi ia iā ʻoe e haʻi i ka nui o nā ipu āu e makemake ai e kau, mai nā kiʻi e hāʻawi i nā ʻāpana like ʻole iā lākou i ka wā o ka hoʻolaha ʻana. No laila, hānai ʻoe i kēia faila iā Nomad, a hoʻokuʻu i nā ipu i ka hana e like me ia.

I kā mākou hihia, ua ʻike mākou ʻaʻole maʻalahi ka kākau ʻana i nā faila HCL like loa no kēlā me kēia lawelawe, no ka mea he nui nā lawelawe a i kekahi manawa makemake ʻoe e hoʻonui iā lākou. ʻAʻole hoʻokahi lawelawe i kau ʻia i hoʻokahi manawa, akā i nā ʻano like ʻole. No ka laʻana, ʻo kekahi o nā ʻōnaehana i loaʻa iā mākou i ka hana ʻoi aku ma mua o 100 mau manawa i ka hana. Holo lākou mai nā kiʻi like, akā ʻokoʻa i nā hoʻonohonoho hoʻonohonoho a me nā faila hoʻonohonoho.

No laila, ua hoʻoholo mākou he mea maʻalahi ia no mākou e mālama i kā mākou mau faila hoʻonohonoho āpau no ka waiho ʻana i kahi waihona maʻamau. Ma kēia ala ua ʻike ʻia lākou: ua maʻalahi lākou e mālama a ʻike mākou i nā ʻōnaehana i loaʻa iā mākou. Inā pono, maʻalahi hoʻi e hoʻololi a hoʻololi i kekahi mea. ʻAʻole paʻakikī ka hoʻohui ʻana i kahi ʻōnaehana hou - pono ʻoe e hana i kahi faila hoʻonohonoho i loko o ka papa kuhikuhi hou. Aia i loko o ia nā faila: service.hcl, aia kahi wehewehe o kā mākou lawelawe, a me kekahi mau faila env e ʻae i kēia lawelawe ponoʻī, i hoʻonohonoho ʻia i ka hana, e hoʻonohonoho ʻia.

Ke kau nei i nā noi iā VM, Nomad a me Kubernetes

Eia nō naʻe, ua kau ʻia kekahi o kā mākou ʻōnaehana i ka hana ʻana ʻaʻole i hoʻokahi kope, akā i nā mea he nui i ka manawa hoʻokahi. No laila, ua hoʻoholo mākou he mea maʻalahi iā mākou ke mālama ʻaʻole i nā configs i ko lākou ʻano maʻemaʻe, akā i kā lākou ʻano hoʻohālike. A koho mākou jinja 2. Ma kēia ʻano, mālama mākou i nā configs o ka lawelawe ponoʻī a me nā faila env e pono ai no ia.

Eia hou, ua kau mākou i loko o ka waihona i kahi palapala hoʻolālā maʻamau i nā papahana a pau, e hiki ai iā ʻoe ke hoʻomaka a hoʻokau i kāu lawelawe i ka hana, i loko o ka wahi i makemake ʻia, i ka pahuhopu i makemake ʻia. I ka wā i hoʻohuli ai mākou i kā mākou HCL config i kahi hoʻohālikelike, a laila ua hoʻomaka ka faila HCL, kahi ma mua o kahi hoʻonohonoho Nomad maʻamau, i kēia hihia ua hoʻomaka e nānā ʻokoʻa.

Ke kau nei i nā noi iā VM, Nomad a me Kubernetes

ʻO ia hoʻi, ua hoʻololi mākou i kekahi mau wahi hoʻololi i hoʻokomo ʻia i lawe ʻia mai nā faila env a i ʻole nā ​​kumu ʻē aʻe. Eia kekahi, ua loaʻa iā mākou ka manawa e hōʻiliʻili i nā faila HCL me ka ikaika, ʻo ia hoʻi, hiki iā mākou ke hoʻohana i nā hoʻokomo ʻokoʻa maʻamau. No ke kākoʻo ʻana o jinja i nā puka lou a me nā kūlana, hiki iā ʻoe ke hana i nā faila hoʻonohonoho ma laila, e loli ana ma muli o kahi āu e kau ai i kāu mau noi.

No ka laʻana, makemake ʻoe e kau i kāu lawelawe i ka hana mua a me ka hana. E ʻōlelo mākou i ka pre-production ʻaʻole ʻoe makemake e holo i nā cron scripts, akā makemake wale e ʻike i ka lawelawe ma kahi kikowaena ʻokoʻa e hōʻoia i ka hana ʻana. No kēlā me kēia mea e hoʻokau i ka lawelawe, ʻike maʻalahi ke kaʻina hana. ʻO nā mea a pau āu e hana ai, ʻo ka hoʻokō ʻana i ka faila deploy.sh, e kuhikuhi i ka lawelawe āu e makemake ai e kau a i ka pahuhopu. No ka laʻana, makemake ʻoe e kau i kahi ʻōnaehana i Russia, Belarus a i ʻole Kazakhstan. No ka hana ʻana i kēia, e hoʻololi wale i kekahi o nā ʻāpana, a loaʻa iā ʻoe ka faila hoʻonohonoho kūpono.

Ke kau ʻia nei ka lawelawe Nomad i kāu puʻupuʻu, ua like ia me kēia.

Ke kau nei i nā noi iā VM, Nomad a me Kubernetes

ʻO ka mea mua, pono ʻoe i kahi ʻano balancer ma waho, e loaʻa i nā mea hoʻohana āpau. E hana pū ʻo ia me ke Kanikela a ʻike mai ia mea ma hea, ma ka node hea, ma kahi IP address kahi lawelawe kikoʻī e pili ana i kahi inoa inoa. ʻO nā lawelawe ma ke Kanikela mai Nomad ponoʻī. No ka mea he mau huahana kēia mai ka hui like, pili loa lākou i kekahi i kekahi. Hiki iā mākou ke ʻōlelo iā Nomad ma waho o ka pahu hiki ke hoʻopaʻa inoa i nā lawelawe āpau i hoʻokuʻu ʻia i loko o ka Consul.

I ka manawa e ʻike ai kāu mea kaulike hoʻoili mua i ka lawelawe e hoʻouna aku ai i ke kaʻa, e hoʻouna aku ia i ka pahu kūpono a i ʻole nā ​​pahu he nui e pili ana i kāu noi. Ma keʻano maʻamau, pono nō hoʻi e noʻonoʻo e pili ana i ka palekana. ʻOiai e holo ana nā lawelawe āpau ma nā mīkini virtual like i loko o nā pahu, pono kēia e pale i ke komo manuahi mai kekahi lawelawe i kekahi. Ua hoʻokō mākou i kēia ma o ka māhele ʻana. Ua hoʻokuʻu ʻia kēlā me kēia lawelawe i kāna pūnaewele virtual ponoʻī, kahi i kuhikuhi ʻia ai nā lula a me nā lula no ka ʻae ʻana / hōʻole i ke komo ʻana i nā ʻōnaehana a me nā lawelawe ʻē aʻe. Hiki ke loaʻa iā lākou ma loko o kēia pūʻulu a ma waho. No ka laʻana, inā makemake ʻoe e pale i kahi lawelawe mai ka hoʻopili ʻana i kahi waihona kikoʻī, hiki ke hana i kēia ma o ka hoʻokaʻawale ʻana i ka pae pūnaewele. ʻO ia hoʻi, ma ke kuhi hewa ʻole, ʻaʻole hiki iā ʻoe ke hoʻohui i kahi hoʻāʻo ʻana i kāu ʻikepili hana.

ʻEhia ka nui o ka hoʻololi ʻana iā mākou e pili ana i nā kumuwaiwai kanaka?

ʻO ka hoʻololi o ka hui holoʻokoʻa iā Nomad ma kahi o 5-6 mau mahina. Ua neʻe mākou ma ke ʻano lawelawe ma ka lawelawe, akā ma kahi wikiwiki wikiwiki. Pono kēlā me kēia hui e hana i kā lākou mau ipu no nā lawelawe.

Ua ʻae mākou i kahi ala e kuleana ai kēlā me kēia hui i nā kiʻi docker o kā lākou ʻōnaehana kūʻokoʻa. Hāʻawi ʻo DevOps i nā ʻōnaehana maʻamau e pono ai no ka hoʻolaha ʻana, ʻo ia hoʻi, ke kākoʻo no ka pūʻulu ponoʻī, kākoʻo no ka ʻōnaehana CI, a pēlā aku. A i kēlā manawa, ua hoʻoneʻe ʻia mākou ma mua o 60 mau ʻōnaehana i Nomad, ʻo ia ka nui o 2 tausani pahu.

ʻO Devops ke kuleana no ka ʻōnaehana maʻamau o nā mea āpau e pili ana i ka waiho ʻana a me nā kikowaena. A ʻo kēlā me kēia hui hoʻomohala, ʻo ia ke kuleana no ka hoʻokō ʻana i nā ipu no kāna ʻōnaehana kikoʻī, ʻoiai ʻo ia ka hui e ʻike i ka mea e pono ai i loko o kahi pahu.

Nā kumu no ka haʻalele ʻana iā Nomad

He aha nā pōmaikaʻi i loaʻa iā mākou ma ka hoʻololi ʻana i ka hoʻohana ʻana me Nomad a me docker, a me nā mea ʻē aʻe?

  1. Mākou hāʻawi ʻia nā kūlana like no nā kaiapuni a pau. I ka hoʻomohala ʻana, QA environment, pre-production, production, hoʻohana ʻia nā kiʻi pahu like, me nā hilinaʻi like. No laila, ʻaʻohe ou manawa e hoʻopau ai i ka hana ʻana ʻaʻole ia ka mea āu i hoʻāʻo mua ai ma ka ʻāina a i ʻole i kāu wahi hoʻāʻo.
  2. Ua ʻike pū mākou ua lawa maʻalahi e hoʻohui i kahi lawelawe hou. Mai kahi manaʻo hoʻolālā, hoʻomaka ʻia nā ʻōnaehana hou me ka maʻalahi loa. E hele wale i ka waihona e mālama ai i nā configs, e hoʻohui i kahi config hou no kāu ʻōnaehana ma laila, a pau ʻoe. Hiki iā ʻoe ke kau i kāu ʻōnaehana i ka hana me ka ʻole o ka hoʻoikaika ʻana mai devops.
  3. a pau nā faila hoʻonohonoho i hoʻokahi waihona maʻamau ua hoʻololi ʻia i ka nānā ʻana. I ka manawa a mākou i kau ai i kā mākou ʻōnaehana me ka hoʻohana ʻana i nā kikowaena virtual, ua hoʻohana mākou iā Ansible, kahi o nā configs i loko o ka waihona like. Eia nō naʻe, no ka hapa nui o nā mea hoʻomohala ua ʻoi aku ka paʻakikī o kēia hana. Eia ka nui o nā configs a me nā code āu e pono ai e hoʻohui e hoʻokau i ka lawelawe. Eia kekahi, maʻalahi loa nā devops e hoʻoponopono a hoʻololi paha. I ka hihia o nā hoʻololi, no ka laʻana, i kahi mana hou o Nomad, hiki iā lākou ke lawe a hoʻonui nui i nā faila hana a pau ma kahi hoʻokahi.

Akā ua loaʻa iā mākou kekahi mau hemahema:

Ua ʻike ʻia ʻo mākou ʻaʻole hiki ke hoʻokō i nā hoʻolaha maʻalahi ma ka hihia o Nomad. I ka ʻōwili ʻana i nā ipu ma lalo o nā kūlana like ʻole, hiki ke holo, a ʻike ʻia ʻo Nomad ma ke ʻano he ipu mākaukau no ka loaʻa ʻana o ke kaʻa. Ua hana ʻia kēia ma mua o ka hoʻomaka ʻana o ka noi i loko. No kēia kumu, ua hoʻomaka ka ʻōnaehana e hana i nā hewa 500 no ka manawa pōkole, no ka mea, ua hoʻomaka ka hele ʻana i kahi pahu i mākaukau ʻole e ʻae.

Ua hālāwai mākou me kekahi nā ʻōpala. ʻO ka pōʻino koʻikoʻi ʻo ia ʻaʻole mālama maikaʻi ʻo Nomad i kahi hui nui inā loaʻa iā ʻoe nā ʻōnaehana a me nā ipu. Ke makemake ʻoe e lawe i kekahi o nā kikowaena i hoʻokomo ʻia i loko o ka pūʻulu Nomad no ka mālama ʻana, aia kahi kūlana kiʻekiʻe loa ʻaʻole e manaʻo maikaʻi ka puʻupuʻu a hāʻule. Hiki paha i kekahi mau ipu, no ka laʻana, hāʻule a ala ʻole - e uku nui kēia iā ʻoe ma hope inā loaʻa kāu ʻōnaehana hana āpau i kahi hui i mālama ʻia e Nomad.

No laila ua hoʻoholo mākou e noʻonoʻo i kahi e hele ai ma hope. I kēlā manawa, ua ʻike nui mākou i ka mea a mākou i makemake ai e hoʻokō. ʻO ia: makemake mākou i ka hilinaʻi, ʻoi aku ka liʻiliʻi o nā hana ma mua o ka hāʻawi ʻana o Nomad, a me kahi ʻōnaehana ʻoi aʻe a paʻa.

Ma kēia ʻano, ua hāʻule kā mākou koho ma Kubernetes ma ke ʻano he kahua kaulana loa no ka hoʻolaha ʻana i nā pūʻulu. ʻOi aku ka nui o ka nui a me ka helu o kā mākou mau ipu. No ia mau kumu, ʻo Kubernetes ka ʻōnaehana kūpono loa a mākou e nānā ai.

Hoʻololi i nā Kubernetes

E haʻi iki wau iā ʻoe e pili ana i nā manaʻo kumu o Kubernetes a me ka ʻokoʻa o lākou mai Nomad.

Ke kau nei i nā noi iā VM, Nomad a me Kubernetes

ʻO ka mea mua, ʻo ka manaʻo kumu ma Kubernetes ka manaʻo o pod. Kau he pūʻulu o hoʻokahi a ʻoi aʻe paha ipu e holo like mau ana. A hana mau lākou me he mea lā ma ka mīkini virtual hoʻokahi. Hiki ke loaʻa iā lākou kekahi i kekahi ma o IP 127.0.0.1 ma nā awa like ʻole.

E noʻonoʻo kākou he polokalamu PHP kāu i loaʻa i ka nginx a me php-fpm - ka papahana maʻamau. ʻO ka mea nui, makemake ʻoe e mālama i nā pahu nginx a me php-fpm i nā manawa āpau. Hāʻawi ʻo Kubernetes iā ʻoe e hoʻokō i kēia ma ka wehewehe ʻana iā lākou ma ke ʻano he pod maʻamau. ʻO kēia ka mea hiki ʻole iā mākou ke loaʻa me Nomad.

ʻO ka manaʻo ʻelua hoʻolālā. ʻO ka ʻoiaʻiʻo ʻo ka pod ponoʻī he mea ephemeral; hoʻomaka a nalowale. Makemake ʻoe e pepehi mua i kāu mau ipu mua, a laila e hoʻomaka i nā mana hou i ka manawa hoʻokahi, a i ʻole makemake ʻoe e ʻōwili mālie iā lākou? Hōʻike ia pehea ʻoe e kau ai i kāu pods, i ka nui a pehea e hoʻonui ai iā lākou.

ʻO ke kolu o ka manaʻo hana. ʻO kāu lawelawe ʻo ia kāu ʻōnaehana, kahi e loaʻa ai kahi kaʻa a laila e hoʻouna iā ia i hoʻokahi a ʻoi aku paha pods e pili ana i kāu lawelawe. ʻO ia hoʻi, hiki iā ʻoe ke ʻōlelo e hoʻouna ʻia nā kaʻa komo a pau i kēlā me kēia lawelawe me kēlā a me kēlā inoa e hoʻouna ʻia i kēia mau pods kikoʻī. A i ka manawa like ia e hāʻawi iā ʻoe i ke kaulike kaʻa. ʻO ia hoʻi, hiki iā ʻoe ke hoʻomaka i ʻelua pods o kāu noi, a e kaulike ʻia nā kaʻa komo a pau ma waena o nā pods e pili ana i kēia lawelawe.

A ʻo ka manaʻo kumu ʻehā Pau. He lawelawe kēia e holo ana ma kahi hui Kubernetes. Hana ʻo ia ma ke ʻano he mea kaulike o waho e lawe i nā noi āpau. Ke hoʻohana nei i ka Kubernetes API, hiki iā Ingress ke hoʻoholo i kahi e hoʻouna ʻia ai kēia mau noi. Eia kekahi, hana ʻo ia i kēia me ka maʻalahi. Hiki iā ʻoe ke ʻōlelo e hoʻouna ʻia nā noi āpau i kēia host a me ia a me kēlā URL i kēia lawelawe. A ua hoʻouna ʻia kēia mau noi i kēia host a i kahi URL ʻē aʻe i kahi lawelawe ʻē aʻe.

ʻO ka mea ʻoluʻolu loa mai ka manaʻo o ka mea nāna e hoʻomohala i kahi noi e hiki iā ʻoe ke hoʻokele iā ʻoe iho. Ma ka hoʻonohonoho ʻana i ka config Ingress, hiki iā ʻoe ke hoʻouna i nā kaʻa āpau e hele mai ana i kēlā me kēia API e hoʻokaʻawale i nā ipu i kākau ʻia, no ka laʻana, ma Go. Akā,ʻo kēia kaʻa, e hele mai ana i ka'āpana like, akā i kahi URL'ē aʻe, pono e hoʻounaʻia i nā pahu i kākauʻia ma PHP, kahi i nui ai ka loiloi, akā,ʻaʻole lākou i wikiwiki loa.

Inā mākou e hoʻohālikelike i kēia mau manaʻo me Nomad, hiki iā mākou ke ʻōlelo ʻo nā manaʻo mua ʻekolu i hui pū ʻia Service. A ʻaʻole ka manaʻo hope loa ma Nomad ponoʻī. Ua hoʻohana mākou i kahi balancer waho e like me ia: hiki ke haproxy, nginx, nginx +, a pēlā aku. I ka hihia o ka cube, ʻaʻole pono ʻoe e hoʻokomo i kēia manaʻo hou i kahi kaʻawale. Eia nō naʻe, inā ʻoe e nānā iā Ingress i loko, ʻo ia ka nginx, haproxy, a i ʻole traefik, akā ʻano i kūkulu ʻia i loko o Kubernetes.

ʻO nā manaʻo a pau aʻu i wehewehe ai, ʻoiaʻiʻo, nā kumuwaiwai i loaʻa i loko o kahi pūʻulu Kubernetes. No ka wehewehe ʻana iā lākou i loko o ka cube, hoʻohana ʻia kahi ʻano yaml, ʻoi aku ka maʻalahi a maʻalahi hoʻi ma mua o nā faila HCL i ka hihia o Nomad. Akā structurally wehewehe lākou i ka mea like i ka hihia o, no ka laʻana, pod. 'Ōlelo lākou - makemake wau e hoʻolālā i kēlā me kēia pods ma laila, me nā kiʻi a me nā kiʻi, i kēlā me kēia nui.

Ke kau nei i nā noi iā VM, Nomad a me Kubernetes

Eia kekahi, ua ʻike mākou ʻaʻole makemake mākou e hana i kēlā me kēia waiwai me ka lima: hoʻolaha, lawelawe, Ingress, etc. Akā, i ka wā e hoʻolālā ai, makemake mākou e wehewehe i kēlā me kēia o kā mākou ʻōnaehana ma ke ʻano o nā Kubernetes, i ʻole mākou e hana hou me ka lima i nā mea hilinaʻi pono a pau ma ke ʻano kūpono. Ua koho ʻia ʻo Helm i ʻōnaehana e hiki ai iā mākou ke hana i kēia.

Nā manaʻo kumu ma Helm

Helm luna pūʻolo no Kubernetes. Ua like loa ia me ke ʻano o ka hana ʻana o nā mea hoʻokele i nā ʻōlelo papahana. Hāʻawi lākou iā ʻoe e mālama i kahi lawelawe e like me, no ka laʻana, deployment nginx, deployment php-fpm, config for Ingress, configmaps (he hui kēia e hiki ai iā ʻoe ke hoʻonohonoho i ka env a me nā ʻāpana ʻē aʻe no kāu ʻōnaehana) ma ke ʻano o so- kapa ʻia nā pakuhi. Ma ka manawa like Helm holo ma luna o nā Kubernetes. ʻO ia hoʻi, ʻaʻole kēia ʻano ʻano ʻōnaehana e kū kaʻawale, akā he lawelawe ʻē aʻe i hoʻokuʻu ʻia i loko o ka pahu. Hoʻopili ʻoe me ia ma o kāna API ma o kahi kauoha console. ʻO kona ʻoluʻolu a me ka nani, ʻoiai inā ua haki ka helm a i ʻole ʻoe e wehe iā ia mai ka pūʻulu, ʻaʻole e nalowale kāu mau lawelawe, no ka mea, ʻo ka helm wale nō ka lawelawe e hoʻomaka i ka ʻōnaehana. Na Kubernetes pono'ī ke kuleana no ka hana a me ke kūlana o nā lawelawe.

Ua ʻike pū mākou i kēlā hoʻopalapala, ka mea i koi mua ʻia e hana iā mākou iho ma ka hoʻokomo ʻana i ka jinja i kā mākou configs, ʻo ia kekahi o nā hiʻohiʻona nui o ka helm. ʻO nā configs a pau āu i hana ai no kāu mau ʻōnaehana e mālama ʻia i ka helm ma ke ʻano o nā templates, kahi like me jinja, akā, ʻoiaʻiʻo, me ka hoʻohana ʻana i ka templating o ka ʻōlelo Go, kahi i kākau ʻia ai helm, e like me Kubernetes.

Hoʻohui ʻo Helm i kekahi mau manaʻo no mākou.

pakuhi - he wehewehe kēia o kāu lawelawe. Ma nā pūʻolo mana ʻē aʻe e kapa ʻia ʻo ia he pūʻolo, pūpū a i ʻole kekahi mea like. Eia ua kapa ʻia ka pakuhi.

Nā loina Hawaiʻi ʻo ia nā ʻano hoʻololi āu e makemake ai e hoʻohana e kūkulu i kāu configs mai nā templates.

Release. I kēlā me kēia manawa e loaʻa i kahi lawelawe i hoʻohana ʻia me ka hoʻohana ʻana i kahi mana hoʻonui o ka hoʻokuʻu. Hoʻomanaʻo ʻo Helm i ke ʻano o ka hoʻonohonoho lawelawe i ka hoʻokuʻu mua, ka hoʻokuʻu ʻana ma mua o kēlā, a pēlā aku. No laila, inā pono ʻoe e rollback, e holo wale i ke kauoha callback helm, e kuhikuhi ana i ka mana hoʻokuʻu mua. ʻOiai ʻaʻole i loaʻa ka hoʻonohonoho kūpono i kāu waihona i ka manawa o ka rollback, e hoʻomanaʻo mau ka helm i ke ʻano o ia mea a e hoʻihoʻi i kāu ʻōnaehana i ka mokuʻāina i hoʻokuʻu mua ʻia.

I ka wā e hoʻohana ai mākou i ka helm, e lilo nā config maʻamau no nā Kubernetes i mau hiʻohiʻona e hiki ai ke hoʻohana i nā ʻano like ʻole, nā hana, a me nā ʻōlelo kūlana. Ma kēia ala hiki iā ʻoe ke hōʻiliʻili i kāu hoʻonohonoho lawelawe ma muli o ke kaiapuni.

Ke kau nei i nā noi iā VM, Nomad a me Kubernetes

Ma ka hoʻomaʻamaʻa, ua hoʻoholo mākou e hana i nā mea ʻokoʻa ma mua o kā mākou hana me Nomad. Inā ma Nomad ua mālama ʻia nā configs deployment a me n-variables i pono e hoʻokau i kā mākou lawelawe i hoʻokahi waihona, eia mākou i hoʻoholo e hoʻokaʻawale iā lākou i ʻelua repositories kaʻawale. ʻO ka waihona "deploy" wale nō nā n-variable e pono ai no ka hoʻolaha ʻana, a ʻo ka waihona "helm" e mālama i nā configs a i ʻole palapala.

Ke kau nei i nā noi iā VM, Nomad a me Kubernetes

He aha ka mea i hāʻawi mai iā mākou?

ʻOiai ʻaʻole mākou e mālama i nā ʻikepili koʻikoʻi maoli i nā faila hoʻonohonoho ponoʻī iā lākou iho. No ka laʻana, ʻōlelo huna i nā waihona. Mālama ʻia lākou e like me nā mea huna ma Kubernetes, akā naʻe, aia kekahi mau mea ma laila ʻaʻole mākou makemake e hāʻawi i nā mea a pau. No laila, ʻoi aku ka palena o ke komo ʻana i ka waihona "deploy", a ʻo ka waihona "helm" wale nō ka wehewehe ʻana i ka lawelawe. No kēia kumu, hiki ke loaʻa iā ia me ka palekana e ka lehulehu ākea.

No ka mea, ʻaʻole mākou wale nō ka hana, akā i nā wahi ʻē aʻe, mahalo i kēia kaʻawale ʻana hiki iā mākou ke hoʻohana hou i kā mākou mau palapala helm e hoʻokau i nā lawelawe ʻaʻole wale i ka hana, akā, no ka laʻana, i kahi kaiapuni QA. ʻOiai e hoʻolaha iā lākou ma ka hoʻohana ʻana ʻO Minikube - he mea kēia no ka holo ʻana i nā Kubernetes ma ka ʻāina.

I loko o kēlā me kēia waihona, waiho mākou i kahi mahele i nā papa kuhikuhi kaʻawale no kēlā me kēia lawelawe. ʻO ia hoʻi, i loko o kēlā me kēia papa kuhikuhi aia nā hiʻohiʻona e pili ana i ka pakuhi e pili ana a me ka wehewehe ʻana i nā kumuwaiwai e pono ai ke kau ʻia e holo i kā mākou ʻōnaehana. Ua waiho wale mākou i nā envs i loko o ka waihona "deploy". I kēia hihia, ʻaʻole mākou i hoʻohana i ka templating me ka hoʻohana ʻana i jinja, no ka mea, hāʻawi ka helm iā ia iho i ka templating ma waho o ka pahu - ʻo ia kekahi o kāna mau hana nui.

Ua haʻalele mākou i kahi palapala hoʻolālā - deploy.sh, e hoʻomaʻamaʻa a hoʻohālikelike i ka hoʻokuʻu ʻana no ka hoʻohana ʻana i ka helm. No laila, no ka poʻe makemake e hoʻopololei, ʻano like ke ʻano o ka deployment interface me ia i ka wā e kau ana ma o Nomad. ʻO ka deploy.sh like, ka inoa o kāu lawelawe, a ma kahi āu e makemake ai e kau. ʻO kēia ke kumu e hoʻomaka ai ka hoʻokele i loko. ʻO ia hoʻi, e hōʻiliʻili i nā configs mai nā templates, e hoʻokomo i nā faila waiwai pono i loko o lākou, a laila e kau iā lākou, e hoʻokuʻu iā lākou i Kubernetes.

haʻina

ʻOi aku ka paʻakikī o ka lawelawe Kubernetes ma mua o Nomad.

Ke kau nei i nā noi iā VM, Nomad a me Kubernetes

Eia ka hele ʻana i waho i Ingress. ʻO kēia wale nō ka mea hoʻoponopono mua, nāna e lawe i nā noi āpau a hoʻouna iā lākou i nā lawelawe e pili ana i ka ʻikepili noi. Hoʻoholo ia iā lākou e pili ana i nā configs i ʻāpana o ka wehewehe ʻana o kāu noi ma ka helm a nā mea hoʻomohala i hoʻonohonoho iā lākou iho. Hoʻouna ka lawelawe i nā noi i kāna pods, ʻo ia hoʻi, nā pahu kikoʻī, ke kaulike ʻana i ke kaʻa komo mai ma waena o nā ipu āpau o kēia lawelawe. A, ʻoiaʻiʻo, ʻaʻole pono mākou e poina ʻaʻole pono mākou e hele ma kahi o ka palekana ma ka pae pūnaewele. No laila, hana ka māhele ʻana i kahi pūʻulu Kubernetes, i hoʻokumu ʻia ma ke kau ʻana. Loaʻa i nā lawelawe āpau kekahi mau hōʻailona e pili ana i nā kuleana e komo ai nā lawelawe i kekahi mau kumuwaiwai waho/loko i loko a i waho paha o ka hui.

I ko mākou hana ʻana i ka hoʻololi, ʻike mākou ua loaʻa iā Kubernetes nā mana āpau o Nomad, a mākou i hoʻohana mua ai, a hoʻohui pū i nā mea hou he nui. Hiki ke hoʻonui ʻia ma o nā plugins, a ʻoiaʻiʻo hoʻi ma o nā ʻano kumu waiwai maʻamau. ʻO ia hoʻi, loaʻa iā ʻoe ka manawa kūpono ʻaʻole e hoʻohana wale i kahi mea i hele mai me Kubernetes ma waho o ka pahu, akā e hana i kāu waiwai ponoʻī a me kāu lawelawe e heluhelu ai i kāu kumuwaiwai. Hāʻawi kēia iā ʻoe i nā koho hou aʻe e hoʻonui i kāu ʻōnaehana me ka ʻole e hoʻokomo hou i nā Kubernetes a me ka ʻole e koi i nā hoʻololi.

ʻO kahi laʻana o ia hoʻohana ʻo Prometheus, e holo ana i loko o kā mākou hui Kubernetes. I mea e hoʻomaka ai e hōʻiliʻili i nā metric mai kahi lawelawe kūikawā, pono mākou e hoʻohui i kahi ʻano kumuwaiwai hou aʻe, ka mea i kapa ʻia ʻo ka monitor service, i ka wehewehe lawelawe. ʻO Prometheus, ma muli o ka hiki iā ia ke heluhelu i kahi ʻano kumu waiwai maʻamau i ka wā i hoʻokuʻu ʻia ai ma Kubernetes, hoʻomaka koke ka ʻohi ʻana i nā metric mai ka ʻōnaehana hou. He kūpono loa.

ʻO ka hoʻolaha mua ʻana i hana ai mākou iā Kubernetes ma Malaki 2018. A i kēia manawa ʻaʻole mākou i ʻike i kekahi pilikia me ia. Hoʻohana paʻa ia me ka ʻole o nā pōpoki koʻikoʻi. Eia hou, hiki iā mākou ke hoʻonui hou aku. I kēia lā ua lawa mākou i nā mea hiki iā ia, a makemake nui mākou i ka wikiwiki o ka hoʻomohala ʻana o Kubernetes. I kēia manawa, ʻoi aku ma mua o 3000 pahu i Kubernetes. Noho ka pūʻulu i kekahi mau Nodes. I ka manawa like, hiki ke lawelawe, kūpaʻa a hiki ke hoʻomalu.

Source: www.habr.com

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