Comment utiliser HashiCorp Waypoint pour collaborer avec GitLab CI/CD

Comment utiliser HashiCorp Waypoint pour collaborer avec GitLab CI/CD

HashiCorp a présenté un nouveau projet Waypoint sur HashiCorp numérique. Il utilise un fichier basé sur HCL pour décrire la création, l'expédition et la publication d'applications pour diverses plates-formes cloud allant de Kubernetes à AWS et Google Cloud Run. Considérez Waypoint comme Terraform et Vagrant réunis pour décrire le processus de création, d'expédition et de publication de vos applications.

Fidèle à son habitude, HashiCorp a publié Waypoint en open source et est accompagné de nombreux exemples. La couche orchestrateur dépend de vous, Waypoint se présente sous la forme d'un exécutable que vous pouvez exécuter directement sur votre ordinateur portable ou à partir de l'outil d'orchestration CI/CD de votre choix. L'objectif de déploiement de vos applications dépend également de vous, car Waypoint prend en charge Kubernetes, Docker, Google Cloud Run, AWS ECS, etc.

Après avoir lu le génial documentation et le plus luxueux des exemples applications fournies par HashiCorp, nous avons décidé d'examiner de plus près l'orchestration Waypoint avec GitLab CI/CD. Pour ce faire, nous prendrons une simple application Node.js exécutée sur AWS ECS à partir de l'exemple de référentiel.

Après avoir cloné le référentiel, regardons la structure de l'application qui affiche une page :

Comment utiliser HashiCorp Waypoint pour collaborer avec GitLab CI/CD

Comme vous l'avez peut-être remarqué, ce projet n'a pas de Dockerfile. Ils ne sont pas ajoutés dans l'exemple, car en principe nous n'en avons pas besoin, car Waypoint s'en chargera pour nous. Regardons le dossier de plus près waypoint.hclpour comprendre ce que cela va faire:

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"
    }
  }
}

Pendant la phase de construction, Waypoint utilise des Cloud Native Buildpacks (NBC) pour déterminer le langage de programmation du projet et créer une image Docker sans utiliser de Dockerfile. En principe, il s'agit de la même technologie qui est utilisée en partie par GitLab DevOps automatique à l'étape de construction automatique. Il est bon de voir que le CNB de la CNCF est de plus en plus adopté par les utilisateurs de l'industrie.

Une fois l'image créée, Waypoint la téléchargera automatiquement dans notre registre AWS ECR afin qu'elle soit prête à être livrée. Une fois la construction terminée, l'étape de livraison utilise Module complémentaire AWS ECS pour déployer notre application sur notre compte AWS.

Depuis mon ordinateur portable, tout est simple. J'ai mis un Waypoint déjà authentifié dans mon compte AWS et cela "fonctionne". Mais que se passe-t-il si je veux aller au-delà de mon ordinateur portable ? Ou est-ce que je souhaite soudainement automatiser ce déploiement dans le cadre de mon pipeline CI/CD global, où sont exécutés mes tests d'intégration en cours, mes tests de sécurité et autres ? C'est la partie de l'histoire où GitLab CI/CD entre en jeu !

NB Si vous envisagez simplement de mettre en œuvre CI/CD ou si vous souhaitez commencer à appliquer les meilleures pratiques pour créer des pipelines, faites attention au nouveau cours de Slurm. « CI/CD utilisant Gitlab CI comme exemple ». Il est désormais disponible au prix de précommande.

Point de cheminement dans GitLab CI/CD

Pour orchestrer tout ça dans GitLab CI/CD, voyons ce dont nous avons besoin dans notre fichier .gitlab-ci.yml:

  • Tout d’abord, vous avez besoin d’une image de base pour y fonctionner. Waypoint fonctionne sur n'importe quelle distribution Linux, il n'a besoin que de Docker, nous pouvons donc fonctionner avec une image Docker générique.
  • Ensuite, vous devez installer Waypoint dans cette image. À l'avenir, nous pourrons collecter image de méta-construction et conteneurisez ce processus pour vous-même.
  • Enfin, nous exécuterons les commandes Waypoint

Ce qui précède décrit tout ce dont notre pipeline aura besoin pour exécuter les scripts nécessaires pour terminer le déploiement, mais pour déployer sur AWS, nous aurons besoin d'une chose supplémentaire : nous devons être connectés à notre compte AWS. Dans la description du Waypoint il y a des projets sur l'authentification et l'autorisation. HashiCorp a également publié un projet impressionnant cette semaine Boundary. Mais pour l’instant, nous pouvons gérer nous-mêmes l’authentification et l’autorisation.

Il existe plusieurs options pour l'authentification GitLab CICD dans AWS. La première option consiste à utiliser le module intégré Caveau HashiCorp. C'est très bien si votre équipe utilise déjà Vault pour la gestion des informations d'identification. Une autre option qui fonctionne si votre équipe gère les autorisations à l'aide d'AWS IAM consiste à vérifier que les tâches de livraison sont déclenchées via Exécuteur GitLab, autorisé à exécuter le déploiement via IAM. Mais si vous souhaitez simplement vous familiariser avec Waypoint et le faire rapidement, il existe une dernière option : ajoutez votre API AWS et vos clés secrètes à Variables d'environnement GitLab CI/CD AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.

Mettre tout cela ensemble

Une fois que nous avons compris l’authentification, nous pouvons commencer ! Notre finale .gitlab-ci.yml Il ressemble à ceci:

waypoint:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  # Define environment variables, e.g. `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

Vous voyez qu'on commence par une image docker:latest et définissez plusieurs variables d'environnement requises par Waypoint. Au chapitre script nous téléchargeons la dernière version de l'exécutable Waypoint et l'installons dans /usr/local/bin. Puisque notre runner est déjà autorisé dans AWS, nous exécutons simplement waypoint init, build, deploy и release.

Le résultat de la tâche de build nous montrera le point de terminaison sur lequel nous avons déployé l'application :

Comment utiliser HashiCorp Waypoint pour collaborer avec GitLab CI/CD

Waypoint un des de nombreuses solutions HashiCorp, fonctionne très bien avec GitLab. Par exemple, en plus de fournir l'application, nous pouvons orchestrer l'infrastructure sous-jacente à l'aide de Terraform dans GitLab. Pour standardiser la sécurité SDLC, nous pouvons également implémenter GitLab avec Vault pour la gestion des secrets et des jetons dans les pipelines CI/CD, fournissant une solution complète pour les développeurs et les administrateurs qui s'appuient sur la gestion des secrets pour le développement, les tests et l'utilisation en production.

Les solutions conjointes développées par HashiCorp et GitLab aident les entreprises à trouver la meilleure façon de développer des applications en garantissant une gestion cohérente de la chaîne d'approvisionnement et des infrastructures. Waypoint a fait un pas de plus dans la bonne direction et nous attendons avec impatience la poursuite du développement du projet. Vous pouvez en savoir plus sur Waypoint ici, mérite également d'être exploré documentation и plan de développement projet. Nous avons ajouté les connaissances que nous avons acquises à Documentation GitLab CICD. Si vous souhaitez tout essayer vous-même en fonctionnement, vous pouvez prendre un exemple fonctionnel complet dans ce référentiel.

Vous pouvez comprendre les principes de CI/CD, maîtriser toutes les subtilités du travail avec Gitlab CI et commencer à appliquer les meilleures pratiques en suivant un cours vidéo « CI/CD utilisant Gitlab CI comme exemple ». Rejoignez-nous maintenant!

Source: habr.com

Ajouter un commentaire