Installation de SSM l'agent sur les nœuds de EKS travail Amazon à l'aide de Kubernetes DaemonSet - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Installation de SSM l'agent sur les nœuds de EKS travail Amazon à l'aide de Kubernetes DaemonSet

Créée par Mahendra asiddappa () AWS

Environnement : PoC ou pilote

Technologies : conteneurs et microservices DevOps ; infrastructure

AWSservices : Amazon EKS ; AWS Systems Manager

Récapitulatif

Remarque, septembre 2021 : le dernier SSM agent d'AMIsinstallation EKS optimisé pour Amazon s'installe automatiquement. Pour plus d'informations, consultez les notes de publication du mois de juin 2021AMIs.

Dans Amazon Elastic Kubernetes Service (EKSAmazon), pour des raisons de sécurité, aucune paire de clés Secure SSH Shell () n'est associée aux nœuds de travail. Ce modèle montre comment vous pouvez utiliser le type de DaemonSet ressource Kubernetes pour installer l'agent AWS Systems Manager (SSMAgent) sur tous les nœuds de travail, au lieu de l'installer manuellement ou de remplacer l'Amazon Machine Image (AMI) pour les nœuds. DaemonSet utilise une tâche cron sur le nœud de travail pour planifier l'installation de l'SSMagent. Vous pouvez également utiliser ce modèle pour installer d'autres packages sur les nœuds de travail.

Lorsque vous résolvez des problèmes dans le cluster, l'installation de l'SSMagent à la demande vous permet d'établir une SSH session avec le nœud de travail, de collecter des journaux ou d'examiner la configuration de l'instance, sans paire de SSH clés.

Conditions préalables et limitations

Prérequis

  • Un EKS cluster Amazon existant avec des nœuds de travail Amazon Elastic Compute Cloud (AmazonEC2).

  • Les instances de conteneur doivent disposer des autorisations requises pour communiquer avec le SSM service. Le rôle géré AWS Identity and Access Management (IAM) A mazonSSMManaged InstanceCore fournit les autorisations requises pour que SSM l'agent s'exécute sur EC2 des instances. Pour plus d'informations, consultez la documentation de AWS Systems Manager.

Limites

  • Ce modèle ne s'applique pas à AWS Fargate, DaemonSets car il n'est pas pris en charge sur la plateforme Fargate.

  • Ce modèle s'applique uniquement aux nœuds de travail basés sur Linux.

  • Les DaemonSet pods fonctionnent en mode privilégié. Si le EKS cluster Amazon possède un webhook qui bloque les pods en mode privilégié, l'SSMagent ne sera pas installé.

Architecture

Le schéma suivant illustre l'architecture de ce modèle.

Utilisation de Kubernetes DaemonSet pour installer l'agent SSM sur les nœuds de travail AmazonEKS.

Outils

Outils

  • kubectl est un utilitaire de ligne de commande utilisé pour interagir avec un cluster Amazon. EKS Ce modèle est utilisé kubectl pour déployer un agent DaemonSet sur le EKS cluster Amazon, qui installera l'SSMagent sur tous les nœuds de travail.

  • Amazon vous EKS permet d'exécuter Kubernetes en toute simplicité AWS sans avoir à installer, exploiter et gérer votre propre plan de contrôle ou vos propres nœuds Kubernetes. Kubernetes est un système open source destiné à l'automatisation du déploiement, la mise à l'échelle et la gestion d'applications conteneurisées.

  • AWSLe gestionnaire de session Systems Manager vous permet de gérer vos EC2 instances, vos instances locales et vos machines virtuelles (VMs) via un shell interactif basé sur un navigateur en un clic ou via l'interface de ligne de AWS commande (). AWS CLI

Code

Utilisez le code suivant pour créer un fichier DaemonSet de configuration qui installera SSM l'agent sur le EKS cluster Amazon. Suivez les instructions de la section Epics.

cat << EOF > ssm_daemonset.yaml apiVersion: apps/v1 kind: DaemonSet metadata: labels: k8s-app: ssm-installer name: ssm-installer namespace: kube-system spec: selector: matchLabels: k8s-app: ssm-installer template: metadata: labels: k8s-app: ssm-installer spec: containers: - name: sleeper image: busybox command: ['sh', '-c', 'echo I keep things running! && sleep 3600'] initContainers: - image: amazonlinux imagePullPolicy: Always name: ssm command: ["/bin/bash"] args: ["-c","echo '* * * * * root yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm & rm -rf /etc/cron.d/ssmstart' > /etc/cron.d/ssmstart"] securityContext: allowPrivilegeEscalation: true volumeMounts: - mountPath: /etc/cron.d name: cronfile terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumes: - name: cronfile hostPath: path: /etc/cron.d type: Directory dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler terminationGracePeriodSeconds: 30 EOF

Épopées

TâcheDescriptionCompétences requises

Installez et configurez kubectl pour accéder au EKS cluster.

S'il kubectl n'est pas déjà installé et configuré pour accéder au EKS cluster Amazon, consultez la section Installation de kubectl dans la documentation AmazonEKS.

DevOps
TâcheDescriptionCompétences requises

Créez le fichier DaemonSet de configuration.

Utilisez le code de la section Code plus haut dans ce modèle pour créer un fichier de DaemonSet configuration appeléssm_daemonset.yaml, qui sera déployé sur le EKS cluster Amazon.

La nacelle lancée par DaemonSet possède un conteneur principal et un init conteneur. Le conteneur principal possède une sleep commande. Le init conteneur inclut une command section qui crée un fichier de travail cron pour installer l'SSMagent sur le chemin/etc/cron.d/. La tâche cron ne s'exécute qu'une seule fois et le fichier qu'elle crée est automatiquement supprimé une fois la tâche terminée.

Lorsque le conteneur d'initialisation est terminé, le conteneur principal attend 60 minutes avant de sortir. Au bout de 60 minutes, un nouveau module est lancé. Ce module installe SSM l'agent, s'il est manquant, ou met à jour SSM l'agent vers la dernière version.

Si nécessaire, vous pouvez modifier la sleep commande pour redémarrer le module une fois par jour ou pour l'exécuter plus souvent. 

DevOps

Déployez le DaemonSet sur le EKS cluster Amazon.

Pour déployer le fichier DaemonSet de configuration que vous avez créé à l'étape précédente sur le EKS cluster Amazon, utilisez la commande suivante :

kubectl apply -f ssm_daemonset.yaml

Cette commande crée un DaemonSet pour exécuter les pods sur les nœuds de travail afin d'installer SSM l'agent.

DevOps

Ressources connexes