Šta je bilo prvo - kokoška ili jaje? Prilično čudan početak za članak o infrastrukturi kao kodu, zar ne?
Šta je jaje?
Najčešće, Infrastructure-as-Code (IaC) je deklarativni način predstavljanja infrastrukture. U njemu opisujemo stanje koje želimo postići, počevši od hardverskog dijela pa do softverske konfiguracije. Stoga se IaC koristi za:
Resource Provision. To su VM, S3, VPC, itd. Osnovni alati za rad: Terraform и CloudFormation.
Bilo koji kod je u git repozitorijumima. I prije ili kasnije vođa tima će odlučiti da ih treba dovesti u red. I on će refaktorirati. I to će stvoriti neku strukturu. I videće da je ovo dobro.
Takođe je dobro što već postoji GitLab и GitHub-provajder za Terraform (a ovo je softverska konfiguracija). Uz njihovu pomoć možete upravljati cijelim projektom: članovima tima, CI/CD, git-flow, itd.
Odakle je došlo jaje?
Tako se postepeno približavamo glavnom pitanju.
Prije svega, trebate početi sa spremištem koje opisuje strukturu drugih spremišta, 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 kreiran?
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đe u Kubernetesu?
Šta je sa Kubernetesom u cloud provajderu?
Šta je bilo prvo: GitLab u koji ću učitati svoj kod, ili kod koji opisuje kakav mi GitLab treba?
Preuzmite MY_SELECTEL_TOKEN sa panela my.selectel.ru.
Kreirajte Kubernetes klaster prenošenjem tokena naloga na njega.
Nabavite KUBECONFIG iz kreiranog klastera.
Instalirajte GitLab na Kubernetes.
Nabavite GitLab-token od GitLaba kreiranog za korisnika korijen.
Kreirajte strukturu projekta u GitLabu koristeći GitLab-token.
Gurnite postojeći kod u GitLab.
???
Profit!
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, onda možete omogućiti automatske kvote:
korak 8. Dovođenje Git spremišta u ispravnu hijerarhiju koristeći Gitlab Provider.
cd ../internal/gitlab/hierarchy && terraform apply -input=false -auto-approve planfile
Nažalost, terraform GitLab provajder ima floating bug. Tada ćete morati ručno izbrisati konfliktne projekte kako bi se tf.state popravio. Zatim ponovo pokrenite naredbu `$make all`
Postigli smo da svime možemo upravljati deklarativno sa naše lokalne mašine. Sada želim sve ove zadatke prebaciti na CI i samo pritisnuti dugmad. Da bismo to učinili, moramo prenijeti naša lokalna stanja (Terraform state) u CI. Kako to uraditi je u sledećem delu.
Pretplatite se na naše blogkako ne biste propustili objavljivanje novih članaka!