Što je bilo prije - kokoš ili jaje? Prilično čudan početak za članak o infrastrukturi kao kodu, zar ne?
Što je jaje?
Infrastruktura kao kod (IaC) najčešće je deklarativni način predstavljanja infrastrukture. U njemu opisujemo stanje koje želimo postići, počevši od hardverskog dijela pa sve do konfiguracije softvera. Stoga se IaC koristi za:
Bilo koji kôd nalazi se u git spremištima. I prije ili kasnije vođa tima će odlučiti da ih treba dovesti u red. I on će refaktorirati. I stvorit će neku strukturu. I vidjet će da je ovo dobro.
Također je dobro da već postoji GitLab и GitHub-provider za Terraform (a ovo je konfiguracija softvera). Uz njihovu pomoć možete upravljati cijelim projektom: članovi tima, CI/CD, git-flow itd.
Odakle jaje?
Tako se postupno približavamo glavnom pitanju.
Prije svega, trebate započeti s repozitorijem koji opisuje strukturu drugih repozitorija, uključujući i vas. I naravno, kao dio GitOps-a, morate dodati CI tako da se promjene izvršavaju automatski.
Ako Git još nije stvoren?
Kako to pohraniti u Git?
Kako instalirati CI?
Ako također implementiramo Gitlab koristeći IaC, pa čak i u Kubernetesu?
A GitLab Runner također u Kubernetesu?
Što je s Kubernetesom u pružatelju usluga oblaka?
Što je bilo prvo: GitLab gdje ću učitati svoj kod ili kod koji opisuje kakav GitLab trebam?
Preuzmi MY_SELECTEL_TOKEN s ploče moj.selectel.ru.
Stvorite Kubernetes klaster prijenosom tokena računa na njega.
Nabavite KUBECONFIG iz stvorenog klastera.
Instalirajte GitLab na Kubernetes.
Nabavite GitLab-token iz GitLaba stvorenog za korisnika korijen.
Stvorite strukturu projekta u GitLabu koristeći GitLab-token.
Gurnite postojeći kod u GitLab.
?
Dobit!
Korak 1. Token se može dobiti u odjeljku API ključevi.
Korak 2. Pripremamo naš Terraform za "pečenje" klastera od 2 čvora. Ako ste sigurni da imate dovoljno resursa za sve, možete omogućiti automatske kvote:
Korak 8. Dovođenje Git repozitorija u ispravnu hijerarhiju pomoću Gitlab Providera.
cd ../internal/gitlab/hierarchy && terraform apply -input=false -auto-approve planfile
Nažalost, pružatelj terraform GitLab ima plutajući buba. Zatim ćete morati ručno izbrisati konfliktne projekte kako bi se tf.state popravio. Zatim ponovno pokrenite naredbu `$make all`
Korak 9. Lokalne repozitorije prenosimo na poslužitelj.
Postigli smo da možemo upravljati svime deklarativno s našeg lokalnog stroja. Sada želim sve te zadatke prenijeti na CI i samo pritisnuti gumbe. Da bismo to učinili, moramo prenijeti naša lokalna stanja (Terraform stanje) u CI. Kako to učiniti je u sljedećem dijelu.
Pretplatite se na naš blogkako ne biste propustili puštanje novih članaka!