E 'nato prima l'uovo o la gallina? Un inizio piuttosto strano per un articolo su Infrastructure-as-Code, non è vero?
Cos'è un uovo?
Molto spesso, Infrastructure-as-Code (IaC) è un modo dichiarativo di rappresentare l'infrastruttura. In esso descriviamo lo stato che vogliamo raggiungere, partendo dalla parte hardware e finendo con la configurazione software. Pertanto IaC viene utilizzato per:
Fornitura di risorse. Queste sono VM, S3, VPC, ecc. Strumenti di base per il lavoro: Terraform и CloudFormazione.
Qualsiasi codice è nei repository git. E prima o poi il caposquadra deciderà che devono essere messi in ordine. E farà il refactoring. E creerà una certa struttura. E vedrà che questo va bene.
È anche positivo che esista già GitLab и GitHub-provider per Terraform (e questa è Configurazione software). Con il loro aiuto, puoi gestire l'intero progetto: membri del team, CI/CD, git-flow, ecc.
Da dove viene l'uovo?
Quindi ci stiamo avvicinando gradualmente alla domanda principale.
Prima di tutto, devi iniziare con un repository che descriva la struttura di altri repository, incluso te stesso. E ovviamente, come parte di GitOps, è necessario aggiungere CI in modo che le modifiche vengano eseguite automaticamente.
Se Git non è stato ancora creato?
Come memorizzarlo in Git?
Come installare CI?
Se distribuissimo Gitlab anche utilizzando IaC e anche in Kubernetes?
E GitLab Runner anche in Kubernetes?
Che dire di Kubernetes nel cloud provider?
Cos'è venuto prima: il GitLab in cui caricherò il mio codice o il codice che descrive di che tipo di GitLab ho bisogno?
Ottieni MY_SELECTEL_TOKEN dal pannello my.selectel.ru.
Crea un cluster Kubernetes trasferendovi un token di account.
Ottieni KUBECONFIG dal cluster creato.
Installa GitLab su Kubernetes.
Ottieni il token GitLab da GitLab creato per l'utente radice.
Crea una struttura di progetto in GitLab utilizzando il token GitLab.
Invia il codice esistente a GitLab.
?
Utile!
Passo 1. Il token può essere ottenuto nella sezione Chiavi API.
Passo 2. Prepariamo il nostro Terraform per “cuocere” un cluster di 2 nodi. Se sei sicuro di avere risorse sufficienti per tutto, puoi abilitare le quote automatiche:
Passo 8. Portare i repository Git alla gerarchia corretta utilizzando Gitlab Provider.
cd ../internal/gitlab/hierarchy && terraform apply -input=false -auto-approve planfile
Sfortunatamente, il provider terraform GitLab ha un file float insetto. Quindi dovrai eliminare manualmente i progetti in conflitto per poter correggere tf.state. Quindi esegui nuovamente il comando "$make all".
Passo 9. Trasferiamo i repository locali sul server.
Abbiamo ottenuto che possiamo gestire tutto in modo dichiarativo dalla nostra macchina locale. Ora voglio trasferire tutte queste attività su CI e basta premere i pulsanti. Per fare ciò, dobbiamo trasferire i nostri stati locali (stato Terraform) a CI. Come farlo è nella parte successiva.
Iscriviti al nostro blogper non perdere l'uscita di nuovi articoli!