Comment configurer un cluster CoreOS sur DigitalOcean

introduction

Si vous envisagez d’utiliser CoreOS dans votre infrastructure, la première chose à configurer est un cluster CoreOS. Pour que les machines CoreOS puissent former un cluster, leurs instances + etcd2 + doivent être connectées. Dans ce didacticiel, nous allons donner des instructions pas à pas pour créer rapidement un cluster CoreOS à 3 nœuds sur DigitalOcean.

Conditions préalables

Si vous ne connaissez pas les composants sur lesquels CoreOS est construit (menu fixe, etcd2 et flotte), il est vivement recommandé de lire https://www.digitalocean.com/community/tutorials/an-inintroduction-to-coreos-system. -components [Introduction aux composants système CoreOS]. Vous voudrez porter une attention particulière à la section qui couvre + etcd2 +, car ce composant est essentiel au processus de découverte du cluster.

Clés SSH

Chaque serveur CoreOS que vous créez devra avoir au moins une clé publique SSH installée au cours de son processus de création. La ou les clés seront installées dans le fichier de clés autorisées par l’utilisateur + core et vous aurez besoin de la ou des clés privées correspondantes pour vous connecter à votre serveur CoreOS.

Si vous n’avez pas encore de clé SSH associée à votre compte DigitalOcean, faites-le maintenant en suivant les étapes 1 à 3 de ce tutoriel: https://www.digitalocean.com/community/tutorials/how-to-use-ssh- keys-with-digitalocean-droplets [Comment utiliser les clés SSH avec des gouttelettes DigitalOcean]. Ensuite, vous voudrez ajouter votre clé privée à votre agent SSH sur votre ordinateur client en exécutant la commande suivante:

ssh-add

Pour en savoir plus sur cette étape, voir cet article.

Jeton d’accès personnel DigitalOcean

Si vous prévoyez d’utiliser l’API DigitalOcean pour créer vos machines CoreOS, reportez-vous à la page https://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-api-v2#how-to-generate. -a-personal-access-token [ce didacticiel] pour plus d’informations sur la génération et l’utilisation d’un jeton d’accès personnel avec des autorisations en écriture.

Maintenant que les conditions préalables sont remplies, commençons par construire notre cluster CoreOS!

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

La première étape de la configuration d’un nouveau cluster CoreOS consiste à générer une nouvelle URL de découverte, une adresse unique stockant des adresses CoreOS et des 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 peut être générée en visitant https://discovery.etcd.io/new 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 nouvelle URL de découverte unique, qui ressemblera à 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 CoreOS. La même URL de découverte doit être spécifiée dans la section + etcd2 + de la configuration en cloud de chaque serveur que vous souhaitez ajouter à un cluster CoreOS particulier.

Maintenant que nous avons une URL de découverte, voyons comment créer le fichier + cloud-config qui l’utilise.

Écrire un fichier Cloud-Config

CoreOS utilise un fichier appelé + cloud-config + qui vous permet de personnaliser de manière déclarative la configuration du réseau, les unités systemd et d’autres éléments au niveau du système d’exploitation. Ce fichier est écrit au format YAML, qui utilise une indentation pour désigner la hiérarchie des données. Le fichier + cloud-config + est traité lors du démarrage d’une machine et offre un moyen de configurer vos machines avec les paramètres + etcd2 + qui leur permettront de découvrir le cluster auquel elles doivent adhérer.

Nous verrons comment écrire un minimum + cloud-config + pour obtenir un cluster CoreOS opérationnel. Pour obtenir une liste complète des éléments pouvant être configurés avec cloud-config, consultez la documentation https://coreos.com/docs/cluster-management/setup/cloudinit-cloud-config]. Ils fournissent également un outil utile permettant de vérifier la syntaxe de votre fichier cloud-config, Cloud-Config Validator.

Minimal Cloud-Config

Comme indiqué précédemment, les adresses homologues de chaque ordinateur CoreOS d’un cluster sont stockées avec l’URL de découverte. Par conséquent, chaque machine d’un cluster doit utiliser la même URL de découverte et transmettre sa propre adresse IP à laquelle le service + etcd2 + peut être atteint. Ceux-ci sont spécifiés dans + cloud-config + sous la section + etcd2 +, et sont montrés dans le bloc de code ci-dessous.

