Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Installa l'agente SSM sui nodi di lavoro Amazon EKS utilizzando Kubernetes DaemonSet
Creato da Mahendra Revanasiddappa (AWS)
Ambiente: PoC o pilota | Tecnologie: contenitori e microservizi; infrastruttura DevOps | Servizi AWS: Amazon EKS; AWS Systems Manager |
Riepilogo
Nota, settembre 2021: le ultime AMI ottimizzate per Amazon EKS installano automaticamente SSM Agent. Per ulteriori informazioni, consulta le note di rilascio per le
In Amazon Elastic Kubernetes Service (Amazon EKS), a causa delle linee guida sulla sicurezza, ai nodi di lavoro non sono associate coppie di chiavi Secure Shell (SSH). Questo modello mostra come utilizzare il tipo di DaemonSet risorsa Kubernetes per installare AWS Systems Manager Agent (SSM Agent) su tutti i nodi di lavoro, anziché installarlo manualmente o sostituire l'Amazon Machine Image (AMI) per i nodi. DaemonSet utilizza un cron job sul nodo di lavoro per pianificare l'installazione di SSM Agent. È inoltre possibile utilizzare questo modello per installare altri pacchetti sui nodi di lavoro.
Quando si risolvono i problemi del cluster, l'installazione di SSM Agent on demand consente di stabilire una sessione SSH con il nodo di lavoro, di raccogliere i log o di esaminare la configurazione dell'istanza, senza coppie di chiavi SSH.
Prerequisiti e limitazioni
Prerequisiti
Un cluster Amazon EKS esistente con nodi di lavoro Amazon Elastic Compute Cloud (Amazon EC2).
Le istanze di container devono disporre delle autorizzazioni necessarie per comunicare con il servizio SSM. Il ruolo gestito di AWS Identity and Access Management (IAM) AmazonSSM ManagedInstanceCore fornisce le autorizzazioni necessarie per l'esecuzione di SSM Agent su istanze EC2. Per ulteriori informazioni, consulta la documentazione di AWS Systems Manager.
Limitazioni
Questo modello non è applicabile ad AWS Fargate, perché DaemonSets non sono supportati sulla piattaforma Fargate.
Questo modello si applica solo ai nodi di lavoro basati su Linux.
I DaemonSet pod funzionano in modalità privilegiata. Se il cluster Amazon EKS dispone di un webhook che blocca i pod in modalità privilegiata, l'agente SSM non verrà installato.
Architettura
Il diagramma seguente illustra l'architettura di questo modello.
![Utilizzo di Kubernetes DaemonSet per installare SSM Agent sui nodi di lavoro Amazon EKS.](images/pattern-img/016d53f3-45c1-4913-b542-67124e1462b8/images/3a6dfd00-e54b-44d5-843a-4c26ce9826c9.png)
Strumenti
Strumenti
kubectl è un'utilità da riga di comando utilizzata per interagire con un cluster Amazon EKS. Questo modello viene utilizzato
kubectl
per distribuire un agente SSM DaemonSet sul cluster Amazon EKS, che installerà l'agente SSM su tutti i nodi di lavoro.Amazon EKS semplifica l'esecuzione di Kubernetes su AWS senza dover installare, utilizzare e mantenere il tuo piano di controllo o i tuoi nodi Kubernetes. Kubernetes è un sistema open source per automatizzare l'implementazione, il dimensionamento e la gestione di applicazioni containerizzate.
AWS Systems Manager Session Manager consente di gestire le istanze EC2, le istanze locali e le macchine virtuali (VM) tramite una shell interattiva basata su browser con un solo clic o tramite l'AWS Command Line Interface (AWS CLI).
Codice
Utilizza il codice seguente per creare un file di DaemonSet configurazione che installerà l'agente SSM sul cluster Amazon EKS. Segui le istruzioni nella sezione 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
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Installa e configura kubectl per accedere al cluster EKS. | Se | DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea il file DaemonSet di configurazione. | Utilizza il codice nella sezione Codice precedente di questo modello per creare un file di DaemonSet configurazione chiamato Il pod lanciato da DaemonSet ha un contenitore principale e un Quando il contenitore init è terminato, il contenitore principale attende 60 minuti prima di uscire. Dopo 60 minuti, viene lanciato un nuovo pod. Questo pod installa SSM Agent, se manca, o aggiorna SSM Agent alla versione più recente. Se necessario, puoi modificare il | DevOps |
Implementa il DaemonSet file sul cluster Amazon EKS. | Per distribuire il file di DaemonSet configurazione creato nel passaggio precedente sul cluster Amazon EKS, utilizza il seguente comando:
Questo comando crea un comando DaemonSet per eseguire i pod sui nodi di lavoro per installare SSM Agent. | DevOps |
Risorse correlate
Configurazione di Session Manager (documentazione di AWS Systems Manager)