
HashiCorp a présenté un nouveau projet sur . Il utilise un fichier basé sur HCL pour décrire la construction, la livraison et le déploiement d'applications sur différentes plateformes cloud, allant de Kubernetes à AWS et Google Cloud Run. On peut imaginer que Waypoint est une combinaison de Terraform et Vagrant pour décrire le processus de construction, de livraison et de déploiement de vos applications.
Fidèle à elle-même, HashiCorp a lancé Waypoint en open source, accompagné de nombreux exemples. Le niveau d'orchestration dépend de vous, Waypoint se présente sous forme d'exécutable que vous pouvez lancer directement sur votre ordinateur portable ou depuis l'outil d'orchestration CI/CD de votre choix. L'objectif de déploiement des applications est également à votre discrétion, car Waypoint prend en charge Kubernetes, Docker, Google Cloud Run, AWS ECS et d'autres.
Après avoir consulté des et magnifiques applications fournies par HashiCorp, nous avons décidé de nous pencher de plus près sur l'orchestration de Waypoint avec GitLab CI/CD. Pour ce faire, nous allons prendre une simple application Node.js, déployée sur AWS ECS, depuis le dépôt d'exemples.
Après avoir cloné le dépôt, examinons la structure de l'application qui affiche une seule page :

Comme vous avez pu le remarquer, ce projet ne contient pas de Dockerfile. Ils ne sont pas inclus dans l'exemple car nous n'en avons pas besoin, puisque Waypoint s'en occupera pour nous. Examinons de plus près le fichier waypoint.hcl, pour comprendre ce qu'il fera :
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"
}
}
}À l'étape de construction, Waypoint utilise Cloud Native Buildpacks (), pour déterminer le langage de programmation du projet et créer une image Docker sans utiliser de Dockerfile. En principe, c'est la même technologie que celle utilisée par GitLab dans sa partie à l'étape Auto Build. Il est agréable de voir que le CNB de la CNCF gagne en popularité auprès des utilisateurs de l'industrie.
Une fois l'image construite, Waypoint la téléchargera automatiquement dans notre registre AWS ECR, afin qu'elle soit prête pour la livraison. À l'issue de la construction, l'étape de livraison utilise pour déployer notre application dans notre compte AWS.
Depuis mon ordinateur portable, tout est simple. J'installe Waypoint, qui est déjà authentifié dans mon compte AWS, et ça « fonctionne tout simplement ». Mais que se passe-t-il si je veux aller au-delà de mon ordinateur portable ? Ou si je veux automatiser ce déploiement dans le cadre de mon pipeline CI/CD, où mes tests d'intégration actuels, mes tests de sécurité et autres s'exécutent ? C'est à ce moment-là que GitLab CI/CD entre en jeu !
N.B. Si vous prévoyez de mettre en œuvre CI/CD ou si vous voulez commencer à appliquer les meilleures pratiques de construction de pipelines, pensez au nouveau cours de Slyerma. . Il est actuellement disponible à prix de précommande.
Waypoint dans GitLab CI/CD
Pour orchestrer tout cela dans GitLab CI/CD, voyons ce dont nous aurons besoin dans notre fichier. .gitlab-ci.yml:
- Tout d'abord, nous avons besoin d'une image de base pour l'exécuter. Waypoint fonctionne sur n'importe quelle distribution Linux, il nécessite juste Docker, donc nous pouvons démarrer avec une image Docker générique.
- Ensuite, nous devons installer Waypoint dans cette image. À l'avenir, nous pourrons construire et conteneuriser ce processus pour nous.
- Enfin, nous allons exécuter les commandes Waypoint.
Ce qui précède décrit tout ce dont notre pipeline a besoin pour exécuter les scripts nécessaires à la réalisation du déploiement, mais pour déployer sur AWS, nous aurons besoin d'une chose supplémentaire : nous devons nous authentifier dans notre compte AWS. Dans la documentation de Waypoint pour l'authentification et l'autorisation. HashiCorp a également lancé cette semaine un projet impressionnant . Mais pour le moment, nous pouvons simplement gérer nous-mêmes l'authentification et l'autorisation.
Pour l'authentification de GitLab CI/CD dans AWS, il existe plusieurs options. La première option est d'utiliser le intégré. Cela conviendra si votre équipe utilise déjà Vault pour la gestion des credentials. Une autre méthode, qui est appropriée si votre équipe gère l'autorisation avec AWS IAM — vérifiez que les tâches de livraison sont lancées via , autorisé à déclencher le déploiement via IAM. Mais si vous souhaitez simplement découvrir Waypoint et le faire rapidement, il y a une dernière option : ajouter vos clés AWS API et Secret dans AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY.
Assemblons tout ensemble
Une fois que nous avons réglé l'authentification, nous pouvons commencer ! Notre final .gitlab-ci.yml semble être le suivant :
waypoint:
image: docker:latest
stage: build
services:
- docker:dind
# Définir les variables d'environnement, par exemple `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 releaseVous voyez que nous commençons avec l'image docker:latest et que nous définissons plusieurs variables d'environnement requises pour Waypoint. Dans la section script nous téléchargeons la dernière version de l'exécutable Waypoint et l'installons dans /usr/local/bin. Étant donné que notre runner est déjà authentifié auprès d'AWS, nous exécutons simplement waypoint init, build, deploy et release.
La sortie de la tâche de construction nous montrera l'endpoint où nous avons déployé l'application :

Waypoint est l'un des , qui fonctionne très bien avec GitLab. Par exemple, en plus du déploiement de l'application, nous pouvons orchestrer l'infrastructure sous-jacente à l'aide de . Pour standardiser la sécurité du SDLC, nous pouvons également intégrer pour gérer les secrets et les tokens dans les pipelines CI/CD, offrant une solution complète pour les développeurs et les administrateurs qui s'appuient sur la gestion des secrets lors du développement, des tests et de l'utilisation en production.
Les solutions conjointes développées par HashiCorp et GitLab aident les entreprises à trouver les meilleures façons de développer des applications, garantissant une gestion cohérente des flux de livraison et de l'infrastructure. Waypoint a fait un pas supplémentaire dans la bonne direction, et nous attendons avec impatience les prochaines évolutions du projet. Vous pouvez en apprendre plus sur Waypoint , il vaut également la peine d'explorer et le projet. Nous avons ajouté les connaissances acquises dans . Si vous souhaitez essayer tout cela par vous-même, vous pouvez obtenir un exemple complet fonctionnel dans .
Comprendre les principes du CI/CD, maîtriser toutes les subtilités de Gitlab CI et commencer à appliquer les meilleures pratiques peuvent être réalisés en suivant le cours vidéo . Rejoignez-nous !
Source : habr.com
