Comment configurer un cluster Deis sur DigitalOcean

introduction

Deis est une plate-forme PaaS (Private as a Service) privée qui simplifie le déploiement et la gestion de vos applications sur vos propres serveurs. En exploitant des technologies telles que Docker et CoreOS, Deis fournit un flux de travail et des fonctionnalités de dimensionnement similaires à ceux de Heroku, chez le fournisseur d’hébergement de votre choix. Deis prend en charge les applications pouvant s’exécuter dans un conteneur Docker et sur toute plate-forme prenant en charge CoreOS.

Dans ce didacticiel, nous allons vous montrer comment configurer votre propre cluster de plates-formes Deis à 3 machines sur DigitalOcean.

Conditions préalables

Pour compléter ce guide, vous devez disposer des éléments suivants:

  • Possibilité de créer au moins * 3 droplettes * disposant d’au moins * 4 Go de mémoire * et * 40 Go d’espace disque *. Ce seront les machines CoreOS sur lesquelles la plate-forme Deis sera installée.

  • Clé (s) SSH à ajouter aux droplets, utilisée pour l’authentification lors de l’utilisation de l’outil + deisctl +

  • Clé SSH pour s’authentifier auprès du constructeur de Deis

  • Un domaine pour pointer vers les machines du cluster avec – ce tutoriel utilisera + example.com + comme domaine. Une alternative consiste à utiliser http://xip.io [xip]

Ce tutoriel est fortement basé sur Comment configurer un cluster CoreOS sur DigitalOcean. Consultez-le si vous rencontrez des difficultés pour suivre les étapes de ce didacticiel relatives à la création d’un cluster CoreOS.

Nous installerons également l’utilitaire Deis Control, + deisctl + et Deis client, + deis +, sur un ordinateur Mac OS X local, mais vous pouvez les installer ailleurs, comme un droplet Ubuntu 14.04, si vous le souhaitez. La clé SSH privée qui correspond à la clé SSH publique utilisée pour créer les gabarits CoreOS doit exister sur l’ordinateur où + deisctl + est installé.

Générer une nouvelle URL de découverte

Pour créer le cluster CoreOS sur lequel nous allons installer la plate-forme Deis, nous devons d’abord générer une nouvelle URL de découverte, une adresse unique qui stocke les adresses CoreOS et les métadonnées homologues. Pour ce faire, le plus simple consiste à utiliser + https: // discovery.etcd.io +, un service de découverte gratuit. Une nouvelle URL de découverte en visitant https://discovery.etcd.io/new?size=3 dans un navigateur Web ou en exécutant la commande + curl + suivante:

curl -w "\n" "https://discovery.etcd.io/new?size=3"

L’une ou l’autre méthode renverra une URL de découverte unique et récente qui ressemble à ce qui suit (la partie mise en surbrillance sera un jeton unique):

https://discovery.etcd.io/

Vous utiliserez l’URL de découverte obtenue pour créer votre nouveau cluster de plate-forme Deis. La même URL de découverte doit être spécifiée dans la section + etcd + de la configuration en cloud de chaque serveur CoreOS que vous souhaitez ajouter à un cluster de plate-forme Deis particulier.

Maintenant que nous avons une URL de découverte, voyons comment l’ajouter au + cloud-config + que nous allons utiliser pour créer chaque machine de notre cluster Deis.

Données utilisateur Deis

Pour créer un cluster de machines CoreOS qui sera utilisé dans notre cluster Deis, nous allons utiliser un fichier spécial + cloud-config + fourni par les responsables de la maintenance de Deis. Ce fichier est disponible sur le référentiel Deis GitHub:

Ouvrez les données utilisateur fournies dans un éditeur de texte et recherchez la ligne où discovery URL est défini. Il ressemblera à ceci:

       --discovery

Décommentez-le et remplacez les éléments marqués + # DISCOVERY_URL + par l’URL de découverte unique générée à l’étape précédente.

Ce tutoriel est basé sur Deis 1.9.0, mais la version spécifiée dans les exemples de données utilisateur pourrait être plus récente. Recherchez la ligne suivante (les nombres en surbrillance représentent la version):

ExecStart=/usr/bin/sh -c 'curl -sSL --retry 5 --retry-delay 2 http://deis.io/deisctl/install.sh | sh -s '

