Shayna  Lowe

Shayna Lowe

1660553040

Comment Déployer Vault et Consul de Hashicorp Avec Docker Swarm

Voyons comment déployer Vault et Consul de Hashicorp sur DigitalOcean avec Docker Swarm.

À la fin, vous serez en mesure de :

  1. Provisionner des hôtes sur DigitalOcean avec Docker Machine
  2. Configurer un cluster Docker Swarm pour qu'il s'exécute sur DigitalOcean
  3. Exécutez Vault et Consul sur Docker Swarm

Principales dépendances :

  • Docker v20.10.8
  • Docker Compose v1.29.2
  • Docker-Machine v0.16.2
  • Coffre-fort v1.8.3
  • Consul v1.10.3

Consul

Créez un nouveau répertoire de projet :

$ mkdir vault-consul-swarm && cd vault-consul-swarm

Ajoutez ensuite un fichier docker-compose.yml à la racine du projet :

version: "3.8"

services:

  server-bootstrap:
    image: consul:1.10.3
    ports:
      - 8500:8500
    command: "agent -server -bootstrap-expect 3 -ui -client 0.0.0.0 -bind '{{ GetInterfaceIP \"eth0\" }}'"

  server:
    image: consul:1.10.3
    command: "agent -server -retry-join server-bootstrap -client 0.0.0.0 -bind '{{ GetInterfaceIP \"eth0\" }}'"
    deploy:
      replicas: 2
    depends_on:
      - server-bootstrap

  client:
    image: consul:1.10.3
    command: "agent -retry-join server-bootstrap -client 0.0.0.0 -bind '{{ GetInterfaceIP \"eth0\" }}'"
    deploy:
      replicas: 2
    depends_on:
      - server-bootstrap

networks:
  default:
    external: true
    name: core

Cette configuration devrait vous sembler familière.

  1. Reportez-vous à la section Compose File du billet de blog Running Flask on Docker Swarm pour plus d'informations sur l'utilisation d'un fichier de composition pour le mode Docker Swarm.
  2. Consultez le guide Consul et Docker pour plus d'informations sur la configuration Consul ci-dessus.

Essaim Docker

