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 in HashiCorp Digital. Utilizza un file basato su HCL per descrivere la costruzione, la distribuzione e il rilascio di applicazioni per varie piattaforme cloud, da Kubernetes ad AWS e Google Cloud Run. Si può immaginare che Waypoint sia come Terraform e Vagrant combinati per descrivere il processo di costruzione, distribuzione e rilascio delle proprie applicazioni.

Fedele a se stessa, HashiCorp ha rilasciato Waypoint con codice sorgente aperto, accompagnato da numerosi esempi. Il livello dell'orchestratore è a vostra scelta, Waypoint è fornito come file eseguibile che potete avviare direttamente sul vostro laptop o dal vostro strumento di orchestrazione CI/CD preferito. Anche l'obiettivo per il deployment delle applicazioni è scelto da voi, poiché Waypoint supporta Kubernetes, Docker, Google Cloud Run, AWS ECS e altro.

Dopo aver letto straordinari la documentazione e magnifici casi d'uso di applicazioni fornite da HashiCorp, abbiamo deciso di dare un'occhiata più da vicino all'orchestrazione di Waypoint utilizzando GitLab CI/CD. Per fare ciò, utilizzeremo una semplice applicazione Node.js, eseguita 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 poiché non ci servono, dato che Waypoint se ne occuperà per noi. Vediamo 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"
    }
  }
}

Nella fase di costruzione, Waypoint utilizza Cloud Native Buildpacks (CNB), per determinare il linguaggio di programmazione del progetto e creare un'immagine per Docker senza utilizzare un Dockerfile. In effetti, questa è la stessa tecnologia utilizzata da GitLab nella parte di Auto DevOps nella fase di Auto Build. È bello vedere che CNB di CNCF sta guadagnando sempre più popolarità tra gli utenti del settore.

Una volta costruita l'immagine, Waypoint la caricherà automaticamente nel nostro registry AWS ECR, affinché sia pronta per la distribuzione. Al termine della fase di costruzione, il passaggio di distribuzione utilizza l'integrazione AWS ECS per distribuire la nostra applicazione nel nostro account AWS.

Dal mio laptop è tutto semplice. Installo Waypoint, già autenticato nel mio account AWS, e funziona "e basta". Ma cosa succede se voglio andare oltre il mio laptop? O se voglio automatizzare questo deployment come parte della mia pipeline CI/CD, dove eseguo i miei attuali test di integrazione, test di sicurezza e altro? È proprio qui che entra in gioco GitLab CI/CD!

N.B. Se stai solo iniziando a pianificare un'implementazione CI/CD o vuoi iniziare ad adottare le migliori pratiche per la costruzione delle pipeline, dai un'occhiata al nuovo corso di Slyrm "CI/CD con GitLab CI". È attualmente disponibile a un prezzo di preordino.

Waypoint in GitLab CI/CD

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

  • Per prima cosa, abbiamo bisogno di un'immagine di base in cui eseguirlo. Waypoint funziona su qualsiasi distribuzione Linux, ha solo bisogno di Docker, quindi possiamo utilizzare un'immagine Docker generica.
  • Dopo dobbiamo installare Waypoint in quest'immagine. In futuro possiamo costruire un'immagine meta build e containerizzare questo processo per noi.
  • Infine eseguiremo i comandi Waypoint

Sopra abbiamo descritto tutto ciò di cui la nostra pipeline ha bisogno per eseguire gli script necessari per il deployment, ma per il deployment in AWS ci servirà un'altra cosa: dobbiamo autenticarsi nel nostro account AWS. Nella descrizione di Waypoint ci sono piani per l'autenticazione e l'autorizzazione. HashiCorp ha anche rilasciato un progetto impressionante questa settimana Boundary. Ma per il momento possiamo semplicemente gestire l'autenticazione e l'autorizzazione autonomamente.

Per l'autenticazione di GitLab CICD in AWS ci sono diverse opzioni. La prima opzione è utilizzare il HashiCorp Vault. Sarà utile se il tuo team utilizza già Vault per gestire le credenziali. Un altro metodo, utile se il tuo team gestisce l'autorizzazione tramite AWS IAM, è verificare che i job di deployment vengano eseguiti tramite GitLab Runner, autorizzato a eseguire il deployment attraverso IAM. Ma se vuoi solo dare un'occhiata a Waypoint e farlo in fretta, 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 che abbiamo risolto l'autenticazione, possiamo iniziare! Il nostro finale .gitlab-ci.yml è il seguente:

waypoint:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  # Definisci le variabili ambientali, ad esempio `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à autenticato in AWS, possiamo semplicemente eseguire waypoint init, build, deploy e release.

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

Come utilizzare HashiCorp Waypoint per collaborare con GitLab CI/CD

Waypoint è una delle numerose soluzioni HashiCorp, che funzionano ottimamente con GitLab. Ad esempio, oltre alla distribuzione dell'applicazione, possiamo orchestrare l'infrastruttura sottostante usando Terraform in GitLab. Per standardizzare la sicurezza del SDLC, possiamo anche integrare GitLab con Vault per la gestione dei segreti e dei token nei pipeline CI/CD, fornendo una soluzione completa per sviluppatori e amministratori che si affidano alla gestione dei segreti nello sviluppo, test e nell'uso in produzione.

Le soluzioni congiunte sviluppate da HashiCorp e GitLab aiutano le aziende a trovare il modo migliore per sviluppare applicazioni, fornendo una gestione coerente dei flussi di distribuzione e dell'infrastruttura. Waypoint ha fatto un ulteriore passo nella giusta direzione e non vediamo l'ora di vedere il futuro sviluppo del progetto. Puoi scoprire di più su Waypoint qui, vale anche la pena investire del tempo per esaminare il la documentazione e piano di sviluppo del progetto. Abbiamo aggiunto le conoscenze che abbiamo acquisito nella documentazione GitLab CICD. Se desideri provare tutto in azione, puoi prendere un esempio funzionante completo in questo repository.

Comprendere i principi del CI/CD, padroneggiare tutte le sfumature del lavoro con Gitlab CI e iniziare ad applicare le migliori pratiche è possibile seguendo un corso video "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