Mit dem Amazon Elastic Kubernetes Service, kurz EKS, erhalten AWS-Kunden einen vollständig verwalteten Kubernetes-Service in der Public Cloud. Im zweiten Teil unseres EKS-Workshops geht es um die Bereitstellung der EKS-Steuerebene mit einem oder mehreren Kubernetes-Mastern, API-Servern und kubectl-Clients.
Haben wir alle Angaben gemacht und bestätigt, wird der Cluster aktiv.
(Bild: Drilling / AWS)
Im ersten Teil dieses Workshops haben wir das Netzwerk und die Berechtigungen für die Kubernetes-Steuerebene vorbereitet. Bevor wir den verwalteten Teil des EKS-Clusters (noch nicht die Worker Nodes) bereitstellen können, müssen wir das Kubernetes-Tools kubectl installieren und uns um die Cluster-Authentifizierung kümmern.
Installieren und Konfigurieren von kubectl für Amazon EKS
Bekanntlich verwendet Kubernetes das CLI-Tool „kubectl“ für die Kommunikation mit dem Cluster-API-Server. AWS-Nutzern zwei Möglichkeiten zum Installieren von kubectl:
Über den Paketmanager des als Verwaltungs-Schnittstelle verwendeten PCs, etwa in Form einer EC2-Instanz. Das Tool ist in den Repositories der meisten Linux-Distributionen enthalten.
Mithilfe der direkt von Amazon EKS angebotenen kubectl-Binaries.
In jedem Fall ist dafür zunächst die AWS-CLI zu installieren und mit den gewünschten IAM-Credentials zu konfigurieren. Allerdings muss die jeweilige Python-Version mindestens 2.7.9 sein, damit die AWS-CLI unsere EKS-Aufrufe sauber unterstützt.
Wer kubectl mit seinen Amazon EKS-Clustern verwenden möchte, muss zudem eine Binärdatei installieren, mit der man das erforderliche Client-Sicherheitstoken für die Cluster-API-Server-Kommunikation erstellen kann. Der zugehörige Befehl „aws eks get-token“ ist mit dem aws-iam-authenticator in Version 1.16.308 für die AWS CLI verfügbar. Dazu später mehr.
Wir verwenden für alle weiteren Schritte eine EC2-Instanz auf AWS mit Amazon Linux als Command-Host; u. a. zum Ausführen von kubectl. Das Installieren von kubectl direkt von AWS kann z. B. für Version 1.14 wie folgt erfolgen. Zuerst laden wir die Binärdatei herunter:
Schließlich kopieren wir die Binärdatei in ein Verzeichnis, das Bestandteil der PATH-Variable ist. Wer bereits vorher eine Version von kubectl installiert hatte, kann die Datei unter $HOME/bin/ als kubectl-Datei ablegen und stellt sicher, dass $HOME/bin in der $PATH-Variablen zuerst vorkommt:
Jetzt sind alle Voraussetzungen zum Erstellen der Steuerebene des EKS-Clusters gegeben. Wir verwenden die jeweils neueste Version von Kubernetes, die in Amazon EKS verfügbar ist, um auch neueste Funktionen verwenden zu können.
Beim Erstellen eines EKS-Clusters wird die IAM-Entität (Benutzer oder Rolle), die den Cluster erstellt, automatisch zur Kubernetes-RBAC-Autorisierungstabelle als Administrator (mittels system:master-Berechtigungen) hinzugefügt. Anfangs kann nur dieser IAM-Benutzer mit kubectl Aufrufe an den Kubernetes-API-Server tätigen.
Nun wechselt man in der AWS Management Console zu EKS. Ab hier ist ein Hinweis auf die Preise angebracht. Während bei den Worker-Nodes ganz normale EC2-Instanzen zugrunde liegen, deren Preise sich nach Anzahl und Größe der Knoten richten, handelt es sich beim EKS-Control-Plane um einen vollständig von AWS verwalteten Dienst, der in Frankfurt mit 0,10 US-Dollar/Stunde berechnet wird.
Im ersten Schritt vergeben wir den Namen für den EKS Cluster.
(Bild: Drilling / AWS)
Verzichtet man auf selbst erstellte EC2-Worker-Nodes zugunsten von AWS Fargate, berechnet AWS die Preise anhand der vCPU- und Arbeitsspeicher-Ressourcen, die für die Zeitdauer des Container-Image-Downloads verwendet werden, bis der Amazon EKS Pod beendet wird, auf Basis der nächsten Sekunde. Es wird immer mindestens 1 Minute berechnet. Im ersten Schritt legt man in der EKS Console einen Namen für den EKS Cluster fest und klickt dann auf „Next Step“.
Unsere Cluster-Grundkonfiguration.
(Bild: Drilling / AWS)
Im Konfigurations-Dialog „Create cluster“ wählt man in der Regel die neuste Kubernetes-Version (aktuell 1-14), im Feld „Role name“ die oben erstelle Service-Rolle und bei Network die oben erstellte Virtual Private Cloud (VPC).
Wir weisen den Worker Nodes die richtigen Subnetze und Security Groups zu.
(Bild: Drilling / AWS)
Bei den Subnetzen wählt man dann für die Worker-Nodes die privaten Subnetze aus. Den Namen der Security-Group kann man wie oben erwähnt dem Ressourcen-Tab der CloudFormation-Console entnehmen.
Ferner zeigt die Console den „API server endpoint“ und die „OpenID Connect provider URL“. Mit „Private access“ (Zugriff über privaten Endpunkt) wird der private Zugriff für den Kubernetes-API-Server-Endpunkt des Clusters aktiviert oder deaktiviert. Erlaubt man den privaten Zugriff, verwenden Kubernetes-API-Anfragen aus der VPC des Clusters den privaten VPC-Endpunkt.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
Deaktiviert man den öffentlichen Zugriff, empfängt der Kubernetes-API-Server des Clusters nur Anfragen aus der zugehörigen Virtual Private Cloud.
(Bild: Drilling / AWS)
Mit „Public access“ (Endpunkt für öffentlichen Zugriff) wird der öffentliche Zugriff für den Kubernetes API-Server-Endpunkt Ihres des Clusters aktiviert oder deaktiviert. Deaktiviert man den öffentlichen Zugriff, kann der Kubernetes-API-Server des Clusters nur Anfragen aus der VPC des Clusters empfangen. Bei Logging kann der Nutzer für jeden einzelnen Protokolltyp auswählen, ob dieser Enabled (Aktiviert) oder Disabled (Deaktiviert) sein soll. Standardmäßig ist jeder Protokolltyp deaktiviert.
Haben wir alle Angaben gemacht und bestätigt, wird der Cluster aktiv.
(Bild: Drilling / AWS)
Sind alle Angaben korrekt, klickt man auf „Create“ und man kann das Erstellen des EKS Cluster im Menüpunkts „Clusters“ der EKS Console verfolgen. Nach wenigen Minuten wechselt der Status des Clusters auf „Active“.
Cluster-Authentifizierung
Amazon EKS verwendet wie oben beschrieben zur Bereitstellung der Authentifizierung des Kubernetes-Cluster AWS IAM. Dau wird der Befehl „aws eks get-token“ benutzt, der ab der AWS-CLI-Version 1.16.308 des https://github.com/kubernetes-sigs/aws-iam-authenticator aws iam athenticator für Kubernetes verfügbar ist. Allerdings greift dieser für die Autorisierung wiederum auf die native rollenbasierte Zugriffskontrolle (Role Based Access Control, RBAC) von Kubernetes zurück.
Arbeitsweise der Rollen-basierten Zugriffskontrolle (RBAC).
(Bild: Drilling / AWS)
Konkret wird also AWS IAM nur für die Authentifizierung von gültigen IAM-Entitäten verwendet. Alle Berechtigungen für die Interaktion mit der Kubernetes-API des Amazon EKS-Clusters hingegen werden über das Kubernetes-native RBAC-System verwaltet, wie vorangestellte Abbildung zeigt.
Nachdem wir das Installieren des Kubernetes-Befehlszeilendienstprogramms kubectl erledigt haben, müssen wir uns jetzt noch den Authenticator installieren, weil Amazon EKS für die Bereitstellung der Authentifizierung des Kubernetes-Clusters IAM verwendet. Konkret muss man den kubectl-Client für die Arbeit mit Amazon EKS konfigurieren.
Dies geschieht dadurch, dass man den „aws iam authenticator“ für Kubernetes installiert und danach die kubectl-Konfigurationsdatei so ändert, dass sie zur Authentifizierung verwendet werden kann. Wie man den IAM-Authenticator unter Linux, Windows (via Chocolatey oder Powershell) bzw. Mac OS (Homebrew) installieren kann, ist in der EKS Dokumentation hinreichend beschrieben.
Da wir im Beispiel eine EC2-Instanz mit Amazon Linux als Kommando-Host verwenden, wählen wir die Linux-Variante. Zunächst laden wie die Binärdatei von AWS herunter:
Dann legt man am besten ein Unterverzeichnis „aws-iam-authenticator“ unterhalb von $HOME/bin (weil $HOME/bin Bestandteil der PATH-Variablen ist) an und kopiert die eben heruntergeladene Binär-Datei dorthin. Außerdem muss man sicherstellen, dass $HOME/bin in Ihrem $PATH zuerst kommt.
Der AWS IAM Authenticator wurde offensichtlich installiert.
(Bild: Drilling / AWS)
Um die angepasste PATH-Variable auch für den nächsten Reboot persistent zu machen, verewigen wir sie in der .bashrc-Datei.
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
Ob der Authenticator erfolgreich installiert wurde, erfahren wir mittels:
aws-iam-authenticator help
Kubeconfig
Bevor man nun endlich die Worker-Knoten bereitstellen kann, benötigt man noch die kubeconfig-Datei. Diese lässt sich z. B. mit dem AWS-CLI-Befehl „update-kubeconfig“ für den EKS Cluster erzeugen. Vorab muss aber sichergestellt sein, dass der IAM-Authenticator installiert ist. Per Default erstellt kubeconfig die Konfigurationsdatei im kubeconfig-Standardpfad (.kube/config) im Stammverzeichnis oder führt sie mit einer vorhandenen kubeconfig an diesem Speicherort zusammen.
Mit der Option --kubeconfig lässt sich aber auch ein anderer Pfad angeben. Beim Angeben von kubectl-Befehlen kann man mit der Option --role-arn einen IAM-Rollen-ARN für die Authentifizierung verwenden, andernfalls wird stets die IAM-Entität in der Default-Anbieterkette von AWS CLI - oder SDK-Anmeldeinformationen benutzt. Welche das ist, zeigt der Befehl:
aws sts get-caller-identity
Beispiel für das Erzeugen der kubeconfig-Datei.
(Bild: Drilling / AWS)
Mit …
aws eks --region region update-kubeconfig --name cluster_name
… erzeugen wir nun die kubeconfig-Datei.
Was jetzt noch fehlt, sind die Worker-Knoten und eine Kubernetes-Beispiel-App. Die Worker-Knoten stellt EKS nicht automatisch bereit, allerdings gibt es auch hierfür passende CloudFormation-Vorlagen. Diese sehen wir ins im dritten Teil näher an.