ʻO ka moa a i ʻole ka hua manu: ka wehe ʻana iā IaC
He aha ka mea mua - ka moa a i ʻole ka hua? He hoʻomaka ʻē aʻe no kahi ʻatikala e pili ana i Infrastructure-as-Code, ʻaʻole anei?
He aha ka hua?
ʻO ka pinepine, ʻo Infrastructure-as-Code (IaC) kahi ala hoʻolaha e hōʻike ana i ka ʻoihana. I loko o ia mea mākou e wehewehe ai i ka moku'āina a mākou e makemake ai e hoʻokō, e hoʻomaka ana mai ka ʻaoʻao lako a hoʻopau me ka hoʻonohonoho polokalamu. No laila ua hoʻohana ʻia ʻo IaC no:
Aia kekahi code i loko o nā waihona git. A ma hope a ma hope paha e hoʻoholo ke alakaʻi o ka hui e hoʻonohonoho pono lākou. A e hana hou ʻo ia. A e hana ia i kekahi hale. A e ʻike ʻo ia he maikaʻi kēia.
Maikaʻi nō hoʻi ua loaʻa GitLab и GitHub-mea hoʻolako no Terraform (a ʻo kēia ʻo Software Configuration). Me kā lākou kōkua, hiki iā ʻoe ke hoʻokele i ka papahana holoʻokoʻa: nā lālā hui, CI/CD, git-flow, etc.
No hea mai ka hua?
No laila ke hele mālie nei mākou i ka nīnau nui.
ʻO ka mea mua, pono ʻoe e hoʻomaka me kahi waihona e wehewehe ana i ke ʻano o nā waihona ʻē aʻe, me ʻoe iho. A ʻoiaʻiʻo, ma ke ʻano o GitOps, pono ʻoe e hoʻohui iā CI i hoʻokō ʻia nā loli.
Inā ʻaʻole i hana ʻia ʻo Git?
Pehea e mālama ai iā ia ma Git?
Pehea e hoʻokomo ai iā CI?
Inā mākou e kau iā Gitlab me ka hoʻohana ʻana iā IaC, a ma Kubernetes paha?
A ʻo GitLab Runner pū kekahi ma Kubernetes?
Pehea e pili ana i nā Kubernetes i ka mea hāʻawi kapua?
He aha ka mea i hele mua mai: ʻo ka GitLab kahi aʻu e hoʻouka ai i kaʻu code, a i ʻole ke code e wehewehe ana i ke ʻano o GitLab aʻu e pono ai?
E kiʻi iā MY_SELECTEL_TOKEN mai ka papa my.selectel.ru.
E hana i kahi hui Kubernetes ma ka hoʻoili ʻana i kahi hōʻailona moʻokāki iā ia.
E kiʻi iā KUBECONFIG mai ka pūʻulu i hana ʻia.
E hoʻouka iā GitLab ma nā Kubernetes.
E kiʻi iā GitLab-token mai GitLab i hana ʻia no ka mea hoʻohana aa.
E hana i kahi hoʻolālā papahana ma GitLab me ka hoʻohana ʻana iā GitLab-token.
E kaomi i ke code i loaʻa iā GitLab.
???
Kumakaʻa!
pani 1. Hiki ke loaʻa ka hōʻailona ma ka ʻāpana Nā kī API.
pani 2. Hoʻomākaukau mākou i kā mākou Terraform no ka "baking" i kahi hui o 2 nodes. Inā maopopo iā ʻoe ua lawa kāu mau kumuwaiwai no nā mea āpau, a laila hiki iā ʻoe ke hoʻā i nā quota auto:
E hoʻohana mākou i ka mea maʻamau no nā mea he nui komo komo nginx. Nui nā ʻōlelo aʻo no ka hoʻokomo ʻana iā ia, no laila ʻaʻole mākou e noʻonoʻo ma luna.
pani 8. Ka lawe ʻana i nā waihona waihona Git i ka hierarchy kūpono me ka hoʻohana ʻana i ka Gitlab Provider.
cd ../internal/gitlab/hierarchy && terraform apply -input=false -auto-approve planfile
ʻO ka mea pōʻino, loaʻa kahi mea hoʻolako terraform GitLab ʻino. A laila pono ʻoe e holoi lima i nā papahana hakakā i mea e hoʻopaʻa ʻia ai ka tf.state. A laila hoʻomaka hou i ke kauoha `$make all`
pani 9. Hoʻololi mākou i nā waihona kūloko i ke kikowaena.
Ua hoʻokō mākou hiki iā mākou ke hoʻokele i nā mea āpau mai kā mākou mīkini kūloko. I kēia manawa makemake wau e hoʻololi i kēia mau hana āpau iā CI a kaomi wale i nā pihi. No ka hana ʻana i kēia, pono mākou e hoʻololi i kā mākou mokuʻāina kūloko (Terraform state) i CI. Pehea e hana ai i kēia ma ka ʻāpana aʻe.
Kau inoa i kā mākou blogi ʻole e poina i ka hoʻokuʻu ʻia ʻana o nā ʻatikala hou!