[DOCKER] Déploiement super facile des applications à l'aide de Waypoint

Aperçu

Le 15 octobre 2020, Hashi Corp a annoncé un nouveau produit appelé Waypoint.

En termes simples, c'est un excellent outil qui vous permet de créer et de déployer en une seule ligne vers des environnements cloud tels que Amazon EC2, ECS, Google Cloud Run et Azure Container Instances avec un seul fichier de configuration de déploiement.

fonction

Les applications cloud natives s'exécutent souvent sur une infrastructure de conteneur telle qu'ECS et Kubernetes, mais les configurations de déploiement et les commandes deviennent souvent compliquées en fonction de la configuration du service. Waypoint vous permet de gérer vos fichiers de configuration en un mot et permet à votre application d'exécuter le cycle de publication avec un flux de travail plus simple. génial.

Vérification

Je l'ai essayé dans un environnement Mac. Le Manuel décrit également comment configurer manuellement ou dans un environnement Linux.

Exécutons l'exemple d'application publié sur Waypoint avec Docker. Tout d'abord, installez Waypoint avec brew.

$ brew tap hashicorp/tap
$ brew install hashicorp/tap/waypoint

Jetez un œil à l'aide.

% waypoint --help
Welcome to Waypoint
Docs: https://waypointproject.io
Version: v0.1.2

Usage: waypoint [-version] [-help] [-autocomplete-(un)install] <command> [args]

Common commands
  build        Build a new versioned artifact from source
  deploy       Deploy a pushed artifact
  release      Release a deployment
  up           Perform the build, deploy, and release steps for the app

Other commands
  artifact        Artifact and build management
  config          Application configuration management
  context         Server access configurations
  deployment      Deployment creation and management
  destroy         Delete all the resources created for an app
  docs            Show documentation for components
  exec            Execute a command in the context of a running application instance
  hostname        Application URLs
  init            Initialize and validate a project
  install         Install the Waypoint server to Kubernetes, Nomad, or Docker
  logs            Show log output from the current application deployment
  runner          Runner management
  server          Server management
  token           Authenticate and invite collaborators
  ui              Open the web UI
  version         Prints the version of this Waypoint CLI

Vous pouvez voir que la commande «waypoint up» introduite plus tôt est une commande qui exécute collectivement «waypoint build», «waypoint deploy» et «waypoint relase».

Téléchargez ensuite l'exemple d'application. En plus de Docker, l'exemple contient du code à déployer sur Amazon ECS et Google Cloud Run.

$ git clone https://github.com/hashicorp/waypoint-examples.git
$ cd waypoint-examples
$ ls
README.md                azure-container-instance google-cloud-run         waypoint.hcl
aws-ecs                  data.db                  kubernetes
aws-eks                  docker                   nomad

#Cette fois, Node sur Docker.Je vais bouger js
$ cd docker/nodejs

Installez le serveur Waypoint. Le serveur Waypoint est une console qui gère les flux de travail des applications.

$ docker pull hashicorp/waypoint:latest
$ waypoint install -platform=docker -accept-tos

Un fichier de configuration de déploiement est requis pour déployer l'application. Cela peut être créé avec la commande waypoint init, mais l'exemple d'application a créé le fichier.

waypoint.hcl


project = "example-nodejs"

app "example-nodejs" {
  labels = {
    "service" = "example-nodejs",
    "env" = "dev"
  }

  build {
    use "pack" {}
  }

  deploy {
    use "docker" {}
  }
}

Initialisez l'application.

$ waypoint init
✓ Configuration file appears valid
✓ Connection to Waypoint server was successful
✓ Project "example-nodejs" and all apps are registered with the server.
✓ Plugins loaded and configured successfully
✓ Authentication requirements appear satisfied.

Project initialized!

You may now call 'waypoint up' to deploy your project or
commands such as 'waypoint build' to perform steps individually.

Et déployez. Comme vous pouvez le voir en regardant la structure des répertoires de l'application, vous remarquerez que le Dockerfile est manquant. La façon de le construire est que Waypoint détecte automatiquement le type d'application à partir de la structure du fichier et génère automatiquement le Dockerfile lui-même à l'aide du pack de construction optimal. intelligent.