Prenez note du numéro de version. Veillez à utiliser la version dans les données utilisateur lors de l’installation de + deisctl + et + + deis + dans les étapes suivantes.

Vous pouvez enregistrer ce fichier de données utilisateur quelque part si vous le souhaitez.

Créer des gouttelettes CoreOS

Maintenant que nous avons les données utilisateur que nous allons utiliser, créons maintenant les machines CoreOS. Si vous ne savez pas comment fournir un fichier + cloud-config + via user data lors de la création d’une droplet, veuillez vous reporter à la https://www.digitalocean.com/community/tutorials/how-to-set-up-a -coreos-cluster-on-digitalocean # comment-fournir-cloud-config-on-digitalocean [Comment fournir Cloud-Config] de notre didacticiel sur le clustering CoreOS.

Créez au moins trois gouttelettes *, dans la même région *, avec les spécifications suivantes:

  • Au moins * 4 Go de mémoire * et * 40 Go d’espace disque *

  • * Mise en réseau privée * activée, si disponible. Si la mise en réseau privée n’est pas disponible dans la région sélectionnée, modifiez les données utilisateur et remplacez chaque occurrence de + $ private_ipv4 + par + $ public_ipv4 +

  • * Activer les données utilisateur * et entrez les données utilisateur de l’étape précédente

  • Sélectionnez * le canal CoreOS Stable * comme distribution Linux

  • Sélectionnez votre clé SSH dans la liste.

Si vous préférez utiliser l’outil de commodité + docl + pour approvisionner vos gouttelettes, suivez les instructions here.

Une fois que vous avez créé au moins trois de ces machines, vous devez avoir un cluster CoreOS prêt pour l’installation de la plate-forme Deis. Passons maintenant à la configuration du DNS.

Configurer le DNS

Deis nécessite un enregistrement DNS générique pour fonctionner correctement. Si le domaine de premier niveau (TLD) que vous utilisez est + example.com +, vos applications existeront au niveau + *. Example.com +. Par exemple, une application appelée «app» serait accessible via + app.example.com +.

Une façon de configurer ceci sur DigitalOcean consiste à configurer un DNS round-robin via le panneau de configuration DNS. Pour ce faire, ajoutez les enregistrements suivants à votre domaine:

  • Un enregistrement CNAME générique sur votre domaine de premier niveau, c.-à-d. un enregistrement CNAME avec + * + comme nom et + @ + comme nom d’hôte canonique

  • Pour chaque machine CoreOS créée, un enregistrement A qui pointe vers le TLD, c.-à-d. un enregistrement A nommé + @ +, avec l’adresse IP publique de Droplet

Le fichier de zone contiendra maintenant les entrées suivantes: (vos adresses IP seront différentes)

DNS Records 1 of 2*   CNAME   @
@   IN A
@   IN A
@   IN A

Dans cet exemple, le routeur / contrôleur Deis sera accessible via + deis.example.com +.

Pour plus de commodité, vous pouvez également configurer des enregistrements DNS pour chaque nœud:

DNS Records 2 of 2deis-1  IN A
deis-2  IN A
deis-3  IN A

Si vous avez besoin d’aide pour utiliser le panneau de configuration DNS, consultez his tutorial.

Utiliser xip.io

Si vous ne souhaitez pas configurer votre propre domaine, vous pouvez utiliser + xip.io + pour fournir votre DNS générique. En gros, cela vous permettra d’utiliser l’adresse IP de votre Droplet ajoutée par «.xip.io» en tant que domaine générique se résolvant en adresse IP.

Après avoir installé la plate-forme Deis sur votre cluster, déterminez quelle machine CoreOS exécute l’unité + deis-router @ 1.service + avec + deisctl list + -we installera + deisctl + dans la section suivante. Déterminez ensuite l’adresse IP publique de cette machine. S’il s’agit de "+ 104.131.47.125 +", vous pouvez utiliser le domaine suivant pour atteindre le routeur Deis:

xip.io exampledeis..xip.io

Appliquer les paramètres du groupe de sécurité

