Installieren Sie SSM Agent mithilfe von Kubernetes auf EKS Amazon-Worker-Knoten DaemonSet - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Installieren Sie SSM Agent mithilfe von Kubernetes auf EKS Amazon-Worker-Knoten DaemonSet

Erstellt von Mahendra Revanasiddappa () AWS

Umgebung: PoC oder Pilotprojekt

Technologien: Container und Mikroservices; Infrastruktur DevOps

AWSDienstleistungen: AmazonEKS; AWS Systems Manager

Übersicht

Hinweis, September 2021: Der neueste von Amazon EKS optimierte AMIs Install SSM Agent wird automatisch installiert. Weitere Informationen finden Sie in den Versionshinweisen für Juni 2021AMIs.

In Amazon Elastic Kubernetes Service (AmazonEKS) sind Worker-Knoten aufgrund von Sicherheitsrichtlinien nicht mit Secure Shell (SSH) -Schlüsselpaaren verknüpft. Dieses Muster zeigt, wie Sie den DaemonSet Kubernetes-Ressourcentyp verwenden können, um AWS Systems Manager Agent (SSMAgent) auf allen Worker-Knoten zu installieren, anstatt ihn manuell zu installieren oder das Amazon Machine Image (AMI) für die Knoten zu ersetzen. DaemonSet verwendet einen Cron-Job auf dem Worker-Knoten, um die Installation von Agent zu planen. SSM Sie können dieses Muster auch verwenden, um andere Pakete auf Worker-Knoten zu installieren.

Wenn Sie Probleme im Cluster beheben, können Sie durch die Installation von SSM Agent on Demand eine SSH Sitzung mit dem Worker-Knoten einrichten, Protokolle sammeln oder die Instanzkonfiguration überprüfen, ohne SSH Schlüsselpaare.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein vorhandener EKS Amazon-Cluster mit Amazon Elastic Compute Cloud (AmazonEC2) -Worker-Knoten.

  • Container-Instances sollten über die erforderlichen Berechtigungen verfügen, um mit dem SSM Service zu kommunizieren. Die verwaltete Rolle A für AWS Identity and Access Management (IAM) mazonSSMManaged InstanceCore bietet die erforderlichen Berechtigungen, damit der SSM Agent auf EC2 Instances ausgeführt werden kann. Weitere Informationen finden Sie in der AWSSystems Manager Manager-Dokumentation.

Einschränkungen

  • Dieses Muster gilt nicht für AWS Fargate, da es auf der Fargate-Plattform DaemonSets nicht unterstützt wird.

  • Dieses Muster gilt nur für Linux-basierte Worker-Knoten.

  • Die DaemonSet Pods werden im privilegierten Modus ausgeführt. Wenn der EKS Amazon-Cluster über einen Webhook verfügt, der Pods im privilegierten Modus blockiert, wird der SSM Agent nicht installiert.

Architektur

Das folgende Diagramm veranschaulicht die Architektur für dieses Muster.

Verwenden von Kubernetes DaemonSet zur Installation von SSM Agent auf EKS Amazon-Worker-Knoten.

Tools

Tools

  • kubectl ist ein Befehlszeilenprogramm, das für die Interaktion mit einem Amazon-Cluster verwendet wird. EKS Dieses Muster wird verwendetkubectl, um einen DaemonSet auf dem EKS Amazon-Cluster bereitzustellen, der den SSM Agenten auf allen Worker-Knoten installiert.

  • EKSMit Amazon können Sie Kubernetes ganz einfach ausführen, AWS ohne Ihre eigene Kubernetes-Steuerebene oder Knoten installieren, betreiben und warten zu müssen. Kubernetes ist ein Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von Anwendungen in Containern.

  • AWSMit Systems Manager Session Manager können Sie Ihre EC2 Instanzen, lokalen Instanzen und virtuellen Maschinen (VMs) über eine interaktive, browserbasierte Shell mit einem Klick oder über die AWS Befehlszeilenschnittstelle () verwalten. AWS CLI

Code

Verwenden Sie den folgenden Code, um eine DaemonSet Konfigurationsdatei zu erstellen, mit der der SSM Agent auf dem EKS Amazon-Cluster installiert wird. Folgen Sie den Anweisungen im Abschnitt 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

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Installieren und konfigurieren Sie kubectl für den Zugriff auf den EKS Cluster.

Falls es noch kubectl nicht installiert und für den Zugriff auf den EKS Amazon-Cluster konfiguriert ist, finden Sie weitere Informationen unter Installation von kubectl in der EKS Amazon-Dokumentation.

DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie die DaemonSet Konfigurationsdatei.

Verwenden Sie den Code im Abschnitt Code weiter oben in diesem Muster, um eine DaemonSet Konfigurationsdatei namens zu erstellenssm_daemonset.yaml, die im EKS Amazon-Cluster bereitgestellt wird.

Der von gestartete Pod DaemonSet hat einen Hauptcontainer und einen init Container. Der Hauptcontainer hat einen sleep Befehl. Der init Container enthält einen command Abschnitt, der eine Cron-Job-Datei zur Installation des SSM Agenten im Pfad /etc/cron.d/ erstellt. Der Cron-Job wird nur einmal ausgeführt, und die von ihm erstellte Datei wird nach Abschluss des Jobs automatisch gelöscht.

Wenn der Init-Container fertig ist, wartet der Hauptcontainer 60 Minuten, bevor er beendet wird. Nach 60 Minuten wird ein neuer Pod gestartet. Dieser Pod installiert den SSM Agenten, falls er fehlt, oder aktualisiert den SSM Agenten auf die neueste Version.

Bei Bedarf können Sie den sleep Befehl so ändern, dass der Pod einmal täglich oder häufiger neu gestartet wird. 

DevOps

Stellen Sie den DaemonSet auf dem EKS Amazon-Cluster bereit.

Verwenden Sie den folgenden Befehl, um die DaemonSet Konfigurationsdatei, die Sie im vorherigen Schritt erstellt haben, auf dem EKS Amazon-Cluster bereitzustellen:

kubectl apply -f ssm_daemonset.yaml

Dieser Befehl erstellt einen DaemonSet , um die Pods auf Worker-Knoten auszuführen, um den SSM Agenten zu installieren.

DevOps

Zugehörige Ressourcen