Come utilizzare HashiCorp Waypoint per collaborare con GitLab CI/CD.

Come utilizzare HashiCorp Waypoint per collaborare con GitLab CI/CD.

HashiCorp ha presentato un nuovo progetto Waypoint con HashiCorp Digital. Utilizza un file basato su HCL per descrivere la costruzione, la distribuzione e il rilascio di applicazioni su diverse piattaforme cloud, da Kubernetes ad AWS e Google Cloud Run. Si può pensare a Waypoint come alla fusione di Terraform e Vagrant per descrivere il processo di costruzione, distribuzione e rilascio delle vostre applicazioni.

Rimanendo fedele a se stessa, HashiCorp ha rilasciato Waypoint come open source, e sono disponibili anche numerosi esempi. Il livello dell'orchestratore è a vostra scelta; Waypoint viene fornito come file eseguibile che potete eseguire direttamente sul vostro laptop o dal vostro strumento di orchestrazione CI/CD preferito. Anche la destinazione per il deployment delle applicazioni è a vostra discrezione, poiché Waypoint supporta Kubernetes, Docker, Google Cloud Run, AWS ECS e altro.

Dopo aver esaminato alcuni documentazione e straordinari esempi applicazioni fornite da HashiCorp, abbiamo deciso di dare uno sguardo più da vicino all'orchestrazione di Waypoint utilizzando GitLab CI/CD. Per farlo, prenderemo una semplice applicazione Node.js, in esecuzione su AWS ECS, dal repository degli esempi.

Dopo aver clonato il repository, daremo un'occhiata alla struttura dell'applicazione che visualizza una singola pagina:

Come utilizzare HashiCorp Waypoint per collaborare con GitLab CI/CD.

Come avrete notato, in questo progetto non c'è un Dockerfile. Non sono stati aggiunti nell'esempio perché in realtà non ci servono; Waypoint si occuperà di tutto per noi. Esploriamo più nel dettaglio il file waypoint.hcl, per capire cosa farà:

project = "example-nodejs"

app "example-nodejs" {
  labels = {
    "service" = "example-nodejs",
    "env" = "dev"
  }

  build {
    use "pack" {}
    registry {
    use "aws-ecr" {
        region = "us-east-1"
        repository = "waypoint-gitlab"
        tag = "latest"
    }
    }
  }

  deploy {
    use "aws-ecs" {
    region = "us-east-1"
    memory = "512"
    }
  }
}

Durante la fase di build, Waypoint utilizza i Cloud Native Buildpacks (CNB), per determinare il linguaggio di programmazione del progetto e creare un'immagine per Docker senza l'uso di un Dockerfile. In sostanza, si tratta della stessa tecnologia utilizzata da GitLab nella parte di Auto DevOps nel passaggio Auto Build. È gratificante vedere che CNB della CNCF sta guadagnando sempre più diffusione tra gli utenti del settore.

Una volta che l'immagine è stata costruita, Waypoint la caricherà automaticamente nel nostro registro AWS ECR, rendendola pronta per la distribuzione. Al termine della costruzione, la fase di distribuzione utilizza l'integrazione AWS ECS per distribuire la nostra applicazione nel nostro account AWS.

Dal mio laptop è tutto semplice. Installa Waypoint, già autenticato nel mio account AWS, e funziona semplicemente. Ma cosa succede se voglio oltrepassare il mio laptop? O se voglio automatizzare questa distribuzione come parte del mio pipeline CI/CD, dove vengono eseguiti i miei test di integrazione, i test di sicurezza e altro? Qui entra in gioco il GitLab CI/CD!

N.B. Se stai appena iniziando a pianificare l'implementazione di CI/CD o desideri adottare le migliori pratiche nella costruzione di pipeline, dai un'occhiata al nuovo corso di Slërm. «CI/CD con GitLab CI». Ora è disponibile a un prezzo di preordine.

Waypoint in GitLab CI/CD

Per orchestrare tutto ciò in GitLab CI/CD, vediamo cosa ci servirà nel nostro file. .gitlab-ci.yml:

  • Innanzitutto, è necessaria un'immagine di base per eseguirlo. Waypoint funziona su qualsiasi distribuzione Linux, ha solo bisogno di Docker, quindi possiamo partire da un'immagine Docker generica.
  • In seguito, dobbiamo installare Waypoint in quest'immagine. In futuro potremmo costruire un'immagine di build meta e containerizzare questo processo per noi.
  • Infine, eseguiremo i comandi Waypoint.

