Instale o SSM Agent nos nós de processamento do Amazon EKS usando o DaemonSet do Kubernetes
Mahendra Revanasiddappa, Amazon Web Services
Resumo
Observação, setembro de 2021: as mais recentes AMIs otimizadas para Amazon EKS instalam o SSM Agent automaticamente. Para obter mais informações, consulte as notas de release
No Amazon Elastic Kubernetes Service (Amazon EKS), devido às diretrizes de segurança, os nós de processamento não têm pares de chaves Secure Shell (SSH) anexados a eles. Esse padrão mostra como você pode usar o tipo de recurso DaemonSet do Kubernetes para instalar o AWS Systems Manager Agent (SSM Agent) em todos os nós de processamento, em vez de instalá-lo manualmente ou substituir a imagem de máquina da Amazon (AMI) pelos nós. O DaemonSet usa um trabalho cron no nó de processamento para agendar a instalação do SSM Agent. Você também pode usar esse padrão para instalar outros pacotes nos nós de processamento.
Quando você está solucionando problemas no cluster, a instalação do SSM Agent sob demanda permite estabelecer uma sessão SSH com o nó de processamento, coletar logs ou examinar a configuração da instância, sem pares de chaves SSH.
Pré-requisitos e limitações
Pré-requisitos
Um cluster existente do Amazon EKS com nós de processamento do Amazon Elastic Compute Cloud (Amazon EC2).
As instâncias de contêiner devem ter as permissões necessárias para se comunicar com o serviço SSM. A função gerenciada do AWS Identity and Access Management (IAM) AmazonSSMManagedInstanceCore fornece as permissões necessárias para que o SSM Agent seja executado em instâncias do EC2. Para obter mais informações, consulte a documentação do AWS Systems Manager.
Limitações
Esse padrão não é aplicável ao AWS Fargate, porque os DaemonSets não são compatíveis com a plataforma Fargate.
Esse padrão se aplica somente aos nós de processamento baseados em Linux.
Os pods do DaemonSet são executados no modo privilegiado. Se o cluster do Amazon EKS tiver um webhook que bloqueia pods no modo privilegiado, o SSM Agent não será instalado.
Arquitetura
O diagrama a seguir ilustra a arquitetura desse padrão.

Ferramentas
Ferramentas
O kubectl é um utilitário de linha de comando que é usado para interagir com um cluster do Amazon EKS. Esse padrão usa o
kubectlpara implantar um DaemonSet no cluster do Amazon EKS, que instalará o SSM Agent em todos os nós de processamento.O Amazon EKS facilita para você a execução do Kubernetes na AWS, eliminando a necessidade de instalar, operar e manter seu próprio ambiente de gerenciamento ou nós do Kubernetes. O Kubernetes é um sistema de código aberto para automatizar a implantação, a escalabilidade e o gerenciamento de aplicações em contêineres.
O Session Manager do AWS Systems Manager permite gerenciar instâncias do EC2, instâncias on-premises e máquinas virtuais (VMs) por meio de um shell interativo baseado em navegador com um clique ou por meio do AWS Command Line Interface (AWS CLI).
Código da
Use o código a seguir para criar um arquivo de configuração DaemonSet que instalará o SSM Agent no cluster do Amazon EKS. Siga as instruções na seção Épicos.
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
Épicos
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Instale e configure o kubectl para acessar o cluster do EKS. | Se o | DevOps |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Criar o arquivo de configuração DaemonSet. | Use o código na seção Código no início desse padrão para criar um arquivo de configuração DaemonSet chamado O pod lançado pelo DaemonSet tem um contêiner principal e um contêiner Quando o contêiner inicial terminar, o contêiner principal espera 60 minutos antes de sair. Após 60 minutos, um novo pod é lançado. Esse pod instala o SSM Agent, se estiver ausente, ou atualiza o SSM Agent para a versão mais recente. Se necessário, você pode modificar o comando | DevOps |
Implantar o DaemonSet no cluster do Amazon EKS. | Para implantar o arquivo de configuração DaemonSet que você criou na etapa anterior no cluster do Amazon EKS, use o seguinte comando:
Esse comando cria um DaemonSet para executar os pods nos nós de processamento para instalar o SSM Agent. | DevOps |
Recursos relacionados
Instalação do kubectl (documentação do Amazon EKS)
Configurando o Session Manager (documentação do AWS Systems Manager)