Aidez à améliorer cette page
Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.
Connectez des nœuds hybrides avec Bottlerocket
Cette rubrique décrit comment connecter des nœuds hybrides exécutant Bottlerocket à un cluster Amazon EKS. Bottlerocket
Seules les variantes VMware de Bottlerocket version v1.37.0 et supérieure sont prises en charge avec les nœuds hybrides EKS. Les variantes VMware de Bottlerocket sont disponibles pour les versions v1.28 et supérieures de Kubernetes. Les images OS pour ces variantes incluent kubelet, containerd, aws-iam-authenticator et d’autres logiciels prérequis pour les nœuds hybrides EKS. Vous pouvez configurer ces composants à l’aide d’un fichier de paramètresNot Ready s’affiche dans la console Amazon EKS et dans les outils compatibles avec Kubernetes, tels que kubectl. Une fois les étapes décrites sur cette page terminées, passez à la section Configurer CNI pour les nœuds hybrides pour préparer vos nœuds hybrides à exécuter des applications.
Prérequis
Avant de connecter des nœuds hybrides à votre cluster Amazon EKS, assurez-vous d’avoir suivi toutes les étapes préalables.
-
Vous disposez d’une connectivité réseau entre votre environnement sur site et la région AWS hébergeant votre cluster Amazon EKS. Pour plus d’informations, consultez Préparer la mise en réseau pour les nœuds hybrides.
-
Vous avez créé votre rôle IAM des nœuds hybrides et configuré votre fournisseur d’informations d’identification sur site (activations hybrides AWS Systems Manager ou Rôles Anywhere IAM AWS). Pour plus d’informations, consultez Préparer les informations d’identification pour les nœuds hybrides.
-
Vous avez créé votre cluster Amazon EKS compatible avec les nœuds hybrides. Pour plus d’informations, consultez Créer un cluster Amazon EKS avec des nœuds hybrides.
-
Vous avez associé votre rôle IAM des nœuds hybrides aux autorisations RBAC de Kubernetes. Pour plus d’informations, consultez Préparation de l’accès au cluster pour les nœuds hybrides.
Étape 1 : créer le fichier TOML des paramètres Bottlerocket
Pour configurer Bottlerocket pour les nœuds hybrides, vous devez créer un fichier settings.toml contenant la configuration nécessaire. Le contenu du fichier TOML varie en fonction du fournisseur d’informations d’identification que vous utilisez (SSM ou Rôles Anywhere IAM). Ce fichier sera transmis en tant que données utilisateur lors de la mise à disposition de l’instance Bottlerocket.
SSM
Si vous utilisez Systems Manager AWS comme fournisseur d’informations d’identification, créez un fichier settings.toml contenant les informations suivantes :
[settings.kubernetes] cluster-name = "<cluster-name>" api-server = "<api-server-endpoint>" cluster-certificate = "<cluster-certificate-authority>" hostname-override = "<hostname>" provider-id = "eks-hybrid:///<region>/<cluster-name>/<hostname>" authentication-mode = "aws" [settings.network] hostname = "<hostname>" [settings.aws] region = "<region>" [settings.kubernetes.node-labels] "eks.amazonaws.com/compute-type" = "hybrid" "eks.amazonaws.com/hybrid-credential-provider" = "ssm" [settings.host-containers.admin] enabled = true user-data = "<base64-encoded-admin-container-userdata>" [settings.bootstrap-containers.eks-hybrid-setup] mode = "always" user-data = "<base64-encoded-bootstrap-container-userdata>" [settings.host-containers.control] enabled = true
Remplacez les espaces réservés par les valeurs suivantes :
-
<cluster-name>: le nom de votre cluster Amazon EKS. -
<api-server-endpoint>: point de terminaison du serveur d’API de votre cluster. -
<cluster-certificate-authority>: Ensemble CA codé en base64 de votre cluster. -
<region>: La région AWS hébergeant votre cluster, par exemple « us-east-1 ». -
<hostname>: le nom d’hôte de l’instance Bottlerocket, qui sera également configuré comme nom de nœud. Il peut s’agir de n’importe quelle valeur unique de votre choix, mais elle doit respecter les conventions de nommage des objets Kubernetes. De plus, le nom d’hôte que vous utilisez ne peut pas dépasser 64 caractères. REMARQUE : lorsque vous utilisez le fournisseur SSM, ce nom d’hôte et ce nom de nœud seront remplacés par l’ID de l’instance gérée (par exemple, ID mi-*) une fois que l’instance aura été enregistrée auprès de SSM. -
<base64-encoded-admin-container-userdata>: Contenu codé en base64 de la configuration du conteneur d’administration Bottlerocket. L’activation du conteneur d’administration vous permet de vous connecter à votre instance Bottlerocket avec SSH pour explorer le système et le déboguer. Bien que ce paramètre ne soit pas obligatoire, nous vous recommandons de l’activer afin de faciliter le dépannage. Pour plus d’informations sur l’authentification avec le conteneur d’administration, consultez la documentation relative au conteneur d’administration Bottlerocket. Le conteneur d’administration accepte les entrées utilisateur et clé SSH au format JSON, par exemple :
{ "user": "<ssh-user>", "ssh": { "authorized-keys": [ "<ssh-authorized-key>" ] } }
-
<base64-encoded-bootstrap-container-userdata>: Contenu encodé en base64 de la configuration du conteneur d’amorçage Bottlerocket. Pour plus d’informations sur sa configuration, consultez la documentation relative au conteneur Bottlerocket bootstrap. Le conteneur Bootstrap est chargé d’enregistrer l’instance en tant qu’instance gérée SSM AWS et de l’ajouter en tant que nœud Kubernetes à votre cluster Amazon EKS. Les données utilisateur transmises au conteneur Bootstrap prennent la forme d’une invocation de commande qui accepte en entrée le code d’activation hybride SSM et l’ID que vous avez créés précédemment :
eks-hybrid-ssm-setup --activation-id=<activation-id> --activation-code=<activation-code> --region=<region>
IAM Roles Anywhere
Si vous utilisez Rôles Anywhere IAM AWS comme fournisseur d’informations d’identification, créez un fichier settings.toml contenant les informations suivantes :
[settings.kubernetes] cluster-name = "<cluster-name>" api-server = "<api-server-endpoint>" cluster-certificate = "<cluster-certificate-authority>" hostname-override = "<hostname>" provider-id = "eks-hybrid:///<region>/<cluster-name>/<hostname>" authentication-mode = "aws" [settings.network] hostname = "<hostname>" [settings.aws] region = "<region>" config = "<base64-encoded-aws-config-file>" [settings.kubernetes.node-labels] "eks.amazonaws.com/compute-type" = "hybrid" "eks.amazonaws.com/hybrid-credential-provider" = "iam-ra" [settings.host-containers.admin] enabled = true user-data = "<base64-encoded-admin-container-userdata>" [settings.bootstrap-containers.eks-hybrid-setup] mode = "always" user-data = "<base64-encoded-bootstrap-container-userdata>"
Remplacez les espaces réservés par les valeurs suivantes :
-
<cluster-name>: le nom de votre cluster Amazon EKS. -
<api-server-endpoint>: point de terminaison du serveur d’API de votre cluster. -
<cluster-certificate-authority>: Ensemble CA codé en base64 de votre cluster. -
<region>: La région AWS hébergeant votre cluster, par exemple « us-east-1 » -
<hostname>: le nom d’hôte de l’instance Bottlerocket, qui sera également configuré comme nom de nœud. Il peut s’agir de n’importe quelle valeur unique de votre choix, mais elle doit respecter les conventions de nommage des objets Kubernetes. De plus, le nom d’hôte que vous utilisez ne peut pas dépasser 64 caractères. REMARQUE : lorsque vous utilisez le fournisseur IAM-RA, le nom du nœud doit correspondre au nom commun (CN) du certificat sur l’hôte si vous avez configuré la stratégie de confiance de votre rôle IAM des nœuds hybrides avec la condition de ressource "sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}". -
<base64-encoded-aws-config-file>: Le contenu de votre fichier de configuration AWS encodé en base64. Le contenu du fichier doit être le suivant :
[default] credential_process = aws_signing_helper credential-process --certificate /root/.aws/node.crt --private-key /root/.aws/node.key --profile-arn <profile-arn> --role-arn <role-arn> --trust-anchor-arn <trust-anchor-arn> --role-session-name <role-session-name>
-
<base64-encoded-admin-container-userdata>: Contenu codé en base64 de la configuration du conteneur d’administration Bottlerocket. L’activation du conteneur d’administration vous permet de vous connecter à votre instance Bottlerocket avec SSH pour explorer le système et le déboguer. Bien que ce paramètre ne soit pas obligatoire, nous vous recommandons de l’activer afin de faciliter le dépannage. Pour plus d’informations sur l’authentification avec le conteneur d’administration, consultez la documentation relative au conteneur d’administration Bottlerocket. Le conteneur d’administration accepte les entrées utilisateur et clé SSH au format JSON, par exemple :
{ "user": "<ssh-user>", "ssh": { "authorized-keys": [ "<ssh-authorized-key>" ] } }
-
<base64-encoded-bootstrap-container-userdata>: Contenu encodé en base64 de la configuration du conteneur d’amorçage Bottlerocket. Pour plus d’informations sur sa configuration, consultez la documentation relative au conteneur Bottlerocket bootstrap. Le conteneur Bootstrap est chargé de créer les fichiers de certificat hôte et de clé privée de certificat Rôles Anywhere IAM sur l’instance. Ceux-ci seront ensuite utilisés par le aws_signing_helperpour obtenir des informations d’identification temporaires afin de s’authentifier auprès de votre cluster Amazon EKS. Les données utilisateur transmises au conteneur bootstrap prennent la forme d’une invocation de commande qui accepte en entrée le contenu du certificat et de la clé privée que vous avez créés précédemment :
eks-hybrid-iam-ra-setup --certificate=<certificate> --key=<private-key>
Étape 2 : fournir les données utilisateur à la machine virtuelle Bottlerocket vSphere
Une fois le fichier TOML créé, transmettez-le en tant que données utilisateur lors de la création de la machine virtuelle vSphere. N’oubliez pas que les données utilisateur doivent être configurées avant la première mise sous tension de la machine virtuelle. Vous devrez donc le fournir lors de la création de l’instance. Si vous souhaitez créer la VM à l’avance, celle-ci devra être dans un état « poweredOff » jusqu’à ce que vous configuriez les données utilisateur correspondantes. Par exemple, si vous utilisez l’interface CLI govc :
Création d’une machine virtuelle pour la première fois
govc vm.create \ -on=true \ -c=2 \ -m=4096 \ -net.adapter=<network-adapter> \ -net=<network-name> \ -e guestinfo.userdata.encoding="base64" \ -e guestinfo.userdata="$(base64 -w0 settings.toml)" \ -template=<template-name> \ <vm-name>
Mise à jour des données utilisateur pour une machine virtuelle existante
govc vm.create \ -on=false \ -c=2 \ -m=4096 \ -net.adapter=<network-adapter> \ -net=<network-name> \ -template=<template-name> \ <vm-name> govc vm.change -vm <vm-name> \ -e guestinfo.userdata="$(base64 -w0 settings.toml)" \ -e guestinfo.userdata.encoding="base64" govc vm.power -on <vm-name>
Dans les sections ci-dessus, l’option -e guestinfo.userdata.encoding="base64" spécifie que les données utilisateur sont encodées en base64. Cette option -e guestinfo.userdata transmet le contenu du fichier settings.toml encodé en base64 sous forme de données utilisateur à l’instance Bottlerocket. Remplacez les espaces réservés par vos valeurs spécifiques, telles que le modèle OVA Bottlerocket et les détails réseau.
Étape 3 : vérifier la connexion du nœud hybride
Une fois l’instance Bottlerocket démarrée, elle tentera de rejoindre votre cluster Amazon EKS. Vous pouvez vérifier la connexion dans la console Amazon EKS en accédant à l’onglet Calcul de votre cluster ou en exécutant la commande suivante :
kubectl get nodes
Important
Vos nœuds auront le statut Not Ready, ce qui est normal et dû à l’absence d’un CNI fonctionnant sur vos nœuds hybrides. Si vos nœuds ne se sont pas joints au cluster, consultez Dépannage des nœuds hybrides.
Étape 4 : configurer un CNI pour les nœuds hybrides
Pour que vos nœuds hybrides soient prêts à exécuter des applications, poursuivez avec les étapes décrites à la section Configurer CNI pour les nœuds hybrides.