Quanto descritto sopra è tutto ciò di cui il nostro sistema ha bisogno per avviare gli script necessari per il deployment, ma per il deployment su AWS abbiamo bisogno di un'altra cosa: dobbiamo autenticarci nel nostro account AWS. Nel documento di Waypoint ci sono piani per l'autenticazione e l'autorizzazione. HashiCorp ha anche rilasciato questa settimana un progetto impressionante Boundary. Ma per ora possiamo semplicemente gestire noi stessi l'autenticazione e l'autorizzazione.

Per l'autenticazione di GitLab CICD su AWS ci sono diverse opzioni. La prima opzione è utilizzare il HashiCorp Vault. Questo è utile se il tuo team utilizza già Vault per la gestione delle credenziali. Un altro modo, che va bene se il tuo team gestisce l'autorizzazione tramite AWS IAM, è assicurarsi che i task di deployment vengano eseguiti tramite GitLab Runner, autorizzato a lanciare il deployment tramite IAM. Ma se vuoi semplicemente familiarizzare con Waypoint e desideri farlo più rapidamente, c'è un'ultima opzione: aggiungere le tue chiavi AWS API e Secret in variabili d'ambiente GitLab CI/CD AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY.

Mettiamo tutto insieme

Una volta risolto il problema dell'autenticazione, si può partire! La nostra conclusione finale .gitlab-ci.yml è così che appare:

waypoint:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  # Definire le variabili ambientali, ad es. `WAYPOINT_VERSION: '0.1.1'`
  variables:
    WAYPOINT_VERSION: ''
    WAYPOINT_SERVER_ADDR: ''
    WAYPOINT_SERVER_TOKEN: ''
    WAYPOINT_SERVER_TLS: '1'
    WAYPOINT_SERVER_TLS_SKIP_VERIFY: '1'
  script:
    - wget -q -O /tmp/waypoint.zip https://releases.hashicorp.com/waypoint/${WAYPOINT_VERSION}/waypoint_${WAYPOINT_VERSION}_linux_amd64.zip
    - unzip -d /usr/local/bin /tmp/waypoint.zip
    - rm -rf /tmp/waypoint*
    - waypoint init
    - waypoint build
    - waypoint deploy
    - waypoint release

Vedi che iniziamo con l'immagine docker:latest e impostiamo alcune variabili ambientali necessarie per Waypoint. Nella sezione script scarichiamo l'ultima versione dell'eseguibile Waypoint e lo installiamo in /usr/local/bin. Poiché il nostro runner è già autorizzato in AWS, proseguiamo semplicemente con il comando waypoint init, build, deploy e release.

L'output del task di build ci mostrerà l'endpoint in cui abbiamo distribuito l'applicazione:

Come utilizzare HashiCorp Waypoint per collaborare con GitLab CI/CD.

Waypoint è una delle numerose soluzioni di HashiCorp, che funziona perfettamente con GitLab. Ad esempio, oltre a distribuire l'applicazione, possiamo orchestrare l'infrastruttura sottostante utilizzando Terraform in GitLab. Per standardizzare la sicurezza del SDLC, possiamo anche implementare GitLab con Vault per gestire segreti e token nei flussi CI/CD, fornendo una soluzione completa per sviluppatori e amministratori che si basano sulla gestione dei segreti durante lo sviluppo, il test e l'uso in produzione.

Le soluzioni congiunte sviluppate da HashiCorp e GitLab aiutano le aziende a trovare il modo migliore per sviluppare applicazioni, garantendo una gestione coerente dei flussi di approvvigionamento e dell'infrastruttura. Waypoint ha fatto un ulteriore passo nella giusta direzione e non vediamo l'ora di ulteriori sviluppi del progetto. Puoi saperne di più su Waypoint qui, vale anche la pena esplorare documentazione e il piano di sviluppo del progetto. Abbiamo integrato le conoscenze acquisite nella documentazione di GitLab CICD. Se vuoi provare tutto in prima persona, puoi prendere un esempio completo e funzionante in questo repository.

Comprendere i principi CI/CD, apprendere tutte le sfumature di GitLab CI e iniziare a applicare le migliori pratiche è possibile seguendo il videocorso «CI/CD con GitLab CI». Unisciti a noi!

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster