Kaj je bilo prej - kokoš ali jajce? Precej čuden začetek članka o infrastrukturi kot kodi, kajne?
Kaj je jajce?
Najpogosteje je infrastruktura kot koda (IaC) deklarativni način predstavljanja infrastrukture. V njem opisujemo stanje, ki ga želimo doseči, začenši od strojnega dela in konča s konfiguracijo programske opreme. Zato se IaC uporablja za:
Vsaka koda je v repozitorijih git. In prej ali slej se bo vodja ekipe odločil, da jih je treba spraviti v red. In preoblikoval bo. In ustvaril bo neko strukturo. In videl bo, da je to dobro.
Dobro je tudi, da že obstaja GitLab и GitHub-ponudnik za Terraform (in to je konfiguracija programske opreme). Z njihovo pomočjo lahko upravljate celoten projekt: člane ekipe, CI/CD, git-flow itd.
Od kod je prišlo jajce?
Tako se postopoma približujemo glavnemu vprašanju.
Najprej morate začeti z repozitorijem, ki opisuje strukturo drugih repozitorijev, vključno z vami. In seveda, kot del GitOps, morate dodati CI, tako da se spremembe izvajajo samodejno.
Če Git še ni bil ustvarjen?
Kako ga shraniti v Git?
Kako namestiti CI?
Če uvedemo tudi Gitlab z uporabo IaC in celo v Kubernetesu?
In GitLab Runner tudi v Kubernetesu?
Kaj pa Kubernetes v ponudniku oblaka?
Kaj je bilo prej: GitLab, kamor bom naložil svojo kodo, ali koda, ki opisuje, kakšen GitLab potrebujem?
Pridobite MY_SELECTEL_TOKEN iz plošče my.selectel.ru.
Ustvarite gručo Kubernetes tako, da vanjo prenesete žeton računa.
Pridobite KUBECONFIG iz ustvarjene gruče.
Namestite GitLab na Kubernetes.
Pridobite GitLab-token iz GitLaba, ustvarjenega za uporabnika koren.
Ustvarite strukturo projekta v GitLabu z uporabo žetona GitLab.
Potisnite obstoječo kodo v GitLab.
?
Dobiček!
Korak 1. Žeton lahko dobite v razdelku API ključi.
Korak 2. Naš Terraform pripravimo za "peko" grozda 2 vozlov. Če ste prepričani, da imate dovolj sredstev za vse, potem lahko omogočite samodejne kvote:
Korak 8. Prenos repozitorijev Git na pravilno hierarhijo z uporabo ponudnika Gitlab.
cd ../internal/gitlab/hierarchy && terraform apply -input=false -auto-approve planfile
Na žalost ima ponudnik terraform GitLab lebdečo hrošček. Potem boste morali konfliktne projekte izbrisati ročno, da bo tf.state popravljen. Nato znova zaženite ukaz `$make all`
Korak 9. Lokalne repozitorije prenesemo na strežnik.
Dosegli smo, da lahko vse upravljamo deklarativno iz našega lokalnega stroja. Zdaj želim vse te naloge prenesti v CI in samo pritisniti gumbe. Da bi to naredili, moramo prenesti naša lokalna stanja (stanje Terraform) v CI. Kako to storiti, je v naslednjem delu.
Naročite se na našo blogda ne zamudite izdaje novih člankov!