Container-Orchestrierung mit Amazon EKS Kubernetes in der AWS Cloud

Autor / Redakteur: Sascha Möllering * / Stephan Augsten

„Wir würden gerne Docker-Container in AWS mit Kubernetes orchestrieren, aber eine verwaltete Lösung präferieren, da wir die Master-Nodes nicht selbst betreiben möchten. Welcher Dienst kommt für den verwalteten Betrieb eines Kubernetes-Clusters in der AWS-Cloud in Frage?“

Anbieter zum Thema

Funktionsweise von Amazon EKS.
Funktionsweise von Amazon EKS.
(Bild: AWS Germany GmbH)

Kubernetes ist eine „Open Source Container Management“-Plattform, die dabei hilft, komplexe Container-Workloads zu betreiben. Ein Kubernetes-Cluster besteht aus den Master-Nodes und den Worker-Nodes.

Die Master-Knoten sind das Control-Plane eines Clusters, auf denen Master-Komponenten laufen, die globale Entscheidungen (wie beispielsweise Scheduling von Containern) auf Cluster-Ebene treffen und auf Clusterevents reagieren. Die Worker-Nodes kommunizieren mit dem Backplane und üblicherweise laufen auf diesen die gewünschten Workloads.

Amazon Elastic Container Service for Kubernetes, kurz Amazon EKS, erleichtert die Bereitstellung, Verwaltung und Skalierung von Container-Workloads mithilfe von Kubernetes. Um Amazon EKS für die Orchestrierung von Container Workloads nutzen zu können, muss initial ein EKS-Cluster provisioniert werden. Dieser bietet einen verwalteten API-Endpoint, in den sich Worker-Nodes (Amazon EC2-Instanzen) einhängen können.

Diese Worker-Nodes können beispielsweise durch ein Amazon CloudFormation-Template oder ein TerraForm-Skript bereitgestellt werden. Für den Aufbau der Worker-Nodes stehen speziell optimierte Amazon Machine Images (AMIs) bereit, die auf Amazon Linux 2 basieren. Die Spezifikation dieser AMIs ist in Form von Packer-Skripten auf GitHub verfügbar.

IAM Authentifizierung mit kubectl

Da Amazon EKS ein AWS-Service ist, nutzt EKS IAM für die Authentifizierung gegenüber dem Kubernetes-Cluster. Dies wird mit Hilfe des Projekts AWS IAM Authenticator for Kubernetes implementiert. Initial wurde diese Software von Heptio geschrieben.

Ab der Kubernetes-Version 1.10 kann der unmodifizierte kubectl-Client so konfiguriert werden, dass dieser mit Amazon EKS durch die Installation des IAM Authenticators und entsprechender Konfiguration verwendet werden kann. Eine beispielhafte Konfiguration wird im Folgenden näher beschrieben:

apiVersion: v1
clusters:
- cluster:
      server: <endpoint-url>
      certificate-authority-data: <base64-encoded-ca-cert>
name: kubernetes
contexts:
- context:
      cluster: kubernetes
      user: aws
   name: aws
current-context: aws
kind: Config
preferences: {}
users:
- name: aws
   user:
      exec:
         apiVersion: client.authentication.k8s.io/v1alpha1
         command: aws-iam-authenticator
         args:
            - "token"
            - "-i"
            - "<cluster-name>"
               # - "-r"
            # - "<role-arn>"
            # env:
               # - name: AWS_PROFILE
               # value: "<aws-profile>"

Für die Authentifizierung wird der lokal installierte aws-iam-authenticator ausgeführt, der die entsprechende IAM Identität mit jedem Kubernetes-Call weiterleitet. Zusätzlich zu Parametern wie der Endpoint-URL, dem Base64-encoded Zertifikat und dem Clusternamen können noch eine IAM Rolle und ein spezielles AWS Credentials Profile mitgegeben werden.

Fazit

Sascha Möllering
Sascha Möllering
(Bild: AWS Germany GmbH)

Amazon EKS macht es einfach, Kubernetes Cluster in AWS aufzusetzen, indem dieser ein vollständig verwaltetes Backplane anbietet, in dem sich die Worker-Nodes registrieren können, auf denen dann die Workloads ausgeführt werden. EKS ist upstream Kubernetes und Kubernetes-konform zertifiziert, sodass alle vorhandenen Plug-ins und Tools aus der Kubernetes-Community genutzt werden können.

* Sascha Möllering arbeitet als Solutions Architect bei der Amazon Web Services Germany GmbH. Seine Interessen liegen in den Bereichen Automation, Infrastructure as Code, Distributed Computing, Container und JVM.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

(ID:45585801)