

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.

# Stellen Sie Kubernetes-Ressourcen und -Pakete mithilfe von Amazon EKS und einem Helm-Chart-Repository in Amazon S3 bereit
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3"></a>

*Sagar Panigrahi, Amazon Web Services*

## Zusammenfassung
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-summary"></a>

Dieses Muster hilft Ihnen, Kubernetes-Anwendungen unabhängig von ihrer Komplexität effizient zu verwalten. Das Muster integriert Helm in Ihre bestehenden CI/CD-Pipelines (Continuous Integration and Continuous Delivery), um Anwendungen in einem Kubernetes-Cluster bereitzustellen. Helm ist ein Kubernetes-Paketmanager, der Sie bei der Verwaltung von Kubernetes-Anwendungen unterstützt. Helm-Diagramme helfen bei der Definition, Installation und Aktualisierung komplexer Kubernetes-Anwendungen. Diagramme können versioniert und in Helm-Repositorys gespeichert werden, wodurch die mittlere Wiederherstellungszeit (MTTR) bei Ausfällen verbessert wird. 

Dieses Muster verwendet Amazon Elastic Kubernetes Service (Amazon EKS) für den Kubernetes-Cluster. Es verwendet Amazon Simple Storage Service (Amazon S3) als Helm-Diagramm-Repository, sodass die Diagramme zentral verwaltet und von Entwicklern im gesamten Unternehmen abgerufen werden können.

## Voraussetzungen und Einschränkungen
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-prereqs"></a>

**Voraussetzungen**
+ Ein aktives Amazon Web Services (AWS) -Konto mit einer Virtual Private Cloud (VPC)
+ Ein Amazon-EKS-Cluster 
+ Worker-Knoten, die innerhalb des Amazon EKS-Clusters eingerichtet sind und bereit sind, Workloads aufzunehmen
+ Kubectl für die Konfiguration der Amazon EKS kubeconfig-Datei für den Zielcluster auf dem Client-Computer
+ Zugriff auf AWS Identity and Access Management (IAM) zur Erstellung des S3-Buckets
+ IAM-Zugriff (programmatischer oder Rollenzugriff) auf Amazon S3 vom Client-Computer
+ Quellcodeverwaltung und eine Pipeline CI/CD 

**Einschränkungen**
+ Derzeit wird das Aktualisieren, Löschen oder Verwalten von benutzerdefinierten Ressourcendefinitionen (CRDs) nicht unterstützt.
+ Wenn Sie eine Ressource verwenden, die auf eine CRD verweist, muss die CRD separat installiert werden (außerhalb des Diagramms).

**Produktversionen**
+ Helm v3.6.3

## Architektur
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-architecture"></a>

**Zieltechnologie-Stack**
+ Amazon EKS
+ Amazon VPC
+ Amazon S3
+ Verwaltung des Quellcodes
+ Helm
+ Kubectl

**Zielarchitektur**