Vous devrez également spécifier une section + units +, qui démarrera les services + etcd2 + et + flotte + nécessaires au fonctionnement d’un cluster CoreOS.

Voici un fichier de base + cloud-config + qui peut être utilisé avec vos machines CoreOS pour créer un nouveau cluster (remplacez la valeur de + discovery + par l’URL de découverte que vous avez générée précédemment):

#cloud-config

coreos:
 etcd2:
   # generate a new token for each unique cluster from https://discovery.etcd.io/new:
   discovery: https://discovery.etcd.io/<discovery_token>
   # multi-region deployments, multi-cloud deployments, and Droplets without
   # private networking need to use $public_ipv4:
   advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001
   initial-advertise-peer-urls: http://$private_ipv4:2380
   # listen on the official ports 2379, 2380 and one legacy port 4001:
   listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
   listen-peer-urls: http://$private_ipv4:2380
 fleet:
   public-ip: $private_ipv4   # used for fleetctl ssh command
 units:
   - name: etcd2.service
     command: start
   - name: fleet.service
     command: start

Ce script + cloud-config + peut être utilisé pour configurer un CoreOS de base pouvant être utilisé à des fins de test; Malheureusement, ce n’est pas très sécurisé. Pour une configuration plus sérieuse, vous devez configurer un cluster CoreOS sécurisé en suivant ce tutoriel: https://www.digitalocean.com/community/tutorials/how-to-secure-your-coreos-cluster-with-tls-ssl -and-firewall-rules [Comment sécuriser votre cluster CoreOS avec les règles TLS / SSL et de pare-feu].

Créer un cluster CoreOS

Maintenant que vous savez en quoi consistera votre fichier + cloud-config pour chaque ordinateur de votre nouveau cluster CoreOS, créez votre cluster CoreOS. Étant donné que les Droplets peuvent être créés via le panneau de configuration ou l’API de DigitalOcean, nous allons vous montrer comment créer votre cluster CoreOS à l’aide des deux méthodes.

Panneau de configuration DigitalOcean

Tout d’abord, visitez le DigitalOcean Control Panel puis cliquez sur le bouton * Créer une droplet *.

Ensuite, sélectionnez CoreOS comme distribution Linux, puis sélectionnez le canal que vous souhaitez utiliser (Stable, Beta ou Alpha).

Ensuite, sélectionnez la taille de gouttelette souhaitée. Une taille plus petite peut convenir si vous effectuez des tests de base.

Ensuite, sélectionnez votre région de centre de données préférée.

Sous l’en-tête * Sélectionner des options supplémentaires *, sélectionnez * Réseau privé * et * Données utilisateur *. Copiez et collez votre script + cloud-config + dans le champ de texte Données utilisateur. Ça devrait ressembler a quelque chose comme ca:

image: https: //assets.digitalocean.com/site/ControlPanel/cp-userdata.png [Données utilisateur]

Ensuite, sélectionnez au moins une clé SSH que vous souhaitez utiliser pour vous connecter à vos droplets.

Dans la section * Finaliser et créer *, créez * au moins trois * Droplets et spécifiez leurs noms d’hôte. Dans notre exemple, nous les appellerons * coreos-01 *, * coreos-02 * et * coreos-03 *:

image: https: //assets.digitalocean.com/site/ControlPanel/cp-coreos-multi-create.png [Créer 3 gouttelettes]

Enfin, cliquez sur le bouton * Créer * pour créer les gouttelettes qui formeront votre cluster CoreOS.

Pour en savoir plus sur le processus de création de gouttelettes, à l’aide du panneau de configuration DigitalOcean, consultez la page this. guider.

API DigitalOcean

Si vous utilisez l’API DigitalOcean pour créer vos droplets CoreOS, vous pouvez spécifier votre + cloud-config + via le paramètre + user_data + dans votre demande POST de création de droplet - collez simplement le script complet.

