
HashiCorp ha presentato un nuovo progetto con . 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 e straordinari 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 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 (), 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 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 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. . 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 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 per l'autenticazione e l'autorizzazione. HashiCorp ha anche rilasciato questa settimana un progetto impressionante . 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 . 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 , 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 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 releaseVedi 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:

Waypoint è una delle , che funziona perfettamente con GitLab. Ad esempio, oltre a distribuire l'applicazione, possiamo orchestrare l'infrastruttura sottostante utilizzando . Per standardizzare la sicurezza del SDLC, possiamo anche implementare 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 , vale anche la pena esplorare e del progetto. Abbiamo integrato le conoscenze acquisite nella . Se vuoi provare tutto in prima persona, puoi prendere un esempio completo e funzionante in .
Comprendere i principi CI/CD, apprendere tutte le sfumature di GitLab CI e iniziare a applicare le migliori pratiche è possibile seguendo il videocorso . Unisciti a noi!
Fonte: habr.com
