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

Waypoint è una delle , che funzionano ottimamente con GitLab. Ad esempio, oltre alla distribuzione dell'applicazione, possiamo orchestrare l'infrastruttura sottostante usando . Per standardizzare la sicurezza del SDLC, possiamo anche integrare 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 , vale anche la pena investire del tempo per esaminare il e del progetto. Abbiamo aggiunto le conoscenze che abbiamo acquisito nella . Se desideri provare tutto in azione, puoi prendere un esempio funzionante completo in .
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 . Unisciti a noi!
Fonte: habr.com
