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.
Instalar SSM Agent en los EKS nodos de trabajo de Amazon mediante Kubernetes DaemonSet
Creado por Mahendra Revanasiddappa () AWS
Entorno: PoC o piloto | Tecnologías: contenedores y microservicios; infraestructura DevOps | AWSservicios: AmazonEKS; AWS Systems Manager |
Resumen
Nota, septiembre de 2021: La última versión EKS optimizada de Amazon AMIs instala automáticamente el SSM agente. Para obtener más información, consulte las notas de la versión
En Amazon Elastic Kubernetes Service (EKSAmazon), debido a las directrices de seguridad, los nodos de trabajo no tienen pares de claves de Secure SSH Shell () adjuntos. Este patrón muestra cómo puede usar el tipo de DaemonSet recurso Kubernetes para instalar el Agente de AWS Systems Manager (SSMAgent) en todos los nodos de trabajo, en lugar de instalarlo manualmente o reemplazar Amazon Machine Image (AMI) para 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, la instalación de SSM Agent on Demand le permite establecer una SSH sesión con el nodo de trabajo, recopilar registros o analizar la configuración de la instancia, sin pares de SSH claves.
Requisitos previos y limitaciones
Requisitos previos
Un EKS clúster de Amazon existente con nodos de trabajo de Amazon Elastic Compute Cloud (AmazonEC2).
Las instancias de contenedor deben tener los permisos necesarios para comunicarse con el SSM servicio. La función A gestionada por AWS Identity and Access Management (IAM) mazonSSMManaged InstanceCore proporciona los permisos necesarios para que el SSM agente se ejecute en EC2 las instancias. Para obtener más información, consulte la documentación de AWS Systems Manager.
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 funcionan en modo privilegiado. Si el EKS clúster de Amazon tiene un webhook que bloquea los pods en modo privilegiado, el SSM agente no se instalará.
Arquitectura
El siguiente diagrama ilustra la arquitectura de este patrón.
Herramientas
Herramientas
kubectl 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 EKS clúster de Amazon, que instalará el SSM agente en todos los nodos de trabajo.Amazon le EKS facilita la ejecución de Kubernetes AWS sin tener que instalar, operar ni mantener su propio plano de control o nodos de Kubernetes. Kubernetes es un sistema de código abierto para automatizar la implementación, escalado y administración de las aplicaciones en contenedores.
AWSEl administrador de sesiones de Systems Manager le permite administrar sus EC2 instancias, instancias locales y máquinas virtuales (VMs) mediante un shell interactivo basado en un navegador con un solo clic o mediante la interfaz de línea de AWS comandos (). AWS CLI
Código
Usa el siguiente código para crear un archivo DaemonSet de configuración que instalará SSM Agent en el EKS clúster de Amazon. Siga las instrucciones en la sección 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
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Instala y configura kubectl para acceder al clúster. EKS | Si aún | DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Cree el archivo DaemonSet de configuración. | Usa el código de la sección Código que aparece anteriormente en este patrón para crear un archivo de DaemonSet configuración llamado El pod lanzado por DaemonSet tiene un contenedor principal y un Cuando el contenedor de inicio ha terminado, el contenedor principal espera 60 minutos antes de salir. Después de 60 minutos, se lanza una nueva cápsula. Este módulo instala el SSM Agente, si falta, o lo actualiza SSM a la versión más reciente. Si es necesario, puede modificar el comando | DevOps |
Implemente DaemonSet el EKS clúster en Amazon. | Para implementar el archivo de DaemonSet configuración que creaste en el paso anterior en el EKS clúster de Amazon, usa el siguiente comando:
Este comando crea un DaemonSet para ejecutar los pods en los nodos de trabajo para instalar el SSM agente. | DevOps |
Recursos relacionados
Configuración del Administrador de sesiones (documentación de AWS Systems Manager)