

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Instalación del agente SSM en los nodos de trabajo de Amazon EKS mediante Kubernetes DaemonSet
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset"></a>

*Mahendra Revanasiddappa, Amazon Web Services*

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

**Nota, septiembre de 2021:** La última versión optimizada para Amazon EKS AMIs instala SSM Agent automáticamente. Para obtener más información, consulte las [notas de la versión](https://github.com/awslabs/amazon-eks-ami/releases/tag/v20210621) de junio de 2021 AMIs.

En Amazon Elastic Kubernetes Service (Amazon EKS), debido a las directrices de seguridad, los nodos de trabajo no tienen pares de claves de Secure Shell (SSH) adjuntos. Este patrón muestra cómo puede usar el tipo de DaemonSet recurso Kubernetes para instalar AWS Systems Manager Agent (SSM Agent) en todos los nodos de trabajo, en lugar de instalarlo manualmente o reemplazar la Amazon Machine Image (AMI) de los nodos. DaemonSet utiliza una tarea automática en el nodo de trabajo para programar la instalación del agente SSM. También puede usar este patrón para instalar otros paquetes en los nodos de trabajo.

Al solucionar problemas en el clúster, instalar el agente SSM bajo demanda le permite establecer una sesión de SSH con el nodo de trabajo, recopilar registros o analizar la configuración de la instancia, sin pares de claves SSH.

## Requisitos previos y limitaciones
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-prereqs"></a>

**Requisitos previos **
+ Un clúster de Amazon EKS existente con nodos de trabajo de Amazon Elastic Compute Cloud (Amazon EC2).
+ Las instancias contenedoras deben tener los permisos necesarios para comunicarse con el servicio SSM. **Amazon**, la función gestionada por AWS Identity and Access Management (IAM), SSMManaged InstanceCore proporciona los permisos necesarios para que SSM Agent se ejecute en EC2 las instancias. Para obtener más información, consulte la [documentación de AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html).

**Limitaciones**
+ Este patrón no se aplica a AWS Fargate porque DaemonSets no es compatible con la plataforma Fargate.
+ Este patrón solo se aplica a los nodos de trabajo basados en Linux.
+ Los DaemonSet pods se ejecutan en modo privilegiado. Si el clúster de Amazon EKS tiene un webhook que bloquea los pods en modo privilegiado, el agente SSM no se instalará.

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

El siguiente diagrama ilustra la arquitectura de este patrón.

![\[Uso de Kubernetes DaemonSet para instalar el agente SSM en los nodos de trabajo de Amazon EKS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/016d53f3-45c1-4913-b542-67124e1462b8/images/3a6dfd00-e54b-44d5-843a-4c26ce9826c9.png)


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

**Herramientas**
+ [kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) es una utilidad de línea de comandos que se utiliza para interactuar con un clúster de Amazon EKS. Este patrón se utiliza `kubectl` para implementar un DaemonSet en el clúster de Amazon EKS, que instalará el agente SSM en todos los nodos de trabajo.
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) facilita la ejecución de Kubernetes en AWS sin tener que instalar, operar y mantener su propio plano o nodos de control de Kubernetes. Kubernetes es un sistema de código abierto para automatizar la implementación, el escalado y la administración de las aplicaciones en contenedores.
+ El administrador de [sesiones de AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) le permite administrar sus EC2 instancias, instancias locales y máquinas virtuales (VMs) mediante un shell interactivo basado en el navegador con un solo clic o mediante la interfaz de línea de comandos de AWS (AWS CLI).

**Código**

Utilice el siguiente código para crear un archivo de DaemonSet configuración que instalará el agente SSM en el clúster de Amazon EKS. Siga las instrucciones en la sección [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
```

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

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


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale y configure kubectl para acceder al clúster de EKS. | Si `kubectl` aún no está instalado y configurado para acceder al clúster de Amazon EKS, consulte [Instalación de kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) en la documentación de Amazon EKS. | DevOps | 

### Implemente el DaemonSet
<a name="deploy-the-daemonset"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree el archivo DaemonSet de configuración. | Utilice el código de la sección [Código](#install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-tools) que aparece anteriormente en este patrón para crear un archivo de DaemonSet configuración denominado`ssm_daemonset.yaml`, que se implementará en el clúster de Amazon EKS. El pod lanzado por DaemonSet tiene un contenedor principal y un `init` contenedor. El contenedor principal tiene un comando `sleep`. El contenedor `init` incluye una sección `command` que crea un archivo cron para instalar el agente SSM en la ruta `/etc/cron.d/`. El trabajo cron se ejecuta solo una vez y el archivo que crea se elimina automáticamente una vez finalizado el trabajo. Cuando el contenedor de inicio ha terminado, el contenedor principal espera 60 minutos antes de salir. Después de 60 minutos, se lanza un nuevo pod. Este pod instala SSM Agent, si falta, o actualiza SSM Agent a la versión más reciente.Si es necesario, puede modificar el comando `sleep` para que se reinicie el pod una vez al día o para que se ejecute con más frecuencia.  | DevOps | 
|  DaemonSet Despliéguelo en el clúster de Amazon EKS. | Para implementar el archivo de DaemonSet configuración que creó en el paso anterior en el clúster de Amazon EKS, utilice el siguiente comando:<pre>kubectl apply -f ssm_daemonset.yaml </pre>Este comando crea un DaemonSet para ejecutar los pods en los nodos de trabajo e instalar el agente SSM. | DevOps | 

## Recursos relacionados
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-resources"></a>
+ [Instalación de kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) (documentación de Amazon EKS)
+ [Configuración del administrador de sesiones](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html) (documentación de AWS Systems Manager)