Supposons que nous voulions créer trois droplets de 1 Go nommés * coreos-01 *, * coreos-02 * et * coreos-03 * avec réseau privé, dans le centre de données NYC3, à l’aide de l’image de canal CoreOS Stable et + cloud-config + fichier montré plus tôt. Voici un exemple de la commande + curl + que vous exécuteriez pour la créer à l’aide de l’API DigitalOcean:

curl -X POST "https://api.digitalocean.com/v2/droplets" \
     -d'{"names":["coreos-01","coreos-02","coreos-03"],"region":"nyc3","size":"1GB","private_networking":true,"image":"coreos-stable","user_data":
"#cloud-config

coreos:
 etcd2:
   # generate a new token for each unique cluster from https://discovery.etcd.io/new:
   discovery: https://discovery.etcd.io/<discovery_token>
   # multi-region deployments, multi-cloud deployments, and Droplets without
   # private networking need to use $public_ipv4:
   advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001
   initial-advertise-peer-urls: http://$private_ipv4:2380
   # listen on the official ports 2379, 2380 and one legacy port 4001:
   listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
   listen-peer-urls: http://$private_ipv4:2380
 fleet:
   public-ip: $private_ipv4   # used for fleetctl ssh command
 units:
   - name: etcd2.service
     command: start
   - name: fleet.service
     command: start",
     "ssh_keys":[  ]}' \
     -H "Authorization: Bearer $TOKEN" \
     -H "Content-Type: application/json"

Vous devez remplacer vos identifiants de clé SSH ou vos empreintes digitales par + <identifiants de clé SSH> +, et assurez-vous que + $ TOKEN + est défini sur l’un de vos jetons d’accès en lecture / écriture DigitalOcean. .

Après avoir exécuté cette commande avec les substitutions appropriées, votre cluster CoreOS à 3 nœuds sera créé.

Pour plus d’informations sur l’utilisation de l’API, veuillez consulter his tutorial.

Vérifier le cluster

Pour vérifier que notre cluster de 3 machines est correctement formé, nous devons SSH sur l’un des membres du cluster.

Connectez-vous à la machine * coreos-01 * en tant qu’utilisateur + core + via SSH et utilisez l’option + -A + pour transférer votre agent SSH. N’oubliez pas de remplacer l’adresse IP publique:

ssh -A core@

À l’invite de commande, entrez cette commande + fleetctl + pour afficher tous les membres du cluster:

fleetctl list-machines

Vous devriez voir une liste de toutes les machines en ligne du cluster, identifiables par leurs adresses IP + peer-addr + respectives. Voici un exemple de sortie:

MACHINE     IP      METADATA
59b2fffd... 10.131.29.141   -
853b0df3... 10.131.63.121   -
cd64a2e3... 10.131.63.120   -

Si vous voyez toutes les machines que vous avez créées, toutes sont conscientes les unes des autres via + etcd2 +, et votre cluster est correctement formé!

Ajout de nouvelles machines

Si vous souhaitez ajouter de nouvelles machines à un cluster CoreOS existant, créez simplement un nouveau Droplet en utilisant les mêmes + cloud-config + (et URL de découverte). Votre nouvelle machine CoreOS rejoindra automatiquement le cluster existant.

Si vous avez oublié l’URL de découverte que vous avez utilisée, vous pouvez la rechercher sur l’un des membres du cluster. Utilisez la commande + grep + suivante sur l’un de vos ordinateurs existants:

grep DISCOVERY /run/systemd/system/etcd2.service.d/20-cloudinit.conf

Vous verrez une ligne qui contient l’URL de découverte d’origine, comme suit:

Environment="ETCD_DISCOVERY="

Conclusion

Votre cluster CoreOS de base est configuré et vous pouvez maintenant passer aux tests avec! Si vous souhaitez configurer un cluster CoreOS sécurisé, suivez ce tutoriel: https://www.digitalocean.com/community/tutorials/how-to-secure-your-coreos-cluster-with-tls-ssl-and- firewall-rules [Comment sécuriser votre cluster CoreOS avec TLS / SSL et les règles de pare-feu].

Les autres didacticiels de cette série vous en apprendront davantage sur CoreOS et sur l’utilisation des conteneurs de menus fixes et la découverte de services avec votre cluster CoreOS.