As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Instale o agente SSM nos nós de trabalho do Amazon EKS usando o Kubernetes DaemonSet
Criado por Mahendra Revanasiddappa (AWS)
Ambiente: PoC ou piloto | Tecnologias: Contêineres e microsserviços; DevOps; Infraestrutura | Serviços da AWS: Amazon EKS; AWS Systems Manager |
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 DaemonSet recurso Kubernetes para instalar o AWS Systems Manager Agent (SSM Agent) em todos os nós de trabalho, em vez de instalá-lo manualmente ou substituir a Amazon Machine Image (AMI) pelos nós. DaemonSet usa um cron job no nó de trabalho 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) AmazonSSM ManagedInstanceCore fornece as permissões necessárias para que o SSM Agent seja executado em instâncias 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 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 DaemonSet pods funcionam em 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.
![Usando o Kubernetes DaemonSet para instalar o SSM Agent nos nós de trabalho do Amazon EKS.](images/pattern-img/016d53f3-45c1-4913-b542-67124e1462b8/images/3a6dfd00-e54b-44d5-843a-4c26ce9826c9.png)
Ferramentas
Ferramentas
O kubectl é um utilitário de linha de comando que é usado para interagir com um cluster do Amazon EKS. Esse padrão é usado
kubectl
para implantar um DaemonSet no cluster Amazon EKS, que instalará o SSM Agent em todos os nós de trabalho.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
Use o código a seguir para criar um arquivo DaemonSet de configuração que instalará o SSM Agent no cluster 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 |
---|---|---|
Crie o arquivo DaemonSet de configuração. | Use o código na seção Código no início desse padrão para criar um arquivo de DaemonSet configuração chamado O pod lançado por DaemonSet tem um contêiner principal e um 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 |
Implemente o DaemonSet no cluster Amazon EKS. | Para implantar o arquivo de DaemonSet configuração que você criou na etapa anterior no cluster Amazon EKS, use o seguinte comando:
Esse comando cria um DaemonSet para executar os pods nos nós de trabalho 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)