Kio unue venis - la kokido aŭ la ovo? Sufiĉe stranga komenco por artikolo pri Infrastructure-as-Code, ĉu ne?
Kio estas ovo?
Plej ofte, Infrastructure-as-Code (IaC) estas deklara maniero reprezenti infrastrukturon. En ĝi ni priskribas la staton, kiun ni volas atingi, komencante de la aparataro kaj finante per la programara agordo. Tial IaC estas uzata por:
Provizo de Rimedo. Ĉi tiuj estas VMs, S3, VPC, ktp. Bazaj iloj por laboro: Terraform и CloudFormation.
Ajna kodo estas en git-deponejoj. Kaj pli aŭ malpli frue la teamestro decidos, ke oni devas ordigi ilin. Kaj li refaktorigos. Kaj ĝi kreos iun strukturon. Kaj li vidos, ke tio estas bona.
Ankaŭ estas bone, ke ĝi jam ekzistas GitLab и GitHub-provizanto por Terraform (kaj ĉi tio estas Programaro-Agordo). Kun ilia helpo, vi povas administri la tutan projekton: teamanoj, CI/CD, git-flow, ktp.
De kie venis la ovo?
Do ni iom post iom alproksimiĝas al la ĉefa demando.
Antaŭ ĉio, vi devas komenci per deponejo, kiu priskribas la strukturon de aliaj deponejoj, inkluzive de vi mem. Kaj kompreneble, kiel parto de GitOps, vi devas aldoni CI por ke ŝanĝoj efektiviĝu aŭtomate.
Se Git ankoraŭ ne estas kreita?
Kiel konservi ĝin en Git?
Kiel instali CI?
Se ni ankaŭ deplojos Gitlab uzante IaC, kaj eĉ en Kubernetes?
Kaj GitLab Runner ankaŭ en Kubernetes?
Kio pri Kubernetes en la nuba provizanto?
Kio unue venis: la GitLab, kie mi alŝutos mian kodon, aŭ la kodon, kiu priskribas kian GitLab mi bezonas?
Akiru MY_SELECTEL_TOKEN el panelo mia.selectel.ru.
Kreu Kubernetes-grupon transdonante kontan ĵetonon al ĝi.
Akiru KUBECONFIG el la kreita areto.
Instalu GitLab sur Kubernetes.
Akiru GitLab-tokenon de GitLab kreita por uzanto radikon.
Kreu projektan strukturon en GitLab uzante GitLab-token.
Puŝu ekzistantan kodon al GitLab.
???
Profito!
paŝi 1. La ĵetono povas esti akirita en la sekcio API-Ŝlosiloj.
paŝi 2. Ni preparas nian Terraform por "baki" areton de 2 nodoj. Se vi certas, ke vi havas sufiĉajn rimedojn por ĉio, tiam vi povas ebligi aŭtomatajn kvotojn:
paŝi 8. Alportante Git-deponejojn al la ĝusta hierarkio uzante la Gitlab-Provizanton.
cd ../internal/gitlab/hierarchy && terraform apply -input=false -auto-approve planfile
Bedaŭrinde, terraform GitLab-provizanto havas flosan cimo. Tiam vi devos forigi la konfliktajn projektojn permane por ke tf.state estu riparita. Poste rerulu la komandon `$make all`
paŝi 9. Ni transdonas lokajn deponejojn al la servilo.
Ni atingis, ke ni povas administri ĉion deklara de nia loka maŝino. Nun mi volas transdoni ĉiujn ĉi tiujn taskojn al CI kaj nur premu butonojn. Por fari tion, ni devas translokigi niajn lokajn ŝtatojn (Terraform-ŝtato) al CI. Kiel fari ĉi tion estas en la sekva parto.
Abonu nian блогpor ne maltrafi la eldonon de novaj artikoloj!