Créez un compte DigitalOcean (si vous n'en avez pas déjà un), puis générez un jeton d'accès pour pouvoir accéder à l'API DigitalOcean.

Ajoutez le jeton à votre environnement :

$ export DIGITAL_OCEAN_ACCESS_TOKEN=[your_digital_ocean_token]

Faites tourner trois gouttelettes :

$ for i in 1 2 3; do
    docker-machine create \
      --driver digitalocean \
      --digitalocean-region "nyc1" \
      --digitalocean-image=debian-10-x64 \
      --engine-install-url "https://releases.rancher.com/install-docker/19.03.9.sh" \
      --digitalocean-access-token $DIGITAL_OCEAN_ACCESS_TOKEN \
      node-$i;
done

Initialisez le mode Swarm sur le premier nœud,node-1 :

$ docker-machine ssh node-1 -- docker swarm init --advertise-addr $(docker-machine ip node-1)

Utilisez le jeton de jointure de la sortie de la commande précédente pour ajouter les deux nœuds restants au Swarm en tant que nœuds de calcul :

$ for i in 2 3; do
    docker-machine ssh node-$i -- docker swarm join --token YOUR_JOIN_TOKEN HOST:PORT;
done

Par exemple:

for i in 2 3; do
    docker-machine ssh node-$i -- docker swarm join --token SWMTKN-1-18xrfgcgq7k6krqr7tvav3ydx5c5104y662lzh4pyct2t0ror3-e3ed1ggivhf8z15i40z6x55g5 67.205.165.166:2377;
done

Tu devrais voir:

This node joined a swarm as a worker.
This node joined a swarm as a worker.

Pointez le démon Docker sur , créez un réseau de superpositionnode-1 attachable (appelé ) et déployez la pile :core

$ eval $(docker-machine env node-1)
$ docker network create -d overlay --attachable core
$ docker stack deploy --compose-file=docker-compose.yml secrets

Répertoriez les services dans la pile :

$ docker stack ps -f "desired-state=running" secrets

Vous devriez voir quelque chose de similaire à :

ID             NAME                         IMAGE          NODE     DESIRED STATE   CURRENT STATE
b5f5eycrhf3o   secrets_client.1             consul:1.10.3   node-1   Running         Running 7 seconds ago
zs7a5t8khcew   secrets_server.1             consul:1.10.3   node-2   Running         Running 9 seconds ago
qnhtlan6m0sp   secrets_server-bootstrap.1   consul:1.10.3   node-1   Running         Running 7 seconds ago
u61eycesmsl7   secrets_client.2             consul:1.10.3   node-2   Running         Running 9 seconds ago
vgpql8lfy5fi   secrets_server.2             consul:1.10.3   node-3   Running         Running 9 seconds ago

Récupérez l'IP associée à node-1:

$ docker-machine ip node-1

Ensuite, testez l'interface utilisateur Consul dans votre navigateur à l' adresse http://YOUR_MACHINE_IP:8500/ui . Il devrait y avoir trois services en cours d'exécution et cinq nœuds.

services d'interface utilisateur consul

nœuds d'interface utilisateur consul

Sauter

Ajoutez le vaultservice à docker-compose.yml :

vault:
  image: vault:1.8.3
  deploy:
    replicas: 1
  ports:
    - 8200:8200
  environment:
    - VAULT_ADDR=http://127.0.0.1:8200
    - VAULT_LOCAL_CONFIG={"backend":{"consul":{"address":"http://server-bootstrap:8500","path":"vault/"}},"listener":{"tcp":{"address":"0.0.0.0:8200","tls_disable":1}},"ui":true, "disable_mlock":true}
  command: server
  depends_on:
    - consul

Prenez note de la VAULT_LOCAL_CONFIGvariable d'environnement :

{
  "backend": {
    "consul": {
      "address": "http://server-bootstrap:8500",
      "path": "vault/"
    }
  },
  "listener": {
    "tcp": {
      "address": "0.0.0.0:8200",
      "tls_disable": 1
    }
  },
  "ui": true,
  "disable_mlock": true
}

Consultez la section Consul Backend du billet de blog Managing Secrets with Vault and Consul pour plus d'informations. De plus, définir disable_mlock sur truen'est pas recommandé pour les environnements de production ; cependant, il doit être activé car il --cap-addn'est pas disponible en mode Docker Swarm. Consultez les problèmes GitHub suivants pour plus de détails :

  1. --cap-add=IPC_LOCK indisponible dans l'essaim docker
  2. Absent de Swarmmode --cap-add

Test

Redéployez la pile :

$ docker stack deploy --compose-file=docker-compose.yml secrets

Attendez quelques secondes que les services démarrent, puis vérifiez l'état :

$ docker stack ps -f "desired-state=running" secrets

Encore une fois, vous devriez voir quelque chose de similaire à :

ID             NAME                         IMAGE           NODE      DESIRED STATE   CURRENT STATE
xtfsetfrbrs7   secrets_client.1             consul:1.10.3   node-3    Running         Running 19 minutes ago
ydqxexgiyzb2   secrets_client.2             consul:1.10.3   node-1    Running         Running 19 minutes ago
izlku3y6j8rp   secrets_server-bootstrap.1   consul:1.10.3   node-2    Running         Running 19 minutes ago
zqpkcrhrix2x   secrets_server.1             consul:1.10.3   node-1    Running         Running 19 minutes ago
kmlxuhxw1akv   secrets_server.2             consul:1.10.3   node-2    Running         Running 19 minutes ago
wfmscoj53m39   secrets_vault.1              vault:1.8.3     node-3    Running         Running about a minute ago

Ensuite, assurez-vous que Vault est répertorié dans la section "Services" de l'interface utilisateur Consul :

services d'interface utilisateur consul

Vous devriez maintenant pouvoir interagir avec Vault via la CLI, l'API HTTP et l'interface utilisateur. Commencez par initialiser et desceller Vault. Ensuite, connectez-vous et créez un nouveau secret.

Supprimez les nœuds une fois terminé :

$ docker-machine rm node-1 node-2 node-3 -y

Script d'automatisation

Enfin, créons un script rapide pour automatiser le processus de déploiement :

  1. Provisionner trois droplets DigitalOcean avec Docker Machine
  2. Configurer le mode Docker Swarm
  3. Ajouter des nœuds au Swarm
  4. Déployer la pile

Ajoutez un nouveau fichier appelé deploy.sh à la racine du projet :

#!/bin/bash


echo "Spinning up three droplets..."

for i in 1 2 3; do
  docker-machine create \
    --driver digitalocean \
    --digitalocean-region "nyc1" \
    --digitalocean-image=debian-10-x64 \
    --engine-install-url "https://releases.rancher.com/install-docker/19.03.9.sh" \
    --digitalocean-access-token $DIGITAL_OCEAN_ACCESS_TOKEN \
    node-$i;
done


echo "Initializing Swarm mode..."

docker-machine ssh node-1 -- docker swarm init --advertise-addr $(docker-machine ip node-1)


echo "Adding the nodes to the Swarm..."

TOKEN=`docker-machine ssh node-1 docker swarm join-token worker | grep token | awk '{ print $5 }'`

for i in 2 3; do
  docker-machine ssh node-$i \
    -- docker swarm join --token ${TOKEN} $(docker-machine ip node-1):2377;
done


echo "Creating networking..."

eval $(docker-machine env node-1)
docker network create -d overlay --attachable core


echo "Deploying the stack..."

docker stack deploy --compose-file=docker-compose.yml secrets

Essaye le!

$ sh deploy.sh

Faites tomber les gouttelettes une fois fait :

$ docker-machine rm node-1 node-2 node-3 -y

Le code peut être trouvé dans le référentiel Vault-consul- swarm. Acclamations!

Source :  https://testdrive.io

#vault #docker 

What is GEEK

Buddha Community

Comment Déployer Vault et Consul de Hashicorp Avec Docker Swarm
Shayna  Lowe

Shayna Lowe

1660553040

Comment Déployer Vault et Consul de Hashicorp Avec Docker Swarm

Voyons comment déployer Vault et Consul de Hashicorp sur DigitalOcean avec Docker Swarm.

À la fin, vous serez en mesure de :

  1. Provisionner des hôtes sur DigitalOcean avec Docker Machine
  2. Configurer un cluster Docker Swarm pour qu'il s'exécute sur DigitalOcean
  3. Exécutez Vault et Consul sur Docker Swarm

Principales dépendances :

  • Docker v20.10.8
  • Docker Compose v1.29.2
  • Docker-Machine v0.16.2
  • Coffre-fort v1.8.3
  • Consul v1.10.3

Consul

Créez un nouveau répertoire de projet :

$ mkdir vault-consul-swarm && cd vault-consul-swarm

Ajoutez ensuite un fichier docker-compose.yml à la racine du projet :

version: "3.8"

services:

  server-bootstrap:
    image: consul:1.10.3
    ports:
      - 8500:8500
    command: "agent -server -bootstrap-expect 3 -ui -client 0.0.0.0 -bind '{{ GetInterfaceIP \"eth0\" }}'"

  server:
    image: consul:1.10.3
    command: "agent -server -retry-join server-bootstrap -client 0.0.0.0 -bind '{{ GetInterfaceIP \"eth0\" }}'"
    deploy:
      replicas: 2
    depends_on:
      - server-bootstrap

  client:
    image: consul:1.10.3
    command: "agent -retry-join server-bootstrap -client 0.0.0.0 -bind '{{ GetInterfaceIP \"eth0\" }}'"
    deploy:
      replicas: 2
    depends_on:
      - server-bootstrap

networks:
  default:
    external: true
    name: core

Cette configuration devrait vous sembler familière.

  1. Reportez-vous à la section Compose File du billet de blog Running Flask on Docker Swarm pour plus d'informations sur l'utilisation d'un fichier de composition pour le mode Docker Swarm.
  2. Consultez le guide Consul et Docker pour plus d'informations sur la configuration Consul ci-dessus.

Essaim Docker

Créez un compte DigitalOcean (si vous n'en avez pas déjà un), puis générez un jeton d'accès pour pouvoir accéder à l'API DigitalOcean.

Ajoutez le jeton à votre environnement :

$ export DIGITAL_OCEAN_ACCESS_TOKEN=[your_digital_ocean_token]

Faites tourner trois gouttelettes :

$ for i in 1 2 3; do
    docker-machine create \
      --driver digitalocean \
      --digitalocean-region "nyc1" \
      --digitalocean-image=debian-10-x64 \
      --engine-install-url "https://releases.rancher.com/install-docker/19.03.9.sh" \
      --digitalocean-access-token $DIGITAL_OCEAN_ACCESS_TOKEN \
      node-$i;
done

Initialisez le mode Swarm sur le premier nœud,node-1 :

$ docker-machine ssh node-1 -- docker swarm init --advertise-addr $(docker-machine ip node-1)

Utilisez le jeton de jointure de la sortie de la commande précédente pour ajouter les deux nœuds restants au Swarm en tant que nœuds de calcul :

$ for i in 2 3; do
    docker-machine ssh node-$i -- docker swarm join --token YOUR_JOIN_TOKEN HOST:PORT;
done

Par exemple:

for i in 2 3; do
    docker-machine ssh node-$i -- docker swarm join --token SWMTKN-1-18xrfgcgq7k6krqr7tvav3ydx5c5104y662lzh4pyct2t0ror3-e3ed1ggivhf8z15i40z6x55g5 67.205.165.166:2377;
done

Tu devrais voir:

This node joined a swarm as a worker.
This node joined a swarm as a worker.

Pointez le démon Docker sur , créez un réseau de superpositionnode-1 attachable (appelé ) et déployez la pile :core

$ eval $(docker-machine env node-1)
$ docker network create -d overlay --attachable core
$ docker stack deploy --compose-file=docker-compose.yml secrets

Répertoriez les services dans la pile :

$ docker stack ps -f "desired-state=running" secrets

Vous devriez voir quelque chose de similaire à :

ID             NAME                         IMAGE          NODE     DESIRED STATE   CURRENT STATE
b5f5eycrhf3o   secrets_client.1             consul:1.10.3   node-1   Running         Running 7 seconds ago
zs7a5t8khcew   secrets_server.1             consul:1.10.3   node-2   Running         Running 9 seconds ago
qnhtlan6m0sp   secrets_server-bootstrap.1   consul:1.10.3   node-1   Running         Running 7 seconds ago
u61eycesmsl7   secrets_client.2             consul:1.10.3   node-2   Running         Running 9 seconds ago
vgpql8lfy5fi   secrets_server.2             consul:1.10.3   node-3   Running         Running 9 seconds ago

Récupérez l'IP associée à node-1:

$ docker-machine ip node-1

Ensuite, testez l'interface utilisateur Consul dans votre navigateur à l' adresse http://YOUR_MACHINE_IP:8500/ui . Il devrait y avoir trois services en cours d'exécution et cinq nœuds.

services d'interface utilisateur consul

nœuds d'interface utilisateur consul

Sauter

Ajoutez le vaultservice à docker-compose.yml :

vault:
  image: vault:1.8.3
  deploy:
    replicas: 1
  ports:
    - 8200:8200
  environment:
    - VAULT_ADDR=http://127.0.0.1:8200
    - VAULT_LOCAL_CONFIG={"backend":{"consul":{"address":"http://server-bootstrap:8500","path":"vault/"}},"listener":{"tcp":{"address":"0.0.0.0:8200","tls_disable":1}},"ui":true, "disable_mlock":true}
  command: server
  depends_on:
    - consul

Prenez note de la VAULT_LOCAL_CONFIGvariable d'environnement :

{
  "backend": {
    "consul": {
      "address": "http://server-bootstrap:8500",
      "path": "vault/"
    }
  },
  "listener": {
    "tcp": {
      "address": "0.0.0.0:8200",
      "tls_disable": 1
    }
  },
  "ui": true,
  "disable_mlock": true
}

Consultez la section Consul Backend du billet de blog Managing Secrets with Vault and Consul pour plus d'informations. De plus, définir disable_mlock sur truen'est pas recommandé pour les environnements de production ; cependant, il doit être activé car il --cap-addn'est pas disponible en mode Docker Swarm. Consultez les problèmes GitHub suivants pour plus de détails :

  1. --cap-add=IPC_LOCK indisponible dans l'essaim docker
  2. Absent de Swarmmode --cap-add

Test

Redéployez la pile :

$ docker stack deploy --compose-file=docker-compose.yml secrets

Attendez quelques secondes que les services démarrent, puis vérifiez l'état :

$ docker stack ps -f "desired-state=running" secrets

Encore une fois, vous devriez voir quelque chose de similaire à :

ID             NAME                         IMAGE           NODE      DESIRED STATE   CURRENT STATE
xtfsetfrbrs7   secrets_client.1             consul:1.10.3   node-3    Running         Running 19 minutes ago
ydqxexgiyzb2   secrets_client.2             consul:1.10.3   node-1    Running         Running 19 minutes ago
izlku3y6j8rp   secrets_server-bootstrap.1   consul:1.10.3   node-2    Running         Running 19 minutes ago
zqpkcrhrix2x   secrets_server.1             consul:1.10.3   node-1    Running         Running 19 minutes ago
kmlxuhxw1akv   secrets_server.2             consul:1.10.3   node-2    Running         Running 19 minutes ago
wfmscoj53m39   secrets_vault.1              vault:1.8.3     node-3    Running         Running about a minute ago

Ensuite, assurez-vous que Vault est répertorié dans la section "Services" de l'interface utilisateur Consul :

services d'interface utilisateur consul

Vous devriez maintenant pouvoir interagir avec Vault via la CLI, l'API HTTP et l'interface utilisateur. Commencez par initialiser et desceller Vault. Ensuite, connectez-vous et créez un nouveau secret.

Supprimez les nœuds une fois terminé :

$ docker-machine rm node-1 node-2 node-3 -y

Script d'automatisation

Enfin, créons un script rapide pour automatiser le processus de déploiement :

  1. Provisionner trois droplets DigitalOcean avec Docker Machine
  2. Configurer le mode Docker Swarm
  3. Ajouter des nœuds au Swarm
  4. Déployer la pile

Ajoutez un nouveau fichier appelé deploy.sh à la racine du projet :

#!/bin/bash


echo "Spinning up three droplets..."

for i in 1 2 3; do
  docker-machine create \
    --driver digitalocean \
    --digitalocean-region "nyc1" \
    --digitalocean-image=debian-10-x64 \
    --engine-install-url "https://releases.rancher.com/install-docker/19.03.9.sh" \
    --digitalocean-access-token $DIGITAL_OCEAN_ACCESS_TOKEN \
    node-$i;
done


echo "Initializing Swarm mode..."

docker-machine ssh node-1 -- docker swarm init --advertise-addr $(docker-machine ip node-1)


echo "Adding the nodes to the Swarm..."

TOKEN=`docker-machine ssh node-1 docker swarm join-token worker | grep token | awk '{ print $5 }'`

for i in 2 3; do
  docker-machine ssh node-$i \
    -- docker swarm join --token ${TOKEN} $(docker-machine ip node-1):2377;
done


echo "Creating networking..."

eval $(docker-machine env node-1)
docker network create -d overlay --attachable core


echo "Deploying the stack..."

docker stack deploy --compose-file=docker-compose.yml secrets

Essaye le!

$ sh deploy.sh

Faites tomber les gouttelettes une fois fait :

$ docker-machine rm node-1 node-2 node-3 -y

Le code peut être trouvé dans le référentiel Vault-consul- swarm. Acclamations!

Source :  https://testdrive.io

#vault #docker 

Panmure  Anho

Panmure Anho

1601301859

Kubernetes vs. Docker Swarm (k8 vs Docker Swarm)

Basically, both Kubernetes and Docker Swarm both are the container orchestration tool. The rise in interest to containers has in turn brought in higher demands for their deployment and management. Both Kubernetes and Docker Swarm are important tools that are used to deploy containers inside a cluster. So the question arises here is which one to use?

So lets discuss one by one and see the the differances between them.

Introduction to Kubernetes:

The name Kubernetes originates from Greek, meaning helmsman or pilot. Kubernetes is an open-source, portable, and extensible platform for managing containerized workload and services. That facilitates both declarative configuration and automation. Kubernetes manage the containers that run the applications and ensure that there is no downtime into a huge scale production environment.

Introduction to Docker swarm:

Docker swarm is a container orchestration tool, meaning that it allows the user to manage multiple containers deployed across multiple host machines. Docker Swarm is designed to work around four key principles:

  1. Less cluttered/heavy and with just working methodology
  2. No Single Point of Failure option for Docker Swarm
  3. Secure due to auto-generation of security certificates.
  4. Compatibility with Backward versions easily.

Here you get to know that both in some manner are the same , So now let’s check out the differences and see:

#devops #docker #docker swarm #kubernetes #swarm

Cómo Implementar Vault Y Consul De Hashicorp Con Docker Swarm

Veamos cómo implementar Vault y Consul de Hashicorp en DigitalOcean con Docker Swarm.

Al finalizar, podrá:

  1. Aprovisione hosts en DigitalOcean con Docker Machine
  2. Configure un clúster de Docker Swarm para que se ejecute en DigitalOcean
  3. Ejecute Vault y Consul en Docker Swarm

Dependencias principales:

  • Ventana acoplable v20.10.8
  • Docker-Componer v1.29.2
  • Docker-Máquina v0.16.2
  • Bóveda v1.8.3
  • Cónsul v1.10.3

Cónsul

Cree un nuevo directorio de proyecto:

$ mkdir vault-consul-swarm && cd vault-consul-swarm

Luego, agregue un archivo docker-compose.yml a la raíz del proyecto:

version: "3.8"services:  server-bootstrap:    image: consul:1.10.3    ports:      - 8500:8500    command: "agent -server -bootstrap-expect 3 -ui -client 0.0.0.0 -bind '{{ GetInterfaceIP \"eth0\" }}'"  server:    image: consul:1.10.3    command: "agent -server -retry-join server-bootstrap -client 0.0.0.0 -bind '{{ GetInterfaceIP \"eth0\" }}'"    deploy:      replicas: 2    depends_on:      - server-bootstrap  client:    image: consul:1.10.3    command: "agent -retry-join server-bootstrap -client 0.0.0.0 -bind '{{ GetInterfaceIP \"eth0\" }}'"    deploy:      replicas: 2    depends_on:      - server-bootstrapnetworks:  default:    external: true    name: core

Esta configuración debería resultarle familiar.

  1. Consulte la sección Componer archivo de la publicación de blog Running Flask en Docker Swarm para obtener más información sobre el uso de un archivo de composición para el modo Docker Swarm.
  2. Consulte la guía de Consul y Docker para obtener información sobre la configuración de Consul anterior.

Enjambre Docker

Regístrese para obtener una cuenta de DigitalOcean (si aún no tiene una) y luego genere un token de acceso para poder acceder a la API de DigitalOcean.

Agregue el token a su entorno:

$ export DIGITAL_OCEAN_ACCESS_TOKEN=[your_digital_ocean_token]

Haz girar tres gotas:

$ for i in 1 2 3; do    docker-machine create \      --driver digitalocean \      --digitalocean-region "nyc1" \      --digitalocean-image=debian-10-x64 \      --engine-install-url "https://releases.rancher.com/install-docker/19.03.9.sh" \      --digitalocean-access-token $DIGITAL_OCEAN_ACCESS_TOKEN \      node-$i;done

Inicialice el modo Swarm en el primer nodo node-1:

$ docker-machine ssh node-1 -- docker swarm init --advertise-addr $(docker-machine ip node-1)

Use el token de unión de la salida del comando anterior para agregar los dos nodos restantes al Swarm como trabajadores:

$ for i in 2 3; do    docker-machine ssh node-$i -- docker swarm join --token YOUR_JOIN_TOKEN HOST:PORT;done

Por ejemplo:

for i in 2 3; do    docker-machine ssh node-$i -- docker swarm join --token SWMTKN-1-18xrfgcgq7k6krqr7tvav3ydx5c5104y662lzh4pyct2t0ror3-e3ed1ggivhf8z15i40z6x55g5 67.205.165.166:2377;done

Debería ver:

This node joined a swarm as a worker.This node joined a swarm as a worker.

Apunte el demonio de Docker a node-1, cree una red de superposición conectable (llamada core) e implemente la pila:

$ eval $(docker-machine env node-1)$ docker network create -d overlay --attachable core$ docker stack deploy --compose-file=docker-compose.yml secrets

Enumere los servicios en la pila:

$ docker stack ps -f "desired-state=running" secrets

Deberías ver algo similar a:

ID             NAME                         IMAGE          NODE     DESIRED STATE   CURRENT STATEb5f5eycrhf3o   secrets_client.1             consul:1.10.3   node-1   Running         Running 7 seconds agozs7a5t8khcew   secrets_server.1             consul:1.10.3   node-2   Running         Running 9 seconds agoqnhtlan6m0sp   secrets_server-bootstrap.1   consul:1.10.3   node-1   Running         Running 7 seconds agou61eycesmsl7   secrets_client.2             consul:1.10.3   node-2   Running         Running 9 seconds agovgpql8lfy5fi   secrets_server.2             consul:1.10.3   node-3   Running         Running 9 seconds ago

Tome la IP asociada con node-1:

$ docker-machine ip node-1

Luego, pruebe la interfaz de usuario de Consul en su navegador en http://YOUR_MACHINE_IP:8500/ui . Debe haber tres servicios en ejecución y cinco nodos.

servicios de interfaz de usuario del cónsul

nodos de la interfaz de usuario del cónsul

Bóveda

Agregue el vaultservicio a docker-compose.yml :

vault:  image: vault:1.8.3  deploy:    replicas: 1  ports:    - 8200:8200  environment:    - VAULT_ADDR=http://127.0.0.1:8200    - VAULT_LOCAL_CONFIG={"backend":{"consul":{"address":"http://server-bootstrap:8500","path":"vault/"}},"listener":{"tcp":{"address":"0.0.0.0:8200","tls_disable":1}},"ui":true, "disable_mlock":true}  command: server  depends_on:    - consul

Toma nota de la VAULT_LOCAL_CONFIGvariable de entorno:

{  "backend": {    "consul": {      "address": "http://server-bootstrap:8500",      "path": "vault/"    }  },  "listener": {    "tcp": {      "address": "0.0.0.0:8200",      "tls_disable": 1    }  },  "ui": true,  "disable_mlock": true}

Consulte la sección Backend de Consul de la publicación de blog Administración de secretos con Vault y Consul para obtener más información. Además, no se recomienda establecer disabled_mlock en trueentornos de producción; sin embargo, debe estar habilitado ya --cap-addque no está disponible en el modo Docker Swarm. Consulte los siguientes problemas de GitHub para obtener más detalles:

  1. --cap-add=IPC_LOCK no disponible en Docker Swarm
  2. Falta en Swarmmode --cap-add

Prueba

Vuelva a implementar la pila:

$ docker stack deploy --compose-file=docker-compose.yml secrets

Espere unos segundos para que los servicios se activen y luego verifique el estado:

$ docker stack ps -f "desired-state=running" secrets

De nuevo, deberías ver algo similar a:

ID             NAME                         IMAGE           NODE      DESIRED STATE   CURRENT STATExtfsetfrbrs7   secrets_client.1             consul:1.10.3   node-3    Running         Running 19 minutes agoydqxexgiyzb2   secrets_client.2             consul:1.10.3   node-1    Running         Running 19 minutes agoizlku3y6j8rp   secrets_server-bootstrap.1   consul:1.10.3   node-2    Running         Running 19 minutes agozqpkcrhrix2x   secrets_server.1             consul:1.10.3   node-1    Running         Running 19 minutes agokmlxuhxw1akv   secrets_server.2             consul:1.10.3   node-2    Running         Running 19 minutes agowfmscoj53m39   secrets_vault.1              vault:1.8.3     node-3    Running         Running about a minute ago

A continuación, asegúrese de que Vault aparezca en la sección "Servicios" de la interfaz de usuario de Consul:

servicios de interfaz de usuario del cónsul

Ahora debería poder interactuar con Vault a través de la CLI, la API HTTP y la interfaz de usuario. Comience por inicializar y abrir Vault. Luego, inicie sesión y cree un nuevo secreto.

Retire los nodos una vez hecho:

$ docker-machine rm node-1 node-2 node-3 -y

Guión de automatización

Finalmente, creemos un script rápido para automatizar el proceso de implementación:

  1. Aprovisione tres gotitas de DigitalOcean con Docker Machine
  2. Configurar el modo Docker Swarm
  3. Agregar nodos al enjambre
  4. Implementar la pila

Agrega un nuevo archivo llamado deployment.sh a la raíz del proyecto:

#!/bin/bashecho "Spinning up three droplets..."for i in 1 2 3; do  docker-machine create \    --driver digitalocean \    --digitalocean-region "nyc1" \    --digitalocean-image=debian-10-x64 \    --engine-install-url "https://releases.rancher.com/install-docker/19.03.9.sh" \    --digitalocean-access-token $DIGITAL_OCEAN_ACCESS_TOKEN \    node-$i;doneecho "Initializing Swarm mode..."docker-machine ssh node-1 -- docker swarm init --advertise-addr $(docker-machine ip node-1)echo "Adding the nodes to the Swarm..."TOKEN=`docker-machine ssh node-1 docker swarm join-token worker | grep token | awk '{ print $5 }'`for i in 2 3; do  docker-machine ssh node-$i \    -- docker swarm join --token ${TOKEN} $(docker-machine ip node-1):2377;doneecho "Creating networking..."eval $(docker-machine env node-1)docker network create -d overlay --attachable coreecho "Deploying the stack..."docker stack deploy --compose-file=docker-compose.yml secrets

¡Pruébalo!

$ sh deploy.sh

Baje las gotas una vez hecho:

$ docker-machine rm node-1 node-2 node-3 -y

El código se puede encontrar en el repositorio vault-consul-swarm . ¡Salud!

Fuente:  https://testdriven.io

#vault #docker 

Iliana  Welch

Iliana Welch

1595249460

Docker Explained: Docker Architecture | Docker Registries

Following the second video about Docker basics, in this video, I explain Docker architecture and explain the different building blocks of the docker engine; docker client, API, Docker Daemon. I also explain what a docker registry is and I finish the video with a demo explaining and illustrating how to use Docker hub

In this video lesson you will learn:

  • What is Docker Host
  • What is Docker Engine
  • Learn about Docker Architecture
  • Learn about Docker client and Docker Daemon
  • Docker Hub and Registries
  • Simple demo to understand using images from registries

#docker #docker hub #docker host #docker engine #docker architecture #api

Aketch  Rachel

Aketch Rachel

1624332660

Selenium Grid With Docker Swarm

In this guide, we will talk about setting up a Selenium Grid using Docker Swarm on any of the cloud services like GCP or AWS.

Let’s start with the basics first, i.e. what is Selenium Grid and Docker Swarm.

What is Selenium Grid?

Selenium Grid allows the execution of WebDriver scripts on remote machines (virtual or real) by routing commands sent by the client to remote browser instances. It aims to provide an easy way to run tests in parallel on multiple machines.

Selenium Grid allows us to run tests in parallel on multiple machines, and to manage different browser versions and browser configurations centrally (instead of in each individual test).

Selenium Grid purposes and main functionalities

  1. A central entry point for all tests
  2. Management and control of the nodes/environment where the browsers run
  3. Scaling
  4. Running tests in parallel
  5. Load balancing

Now a question comes “When to use Grid”?

Generally speaking, there are two reasons why you might want to use Grid.

  1. To run your tests against multiple browsers, multiple versions of browsers, and browsers running on different operating systems.
  2. To reduce the time it takes for the test suite to complete a test pass.

Grid is used to speed up the execution of a test pass by using multiple machines to run tests in parallel. For example, if you have a suite of 100 tests, but you set up Grid to support 4 different machines (VMs or separate physical machines) to run those tests, your test suite will complete in (roughly) one-fourth the time as it would if you ran your tests sequentially on a single machine.

What is Docker Swarm?

Docker swarm is a container orchestration tool, meaning that it allows the user to manage multiple containers deployed across multiple host machines.

One of the key benefits associated with the operation of a docker swarm is the high level of availability offered for applications. In a docker swarm, there are typically several worker nodes and at least one manager node that is responsible for handling the worker nodes’ resources efficiently and ensuring that the cluster operates efficiently.

What are the two types of Docker Swarm mode services?

Docker Swarm has two types of services: replicated and global.

**Replicated services: **Swarm mode replicated services functions by you specifying the number of replica tasks for the swarm manager to assign to available nodes.

**Global services: **Global services function by using the swam manager to schedule one task to each available node that meets the services constraints and resource requirements.

#docker-swarm #docker #selenium #docker swarm