

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.

# Greifen Sie von einem Amazon EKS-Container aus auf eine Amazon Neptune-Datenbank zu
<a name="access-amazon-neptune-database-from-amazon-eks-container"></a>

*Ramakrishnan Palaninathan, Amazon Web Services*

## Zusammenfassung
<a name="access-amazon-neptune-database-from-amazon-eks-container-summary"></a>

Dieses Muster stellt eine Verbindung zwischen Amazon Neptune, einer vollständig verwalteten Graphdatenbank, und Amazon Elastic Kubernetes Service (Amazon EKS), einem Container-Orchestrierungsservice, her, um auf eine Neptune-Datenbank zuzugreifen. Neptune-DB-Cluster sind auf eine virtuelle private Cloud (VPC) beschränkt. AWS Aus diesem Grund erfordert der Zugriff auf Neptune eine sorgfältige Konfiguration der VPC, um Konnektivität zu ermöglichen.

Im Gegensatz zu Amazon Relational Database Service (Amazon RDS) für PostgreSQL ist Neptune nicht auf typische Datenbankzugriffsanmeldeinformationen angewiesen. Stattdessen verwendet es AWS Identity and Access Management (IAM) -Rollen für die Authentifizierung. Um von Amazon EKS aus eine Verbindung zu Neptune herzustellen, muss daher eine IAM-Rolle mit den erforderlichen Berechtigungen für den Zugriff auf Neptune eingerichtet werden.