Les pare-feu de DigitalOcean ne disposent pas de pare-feu activés par défaut. Nous devons donc ajouter des règles + iptables + pour que nos composants ne soient pas accessibles aux étrangers. Le référentiel Deis fournit un script (here qui peut le faire.

curl -O https://raw.githubusercontent.com/deis/deis/master/contrib/util/custom-firewall.sh

Après avoir examiné le contenu du script, exécutez-le sur chacun de vos serveurs. Par exemple, en utilisant les entrées DNS que nous avons créées précédemment, nous exécuterions les commandes suivantes:

ssh core@ 'bash -s' < custom-firewall.sh
ssh core@ 'bash -s' < custom-firewall.sh
ssh core@ 'bash -s' < custom-firewall.sh

Veillez à exécuter le script sur tous vos serveurs.

Installer les outils Deis

Maintenant que le cluster CoreOS est configuré, nous allons installer Deis Control Utility and Client. Vous devez installer ces outils sur l’ordinateur sur lequel vous souhaitez contrôler votre cluster Deis. Nous montrerons comment les installer sur une Droplet Ubuntu 14.04 distinct, mais vous pouvez les installer où vous le souhaitez.

Installer l’utilitaire de contrôle Deis

L’utilitaire de contrôle Deis vous permet d’interagir avec les machines Deis et d’installer la plate-forme Deis sur le cluster.

Accédez au répertoire où vous souhaitez installer le binaire + deisctl +. Ensuite, installez Deis Control Utility en téléchargeant et en exécutant le script d’installation à l’aide de la commande suivante (remplacez la version par le numéro trouvé dans les données utilisateur):

/bin/bash -c 'curl -sSL http://deis.io/deisctl/install.sh | sh -s '

Ceci installe + deisctl + dans le répertoire actuel et actualise les fichiers de l’unité Deis.

Associons-le à + ​​/ usr / local / bin, ce sera donc dans votre` + PATH`:

sudo ln -fs $(pwd)/deisctl /usr/local/bin/deisctl

Vous pouvez maintenant utiliser la commande + deisctl +.

Installer le client Deis

Le client Deis, également appelé interface de ligne de commande Deis, vous permet d’interagir avec l’unité de contrôleur Deis.

Allez dans le répertoire où vous voulez installer le binaire + deis +. Installez le client Deis en téléchargeant et en exécutant le script d’installation à l’aide de la commande suivante (remplacez la version par le numéro trouvé dans les données utilisateur):

/bin/bash -c 'curl -sSL http://deis.io/deis-cli/install.sh | sh -s '

Ceci installe + deis +, qui est le client dans le répertoire actuel. Associons-le à + ​​/ usr / local / bin, ce sera donc dans votre` + PATH`:

sudo ln -fs $(pwd)/deis /usr/local/bin/deis

Le client Deis est installé. Maintenant, vous pouvez utiliser la commande + deis +.

Provisionnement Deis Platform

À partir de l’ordinateur sur lequel vous avez installé les outils Deis, nous provisionnerons la plate-forme Deis.

Assurez-vous que votre agent SSH est en cours d’exécution (et sélectionnez la clé privée correspondant aux clés SSH ajoutées à vos droplets CoreOS):

eval `ssh-agent -s`
ssh-add ~/.ssh/

Ensuite, nous devons exporter le + DEISCTL_TUNNEL + pour qu’il pointe vers l’une de nos machines Deis, par nom ou adresse IP publique. Si vous configurez les enregistrements DNS «pratiques», vous pouvez utiliser l’un de ceux-ci pour le tunnel. Par exemple:

export DEISCTL_TUNNEL=

C’est ici que + deisctl + tentera de communiquer avec le cluster. Vous pouvez vérifier qu’il fonctionne correctement en exécutant + diesel list. Si vous voyez une seule ligne de sortie, l’utilitaire de contrôle communique avec la machine CoreOS spécifiée.

Avant de provisionner la plate-forme, nous devrons ajouter une clé SSH à Deis afin qu’elle puisse se connecter aux hôtes distants au cours de + deis run +:

deisctl config platform set sshPrivateKey=~/.ssh/

Nous devrons également indiquer au contrôleur le nom de domaine sur lequel nous déployons les applications:

deisctl config platform set domain=

Une fois que les commandes de configuration précédentes ont été exécutées, utilisez cette commande pour provisionner la plate-forme Deis:

deisctl install platform

Vous verrez le résultat comme suit, indiquant que les unités requises pour exécuter Deis ont été chargées sur le cluster CoreOS:

Install Output:● ▴ ■
■ ● ▴ Installing Deis...
▴ ■ ●
Storage subsystem...
deis-store-metadata.service: loaded
...
Done.

Please run `deisctl start platform` to boot up Deis.

Exécutez cette commande pour démarrer la plate-forme Deis:

deisctl start platform

Une fois que vous avez vu “Deis started.”, Votre plate-forme Deis s’exécute sur un cluster!

Vous pouvez vérifier que toutes les unités Deis sont loaded et active en exécutant la commande suivante:

deisctl list

Toutes les unités doivent être actives.

Installer Deis-store-admin (facultatif)

Vous voudrez peut-être installer le composant + deis-store-admin + avant de poursuivre. C’est souvent utile lors du diagnostic des problèmes de stockage.

Pour installer le composant, exécutez ces commandes:

deisctl install store-admin
deisctl start store-admin

Maintenant que vous avez fini de provisionner un cluster, enregistrez un utilisateur administrateur Deis pour commencer à utiliser la plate-forme!

Enregistrer un utilisateur Deis

Maintenant que la plate-forme Deis est en cours d’exécution, nous devons enregistrer un utilisateur avec la commande + deis +. La commande + deis + communique avec le contrôleur Deis via l’unité router, qui est accessible à partir de + deis.example.com + dans notre exemple:

deis register http://deis.

Vous serez invité à entrer * nom d’utilisateur *, * mot de passe * et * adresse électronique *. Après avoir fourni ces éléments, vous serez automatiquement connecté à la plate-forme Deis.

Ensuite, ajoutez la clé SSH appropriée à + ​​deis +. Entrez la commande suivante:

deis keys:add

Vous serez invité à sélectionner une clé SSH parmi vos clés disponibles. Sélectionnez la clé que vous souhaitez ajouter.

Connectez-vous à Deis

Si vous devez vous connecter ultérieurement, utilisez la commande suivante:

deis login http://deis.

On vous demandera le nom d’utilisateur que vous avez créé précédemment.

Déployer un exemple d’application (facultatif)

Deis prend en charge trois manières différentes de créer des applications:

  1. Heroku Buildpacks

  2. Dockerfiles

  3. Images Docker

Nous montrerons comment utiliser le flux de travail Heroku Buildpack pour déployer une application à l’aide de example-ruby-sinatra, fourni par Deis.

Accédez au répertoire dans lequel vous souhaitez télécharger l’exemple d’application. Une fois à l’emplacement souhaité, exécutez cette commande pour cloner le référentiel git:

git clone https://github.com/deis/example-ruby-sinatra.git
cd example-ruby-sinatra

La commande + deis create + peut être utilisée pour créer l’application sur le contrôleur Deis. Exécutez-le maintenant:

deis create

Ceci crée une application et la nomme avec l’algorithme de nommage automatique de Deis:

deis create output:Creating application... done, created
Git remote deis added

Dans ce cas, le nom de l’application est + dapper-yachting +.

Maintenant, pour déployer l’application, utilisez + git push deis master +. Fais le maintenant:

git push deis master

Après avoir exécuté la commande à déployer, vous verrez plusieurs lignes de sortie. Une fois l’opération terminée, la sortie indiquera que l’application a été déployée et vous indiquera son nom généré automatiquement, ainsi que les emplacements accessibles:

git push deis master output:...
-----> Launching...
      done, :v2 deployed to Deis



      To learn more, use `deis help` or visit http://deis.io

To ssh://[email protected]:2222/dapper-yachting.git
* [new branch]      master -> master

Dans cet exemple, l’URL est + http: // dapper-yachting.dev.example.com +, qui correspond au nom de l’application associé au nom du cluster.

Vous pouvez tester son fonctionnement en accédant à l’URL de l’application dans un navigateur Web ou en utilisant la commande curl suivante (remplacez par votre propre URL):

curl http://

Vous devriez voir une sortie semblable à celle-ci:

App output:Powered by Deis! Running on container ID a0d35733aad8

L’exemple d’application recherche l’ID de conteneur de son emplacement et le génère. Félicitations! Votre plateforme Deis fonctionne!

Conclusion

Maintenant que votre configuration Deis fonctionne, essayez de déployer des applications Deis à l’aide des deux autres flux de travail. Le flux de travaux dockerfile est similaire au flux Heroku Buildpack, en ce sens qu’il utilise également + git push + pour se déployer, tandis que le flux de travaux docker image utilise + deis pull + pour se déployer. En outre, Deis fournit beaucoup plus de fonctionnalités que celles couvertes ici - consultez their documentation pour en savoir plus!