$ waypoint up

La construction prend du temps, alors lançons l'interface utilisateur de Waypoint pendant ce temps.

$ waypoint ui

La console Waypoint sera lancée dans votre navigateur.

Screen Shot 2020-10-18 at 23.15.30.png

On vous demandera d'abord un jeton d'authentification, alors émettons le jeton à partir de la CLI. Vous pouvez être authentifié en collant la valeur générée dans le formulaire.

$ waypoint token new

ʻL'écran d'exemple-nodejs` s'ouvre. À partir de cet écran, vous pouvez exécuter l'état de la construction, le journal de déploiement et même des commandes sur le conteneur.

Screen Shot 2020-10-18 at 23.17.38.png

Revenons à la CLI et vérifions l'état de la construction.

$ waypoint up

» Building...
Creating new buildpack-based image using builder: heroku/buildpacks:18
✓ Creating pack client
✓ Building image
 │ [exporter] Adding 1/1 app layer(s)
 │ [exporter] Reusing layer 'launcher'
 │ [exporter] Adding layer 'config'
 │ [exporter] Adding label 'io.buildpacks.lifecycle.metadata'
 │ [exporter] Adding label 'io.buildpacks.build.metadata'
 │ [exporter] Adding label 'io.buildpacks.project.metadata'
 │ [exporter] *** Images (e2a2e3a85138):
 │ [exporter]       index.docker.io/library/example-nodejs:latest
 │ [exporter] Reusing cache layer 'heroku/nodejs-engine:nodejs'
 │ [exporter] Reusing cache layer 'heroku/nodejs-engine:toolbox'
✓ Injecting entrypoint binary to image

Generated new Docker image: example-nodejs:latest

» Deploying...
✓ Setting up waypoint network
✓ Starting container

» Releasing...

The deploy was successful! A Waypoint deployment URL is shown below. This
can be used internally to check your deployment and is not meant for external
traffic. You can manage this hostname using "waypoint hostname."

           URL: https://***.waypoint.run
Deployment URL: https://***--v1.waypoint.run

Ouvrez l'URL écrite dans l'URL de déploiement pour démarrer l'application. ([^ 3])

Screen Shot 2020-10-18 at 23.21.17.png

Puisque le déploiement a réussi, réécrivons le contenu du modèle affiché.

views/pages/index.js


<h1>This Node.js app was deployed with Waypoint.</h1>
<h2>Hello world!</h2>

J'ai essayé d'ajouter «

» sous «

». Exécutez à nouveau le déploiement.

           URL: https://***.waypoint.run
Deployment URL: https://***--v2.waypoint.run

Le sous-domaine contenu dans l '"URL de déploiement" est devenu "v2".

Screen Shot 2020-10-18 at 23.38.29.png

Le «Hello World» s'affiche correctement! ([^ 4])

Quand je l'ai touché légèrement, j'ai eu l'impression que c'était un logiciel qui faisait abstraction du déploiement comme Elastic Beanstalk d'AWS. En introduisant Waypoint, le flux de déploiement peut être séparé de la configuration de l'application, et il semble que l'état de publication de divers services puisse être géré de manière centralisée.

[^ 1]: Il semble être utilisé au moment de la construction si Dockerfile est détecté dans le répertoire de l'application [^ 2]: Vous devez créer un serveur Waypoint pour le développement de l'équipe [^ 3]: waypoint.run est un hôte public fourni par HashiCorp. Puisqu'il s'agit d'un environnement de vérification, il est nécessaire de préparer un hôte pour l'opération de production. Voir Service URL Waypoint pour plus d'informations. [^ 4]: Vous pouvez également ouvrir l'application précédente en accédant à l'URL de v1

Recommended Posts

Déploiement super facile des applications à l'aide de Waypoint
Exemple d'utilisation de vue.config.js
Résumé de l'utilisation de FragmentArgs
Introduction super facile Groovy
Résumé de l'utilisation de DBFlow
[Ruby on Rails] Animation de défilement facile de javascript (en utilisant ScrollReveal.js)