Darüber hinaus sind Neptune-Endpoints nur innerhalb der VPC zugänglich, in der sich der Cluster befindet. Das bedeutet, dass Sie Netzwerkeinstellungen konfigurieren müssen, um die Kommunikation zwischen Amazon EKS und Neptune zu erleichtern. Abhängig von Ihren spezifischen Anforderungen und Netzwerkpräferenzen gibt es [verschiedene Ansätze zur Konfiguration der VPC, um](https://docs.aws.amazon.com/neptune/latest/userguide/get-started-vpc.html) eine nahtlose Konnektivität zwischen Neptune und Amazon EKS zu ermöglichen. Jede Methode bietet unterschiedliche Vorteile und Überlegungen, sodass Sie Ihre Datenbankarchitektur flexibel an die Anforderungen Ihrer Anwendung anpassen können.

## Voraussetzungen und Einschränkungen
<a name="access-amazon-neptune-database-from-amazon-eks-container-prereqs"></a>

**Voraussetzungen**
+ Installieren Sie die neueste Version von **kubectl** (siehe [Anweisungen](https://kubernetes.io/docs/tasks/tools/#kubectl)). Um deine Version zu überprüfen, führe folgenden Befehl aus: 

  ```
  kubectl version --short
  ```
+ Installieren Sie die neueste Version von **eksctl** (siehe [Anweisungen](https://eksctl.io/installation/)). Um deine Version zu überprüfen, führe folgenden Befehl aus: 

  ```
  eksctl info
  ```
+ Installieren Sie die neueste Version von AWS Command Line Interface (AWS CLI) Version 2 (siehe [Anweisungen](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)). Um Ihre Version zu überprüfen, führen Sie folgenden Befehl aus: 

  ```
  aws --version
  ```
+ Erstellen Sie einen Neptune-DB-Cluster (siehe [Anweisungen](https://docs.aws.amazon.com/neptune/latest/userguide/get-started-cfn-create.html)). Stellen Sie sicher, dass die Kommunikation zwischen der VPC des Clusters und Amazon EKS über [VPC-Peering](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) oder eine andere Methode hergestellt [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-getting-started.html)wird. Stellen Sie außerdem sicher, dass der Status des Clusters „verfügbar“ lautet und dass es für die Sicherheitsgruppe eine Regel für eingehenden Datenverkehr auf Port 8182 gibt.
+ [Konfigurieren Sie einen IAM OpenID Connect (OIDC) -Anbieter auf einem vorhandenen Amazon EKS-Cluster (siehe Anweisungen).](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html)

**Produktversionen**
+ [Amazon EKS 1,27](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html)
+ [Version 1.3.0.0 der Amazon Neptune Neptune-Engine (15.11.2023)](https://docs.aws.amazon.com/neptune/latest/userguide/engine-releases-1.3.0.0.html)

## Architektur
<a name="access-amazon-neptune-database-from-amazon-eks-container-architecture"></a>

Das folgende Diagramm zeigt die Verbindung zwischen Kubernetes-Pods in einem Amazon EKS-Cluster und Neptune, um Zugriff auf eine Neptune-Datenbank zu ermöglichen.

![Pods in einem Kubernetes-Knoten mit Amazon Neptune verbinden.](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/2fcf9e00-1664-462a-825e-b0fdd962f478/images/86da67e5-340e-4b29-acc6-2da416ce57eb.png)


**Automatisierung und Skalierung**

Sie können den Amazon EKS [Horizontal Pod Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/horizontal-pod-autoscaler.html) verwenden, um diese Lösung zu skalieren.

## Tools
<a name="access-amazon-neptune-database-from-amazon-eks-container-tools"></a>

**Services**
+ Mit [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [Amazon Neptune](https://docs.aws.amazon.com/neptune/latest/userguide/intro.html) ist ein Graphdatenbank-Service, mit dem Sie Anwendungen erstellen und ausführen können, die mit stark verbundenen Datensätzen arbeiten.

## Best Practices
<a name="access-amazon-neptune-database-from-amazon-eks-container-best-practices"></a>

Bewährte Methoden finden Sie unter [Identity and Access Management](https://aws.github.io/aws-eks-best-practices/security/docs/iam/) in den *Amazon EKS Best Practices Guides*.

## Epen
<a name="access-amazon-neptune-database-from-amazon-eks-container-epics"></a>

### Festlegen von Umgebungsvariablen
<a name="set-environment-variables"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie den Clusterkontext. | Bevor Sie mit Ihrem Amazon EKS-Cluster mithilfe von Helm oder anderen Befehlszeilentools interagieren, müssen Sie Umgebungsvariablen definieren, die die Details Ihres Clusters kapseln. Diese Variablen werden in nachfolgenden Befehlen verwendet, um sicherzustellen, dass sie auf den richtigen Cluster und die richtigen Ressourcen abzielen.<br />Stellen Sie zunächst sicher, dass Sie im richtigen Clusterkontext arbeiten. Dadurch wird sichergestellt, dass alle nachfolgenden Befehle an den vorgesehenen Kubernetes-Cluster gesendet werden. Führen Sie den folgenden Befehl aus, um den aktuellen Kontext zu überprüfen.<pre>kubectl config current-context</pre> | AWS-Administrator, Cloud-Administrator | 
| Definieren Sie die `CLUSTER_NAME` Variable. | Definieren Sie die `CLUSTER_NAME` Umgebungsvariable für Ihren Amazon EKS-Cluster. Ersetzen Sie im folgenden Befehl den Beispielwert `us-west-2` durch den AWS-Region für Ihren Cluster korrekten Wert. Ersetzen Sie den Beispielwert `eks-workshop` durch Ihren vorhandenen Clusternamen.<pre>export CLUSTER_NAME=$(aws eks describe-cluster --region us-west-2 --name eks-workshop --query "cluster.name" --output text)</pre> | AWS-Administrator, Cloud-Administrator | 
| Ausgabe validieren. | Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Variablen richtig gesetzt wurden.<pre>echo $CLUSTER_NAME</pre><br />Stellen Sie sicher, dass die Ausgabe dieses Befehls mit der Eingabe übereinstimmt, die Sie im vorherigen Schritt angegeben haben. | AWS-Administrator, Cloud-Administrator | 

### Erstellen Sie eine IAM-Rolle und verknüpfen Sie sie mit Kubernetes
<a name="create-iam-role-and-associate-it-with-kubernetes"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ein -Service-Konto aktualisieren | Sie verwenden [IAM-Rollen für Dienstkonten](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html?sc_channel=el&sc_campaign=appswave&sc_content=eks-integrate-secrets-manager&sc_geo=mult&sc_country=mult&sc_outcome=acq), um Ihre Kubernetes-Servicekonten IAM-Rollen zuzuordnen, um ein detailliertes Berechtigungsmanagement für Ihre Anwendungen zu ermöglichen, die auf Amazon EKS ausgeführt werden. Sie können [eksctl](https://eksctl.io/) verwenden, um eine IAM-Rolle zu erstellen und einem bestimmten Kubernetes-Servicekonto in Ihrem Amazon EKS-Cluster zuzuordnen. Die AWS verwaltete Richtlinie `NeptuneFullAccess` ermöglicht Schreib- und Lesezugriff auf Ihren angegebenen Neptune-Cluster.Bevor Sie diese Befehle ausführen können, muss Ihrem Cluster ein [OIDC-Endpunkt](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html?sc_channel=el&sc_campaign=appswave&sc_content=eks-integrate-secrets-manager&sc_geo=mult&sc_country=mult&sc_outcome=acq) zugeordnet sein.<br />Erstellen Sie ein Dienstkonto, das Sie einer AWS verwalteten Richtlinie mit dem Namen zuordnen möchten. `NeptuneFullAccess`<pre>eksctl create iamserviceaccount --name eks-neptune-sa --namespace default --cluster $CLUSTER_NAME --attach-policy-arn arn:aws:iam::aws:policy/NeptuneFullAccess --approve --override-existing-serviceaccounts</pre><br />wo `eks-neptune-sa ` ist der Name des Dienstkontos, das Sie erstellen möchten.<br />Nach Abschluss zeigt dieser Befehl die folgende Antwort an:<pre>2024-02-07 01:12:39 [ℹ] created serviceaccount "default/eks-neptune-sa"</pre> | AWS-Administrator, Cloud-Administrator | 
| Stellen Sie sicher, dass das Konto ordnungsgemäß eingerichtet ist. | Stellen Sie sicher, dass das `eks-neptune-sa` Dienstkonto im Standard-Namespace in Ihrem Cluster korrekt eingerichtet ist.<pre>kubectl get sa eks-neptune-sa -o yaml</pre><br />Die Ausgabe sollte in etwa wie folgt aussehen:<pre>apiVersion: v1<br />kind: ServiceAccount<br />metadata:<br />  annotations:<br />    eks.amazonaws.com/role-arn: arn:aws:iam::123456789123:role/eksctl-eks-workshop-addon-iamserviceaccount-d-Role1-Q35yKgdQOlmM<br />  creationTimestamp: "2024-02-07T01:12:39Z"<br />  labels:<br />    app.kubernetes.io/managed-by: eksctl<br />  name: eks-neptune-sa<br />  namespace: default<br />  resourceVersion: "5174750"<br />  uid: cd6ba2f7-a0f5-40e1-a6f4-4081e0042316</pre> | AWS-Administrator, Cloud-Administrator | 
| Überprüfen Sie die Konnektivität. | Stellen Sie einen Beispiel-Pod bereit, der aufgerufen wurde, `pod-util` und überprüfen Sie die Konnektivität mit Neptune.<pre>apiVersion: v1<br />kind: Pod<br />metadata:<br />  name: pod-util<br />  namespace: default<br />spec:<br />  serviceAccountName: eks-neptune-sa<br />  containers:<br />  - name: pod-util<br />    image: public.ecr.aws/patrickc/troubleshoot-util<br />    command:<br />      - sleep<br />      - "3600"<br />    imagePullPolicy: IfNotPresent</pre><pre>kubectl apply -f pod-util.yaml</pre><pre>kubectl exec --stdin --tty pod-util -- /bin/bash<br />bash-5.1# curl -X POST -d '{"gremlin":"g.V().limit(1)"}' https://db-neptune-1.cluster-xxxxxxxxxxxx.us-west-2.neptune.amazonaws.com:8182/gremlin<br />{"requestId":"a4964f2d-12b1-4ed3-8a14-eff511431a0e","status":{"message":"","code":200,"attributes":{"@type":"g:Map","@value":[]}},"result":{"data":{"@type":"g:List","@value":[]},"meta":{"@type":"g:Map","@value":[]}}}<br />bash-5.1# exit<br />exit</pre> | AWS-Administrator, Cloud-Administrator | 

### Überprüfen Sie die Verbindungsaktivität
<a name="validate-connection-activity"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktivieren Sie die IAM-Datenbankauthentifizierung. | Standardmäßig ist die IAM-Datenbankauthentifizierung deaktiviert, wenn Sie einen Neptune-DB-Cluster erstellen. Sie können die IAM-Datenbankauthentifizierung aktivieren oder deaktivieren, indem Sie den verwenden. AWS-Managementkonsole<br />Folgen Sie den Schritten in der AWS Dokumentation, um die [IAM-Datenbankauthentifizierung in Neptune zu aktivieren](https://docs.aws.amazon.com/neptune/latest/userguide/iam-auth-enable.html). | AWS-Administrator, Cloud-Administrator | 
| Überprüfen Sie die Verbindungen. | In diesem Schritt interagieren Sie mit dem `pod-util` Container, der sich bereits im Ausführungsstatus befindet, um **awscurl** zu installieren und die Verbindung zu überprüfen.[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-amazon-neptune-database-from-amazon-eks-container.html) | AWS-Administrator, Cloud-Administrator | 

## Fehlerbehebung
<a name="access-amazon-neptune-database-from-amazon-eks-container-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Ich kann nicht auf die Neptun-Datenbank zugreifen. | Überprüfen Sie die IAM-Richtlinie, die mit dem Dienstkonto verknüpft ist. Stellen Sie sicher, dass sie die erforderlichen Aktionen (z. B.`neptune:Connec,neptune:DescribeDBInstances`) für die Operationen, die Sie ausführen möchten, zulässt. | 

## Zugehörige Ressourcen
<a name="access-amazon-neptune-database-from-amazon-eks-container-resources"></a>
+ [Kubernetes-Workloads Zugriff auf die AWS Nutzung von Kubernetes-Servicekonten gewähren](https://docs.aws.amazon.com/eks/latest/userguide/service-accounts.html) (Amazon EKS-Dokumentation)
+ [IAM-Rollen für Dienstkonten](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) (Amazon EKS-Dokumentation)
+ [Einen neuen Neptune-DB-Cluster erstellen (Amazon Neptune Neptune-Dokumentation](https://docs.aws.amazon.com/neptune/latest/userguide/get-started-create-cluster.html))