![\[Client Helm und Kubectl stellen ein Helm-Chart-Repo in Amazon S3 für Amazon EKS-Cluster bereit.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/d3f993e6-4d96-4cb9-a075-c4debe431fd7/images/2f09f7bb-440a-4c4b-b29f-08d136d1ada4.png)


 

**Automatisierung und Skalierung**
+ AWS CloudFormation kann verwendet werden, um die Erstellung der Infrastruktur zu automatisieren. Weitere Informationen finden Sie unter [Erstellen von Amazon EKS-Ressourcen mit AWS CloudFormation](https://docs.aws.amazon.com/eks/latest/userguide/creating-resources-with-cloudformation.html) in der Amazon EKS-Dokumentation.
+ Helm soll in Ihr vorhandenes CI/CD Automatisierungstool integriert werden, um die Paketierung und Versionierung von Helm-Diagrammen zu automatisieren (außerhalb des Geltungsbereichs dieses Musters).
+ GitVersion oder Jenkins-Build-Nummern können verwendet werden, um die Versionierung von Diagrammen zu automatisieren.

## Tools
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-tools"></a>

**Tools**
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) — Amazon Elastic Kubernetes Service (Amazon EKS) ist ein verwalteter Service für die Ausführung von Kubernetes auf AWS, ohne dass Sie Ihre eigene Kubernetes-Steuerebene einrichten oder verwalten müssen. Kubernetes ist ein Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von Anwendungen in Containern.
+ [Helm — Helm](https://helm.sh/docs/) ist ein Paketmanager für Kubernetes, der Sie bei der Installation und Verwaltung von Anwendungen auf Ihrem Kubernetes-Cluster unterstützt.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) — Amazon Simple Storage Service (Amazon S3) ist Speicher für das Internet. Mit Amazon S3 können Sie jederzeit beliebige Mengen von Daten von überall aus im Internet speichern und aufrufen.
+ [Kubectl — Kubectl](https://kubernetes.io/docs/reference/kubectl/overview/) ist ein Befehlszeilenprogramm zum Ausführen von Befehlen für Kubernetes-Cluster.

**Code**

Der Beispielcode ist angehängt.

## Epen
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-epics"></a>

### Helm konfigurieren und initialisieren
<a name="configure-and-initialize-helm"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie den Helm-Client. | Verwenden Sie den folgenden Befehl, um den Helm-Client herunterzuladen und auf Ihrem lokalen System zu installieren. <pre>sudo curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash</pre> | DevOps Ingenieur | 
| Validieren Sie die Helm-Installation. | Um zu überprüfen, ob Helm mit dem Kubernetes-API-Server innerhalb des Amazon EKS-Clusters kommunizieren kann, führen Sie folgenden Befehl aus. `helm version` | DevOps Ingenieur | 

### Erstellen und installieren Sie ein Helm-Diagramm im Amazon EKS-Cluster
<a name="create-and-install-a-helm-chart-in-the-amazon-eks-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Helm-Diagramm für NGINX. | Führen Sie den Befehl aus, um ein Helmdiagramm mit dem Namen `my-nginx` auf dem Client-Computer zu erstellen. `helm create my-nginx` | DevOps Ingenieur | 
| Überprüfen Sie die Struktur des Diagramms. | Um die Struktur des Diagramms zu überprüfen, führen Sie den Befehl tree aus`tree my-nginx/`. | DevOps Ingenieur | 
| Deaktivieren Sie die Erstellung eines Dienstkontos im Diagramm. | Stellen Sie unter dem `serviceAccount` Abschnitt den `create` Schlüssel auf ein`false`. `values.yaml` Dies ist deaktiviert, da für dieses Muster kein Dienstkonto erstellt werden muss. | DevOps Ingenieur | 
| Überprüfe (linte) das geänderte Diagramm auf syntaktische Fehler. | Führen Sie den folgenden Befehl aus, um das Diagramm vor der Installation im Zielcluster auf syntaktische Fehler zu überprüfen. `helm lint my-nginx/` | DevOps Ingenieur | 
| Installieren Sie das Diagramm, um Kubernetes-Ressourcen bereitzustellen. | Verwenden Sie den folgenden Befehl, um die Helm-Chart-Installation auszuführen. <pre>helm install --name my-nginx-release --debug my-nginx/ --namespace helm-space </pre>Das optionale `debug` Flag gibt alle Debug-Meldungen während der Installation aus. Das `namespace` Flag gibt den Namespace an, in dem der Ressourcenteil dieses Diagramms erstellt wird. | DevOps Ingenieur | 
| Überprüfen Sie die Ressourcen im Amazon EKS-Cluster. | Verwenden Sie den folgenden Befehl, um die Ressourcen zu überprüfen, die als Teil des Helm-Diagramms im `helm-space` Namespace erstellt wurden. <pre>kubectl get all -n helm-space</pre> | DevOps Ingenieur | 

### Führen Sie einen Rollback zu einer früheren Version einer Kubernetes-Anwendung durch
<a name="roll-back-to-a-previous-version-of-a-kubernetes-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ändern und aktualisieren Sie die Version. | Um das Diagramm zu ändern`values.yaml`, ändern Sie den `replicaCount` Wert in`2`. Aktualisieren Sie dann die bereits installierte Version, indem Sie den folgenden Befehl ausführen.<pre>helm upgrade my-nginx-release my-nginx/ --namespace helm-space</pre> | DevOps Ingenieur | 
| Sehen Sie sich die Geschichte der Helm-Version an. | Führen Sie den folgenden Befehl aus, um alle Versionen für eine bestimmte Version aufzulisten, die mit Helm installiert wurden. <pre>helm history my-nginx-release</pre> | DevOps Ingenieur | 
| Überprüfen Sie die Details für eine bestimmte Version. | Bevor Sie zu einer funktionierenden Version wechseln oder ein Rollback durchführen und für eine zusätzliche Überprüfungsebene vor der Installation einer Revision, sollten Sie mit dem folgenden Befehl überprüfen, welche Werte an die einzelnen Versionen übergeben wurden.<pre>helm get --revision=2 my-nginx-release</pre> | DevOps Ingenieur | 
| Gehen Sie zurück zu einer früheren Version. | Verwenden Sie den folgenden Befehl, um zu einer früheren Version zurückzukehren. <pre>helm rollback my-nginx-release 1 </pre>In diesem Beispiel wird auf Version 1 zurückgesetzt. | DevOps Ingenieur | 

### Initialisieren Sie einen S3-Bucket als Helm-Repository
<a name="initialize-an-s3-bucket-as-a-helm-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen S3-Bucket für Helm-Charts. | Erstellen Sie einen eindeutigen S3-Bucket. Erstellen Sie im Bucket einen Ordner mit dem Namen`charts`. Das Beispiel in diesem Muster verwendet `s3://my-helm-charts/charts` als Zieldiagramm-Repository. | Cloud-Administrator | 
| Installieren Sie das Helm-Plugin für Amazon S3. | Verwenden Sie den folgenden Befehl, um das Helm-S3-Plugin auf Ihrem Client-Computer zu installieren. <pre>helm plugin install https://github.com/hypnoglow/helm-s3.git --version 0.10.0</pre>Hinweis: Helm V3-Unterstützung ist mit der Plugin-Version 0.9.0 und höher verfügbar. | DevOps Ingenieur | 
| Initialisieren Sie das Amazon S3 Helm-Repository.  | Verwenden Sie den folgenden Befehl, um den Zielordner als Helm-Repository zu initialisieren. <pre>helm S3 init s3://my-helm-charts/charts </pre>Der Befehl erstellt eine `index.yaml` Datei im Ziel, um alle Diagramminformationen zu verfolgen, die an diesem Speicherort gespeichert sind. | DevOps Ingenieur | 
| Fügen Sie das Amazon S3 S3-Repository zu Helm hinzu. | Verwenden Sie den folgenden Befehl, um das Repository auf dem Client-Computer hinzuzufügen.<pre>helm repo add my-helm-charts s3://my-helm-charts/charts </pre>Dieser Befehl fügt dem Ziel-Repository auf dem Helm-Client-Computer einen Alias hinzu. | DevOps Ingenieur | 
| Überprüfen Sie die Repository-Liste. | Führen `helm repo list` Sie den Befehl aus, um die Liste der Repositorys auf dem Helm-Client-Computer anzuzeigen. | DevOps Ingenieur | 

### Package und Speichern von Diagrammen im Amazon S3 Helm-Repository
<a name="package-and-store-charts-in-the-amazon-s3-helm-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Verpacken Sie die Karte. | Führen Sie den Befehl aus, um das von Ihnen erstellte `my-nginx` Diagramm zu verpacken`helm package ./my-nginx/`. Der Befehl packt den gesamten Inhalt des `my-nginx` Diagrammordners in eine Archivdatei, die anhand der Versionsnummer benannt wird, die in der `Chart.yaml` Datei angegeben ist. | DevOps Ingenieur | 
| Speichern Sie das Paket im Amazon S3 Helm-Repository. | Um das Paket in das Helm-Repository in Amazon S3 hochzuladen, führen Sie den folgenden Befehl aus und verwenden Sie dabei den richtigen Namen der `.tgz` Datei.<pre>helm s3 push ./my-nginx-0.1.0.tgz my-helm-charts</pre> | DevOps Ingenieur | 
| Suchen Sie nach der Helm-Karte. | Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das Diagramm sowohl lokal als auch im Helm-Repository in Amazon S3 angezeigt wird.<pre>helm search repo my-nginx</pre> | DevOps Ingenieur | 

### Ein Diagramm ändern, versionieren und verpacken
<a name="modify-version-and-package-a-chart"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ändern und verpacken Sie das Diagramm. | Stellen Sie in `values.yaml` den `replicaCount` Wert auf ein`1`. Verpacken Sie dann das Diagramm`helm package ./my-nginx/`, indem Sie es ausführen und diesmal die Version in `Chart.yaml` ändern`0.1.1`. Die Versionierung wird idealerweise durch Automatisierung mithilfe von Tools wie GitVersion Jenkins Build Numbers in einer Pipeline aktualisiert. CI/CD Die Automatisierung der Versionsnummer ist für dieses Muster nicht vorgesehen. | DevOps Ingenieur | 
| Pushen Sie die neue Version in das Helm-Repository in Amazon S3. | Führen Sie den folgenden Befehl aus, um das neue Paket mit Version 0.1.1 in das `my-helm-charts` Helm-Repository in Amazon S3 zu übertragen.<pre>helm s3 push ./my-nginx-0.1.1.tgz my-helm-charts</pre> | DevOps Ingenieur | 

### Suchen und installieren Sie ein Diagramm aus dem Amazon S3 Helm-Repository
<a name="search-for-and-install-a-chart-from-the-amazon-s3-helm-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Suchen Sie nach allen Versionen des my-nginx-Diagramms. | Um alle verfügbaren Versionen eines Diagramms anzuzeigen, führen Sie den folgenden Befehl mit der Markierung aus. `--versions`<pre>helm search repo my-nginx --versions</pre>Ohne die Markierung zeigt Helm standardmäßig die zuletzt hochgeladene Version eines Diagramms an. | DevOps Ingenieur | 
| Installieren Sie ein Diagramm aus dem Amazon S3 Helm-Repository. | Die Suchergebnisse der vorherigen Aufgabe zeigen die verschiedenen Versionen des `my-nginx` Diagramms. Verwenden Sie den folgenden Befehl, um die neue Version (0.1.1) aus dem Amazon S3 Helm-Repository zu installieren.<pre>helm upgrade my-nginx-release my-helm-charts/my-nginx --version 0.1.1 --namespace helm-space</pre> | DevOps Ingenieur | 

## Zugehörige Ressourcen
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-resources"></a>
+ [HELM-Dokumentation](https://helm.sh/docs/)
+ [helm-S3-Plugin (MIT-Lizenz)](https://github.com/hypnoglow/helm-s3.git)
+ [BINÄRDATEI FÜR HELM-Cli](https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3)
+ [Amazon EKS-Dokumentation](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)

## Anlagen
<a name="attachments-d3f993e6-4d96-4cb9-a075-c4debe431fd7"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/d3f993e6-4d96-4cb9-a075-c4debe431fd7/attachments/attachment.zip)