

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 l'agent SSM sur les nœuds de travail Amazon EKS à l'aide de Kubernetes DaemonSet
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset"></a>

*Mahendra Evasiddappa, Amazon Web Services*

## Résumé
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-summary"></a>

**Remarque, septembre 2021 :** la dernière version optimisée d'Amazon EKS AMIs installe automatiquement l'agent SSM. Pour plus d'informations, consultez les [notes de publication](https://github.com/awslabs/amazon-eks-ami/releases/tag/v20210621) du mois de juin 2021 AMIs.

Dans Amazon Elastic Kubernetes Service (Amazon EKS), pour des raisons de sécurité, aucune paire de clés Secure Shell (SSH) n'est associée aux nœuds de travail. Ce modèle montre comment utiliser le type de DaemonSet ressource Kubernetes pour installer l'agent AWS Systems Manager (agent SSM) 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'agent SSM. 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'agent SSM à la demande vous permet d'établir une session SSH avec le nœud de travail, de collecter des journaux ou d'examiner la configuration de l'instance, sans paires de clés SSH.

## Conditions préalables et limitations
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-prereqs"></a>

**Conditions préalables**
+ Un cluster Amazon EKS existant avec des nœuds de travail Amazon Elastic Compute Cloud (Amazon EC2).
+ Les instances de conteneur doivent disposer des autorisations requises pour communiquer avec le service SSM. Le rôle géré AWS Identity and Access Management (IAM) **Amazon SSMManaged InstanceCore** fournit les autorisations requises pour que l'agent SSM s'exécute sur EC2 des instances. Pour plus d'informations, consultez la [documentation d'AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html).

**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 cluster Amazon EKS possède un webhook qui bloque les pods en mode privilégié, l'agent SSM ne sera pas installé.

## Architecture
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-architecture"></a>

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 Amazon EKS.](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/016d53f3-45c1-4913-b542-67124e1462b8/images/3a6dfd00-e54b-44d5-843a-4c26ce9826c9.png)


## Outils
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-tools"></a>

**Outils**
+ [kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) 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 cluster Amazon EKS, qui installera l'agent SSM sur tous les nœuds de travail.
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) vous permet d'exécuter facilement Kubernetes sur 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.
+ [AWS Systems Manager Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) vous permet de gérer vos EC2 instances, vos instances sur site et vos machines virtuelles (VMs) via un shell interactif basé sur un navigateur en un clic ou via l'interface de ligne de commande AWS (AWS CLI).

**Code**

Utilisez le code suivant pour créer un fichier DaemonSet de configuration qui installera l'agent SSM sur le cluster Amazon EKS. Suivez les instructions de la section [Epics](#install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-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
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-epics"></a>

### Configurer kubectl
<a name="set-up-kubectl"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installez et configurez kubectl pour accéder au cluster EKS. | S'il `kubectl` n'est pas déjà installé et configuré pour accéder au cluster Amazon EKS, consultez la section [Installation de kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) dans la documentation Amazon EKS. | DevOps | 

### Déployez le DaemonSet
<a name="deploy-the-daemonset"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez le fichier DaemonSet de configuration. | Utilisez le code de la section [Code](#install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-tools) plus haut dans ce modèle pour créer un fichier de DaemonSet configuration appelé`ssm_daemonset.yaml`, qui sera déployé sur le cluster Amazon EKS. <br />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'agent SSM 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. <br />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 l'agent SSM, s'il est manquant, ou met à jour l'agent SSM vers la dernière version.<br />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 cluster Amazon EKS. | Pour déployer le fichier DaemonSet de configuration que vous avez créé à l'étape précédente sur le cluster Amazon EKS, utilisez la commande suivante :<pre>kubectl apply -f ssm_daemonset.yaml </pre><br />Cette commande crée un DaemonSet pour exécuter les pods sur les nœuds de travail afin d'installer l'agent SSM. | DevOps | 

## Ressources connexes
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-resources"></a>
+ [Installation de kubectl (documentation](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) Amazon EKS)
+ [Configuration du gestionnaire de sessions](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html) (documentation AWS Systems Manager)