Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Accedi a un database Amazon Neptune da un container Amazon EKS - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Accedi a un database Amazon Neptune da un container Amazon EKS

Creato da Ramakrishnan Palaninathan (AWS)

Riepilogo

Questo modello stabilisce una connessione tra Amazon Neptune, che è un database grafico completamente gestito, e Amazon Elastic Kubernetes Service (Amazon EKS), un servizio di orchestrazione di container, per accedere a un database Neptune. I cluster Neptune DB sono confinati all'interno di un cloud privato virtuale (VPC) attivo. AWS Per questo motivo, l'accesso a Neptune richiede un'attenta configurazione del VPC per abilitare la connettività.

A differenza di Amazon Relational Database Service (Amazon RDS) per PostgreSQL, Neptune non si basa sulle tipiche credenziali di accesso al database. Utilizza invece ruoli (IAM) per l'autenticazione. AWS Identity and Access Management Pertanto, la connessione a Neptune da Amazon EKS implica la configurazione di un ruolo IAM con le autorizzazioni necessarie per accedere a Neptune.

Inoltre, gli endpoint Neptune sono accessibili solo all'interno del VPC in cui risiede il cluster. Ciò significa che devi configurare le impostazioni di rete per facilitare la comunicazione tra Amazon EKS e Neptune. A seconda dei requisiti specifici e delle preferenze di rete, esistono diversi approcci alla configurazione del VPC per consentire una connettività perfetta tra Neptune e Amazon EKS. Ogni metodo offre vantaggi e considerazioni distinti, che offrono flessibilità nella progettazione dell'architettura del database per soddisfare le esigenze dell'applicazione.

Prerequisiti e limitazioni

Prerequisiti

Versioni del prodotto

Architettura

Il diagramma seguente mostra la connessione tra i pod Kubernetes in un cluster Amazon EKS e Neptune per fornire l'accesso a un database Neptune.

Connessione di pod in un nodo Kubernetes con Amazon Neptune.

Automazione e scalabilità

Puoi usare Amazon EKS Horizontal Pod Autoscaler per scalare questa soluzione.

Strumenti

Servizi

  • Amazon Elastic Kubernetes Service (Amazon EKS) ti aiuta a eseguire AWS Kubernetes senza dover installare o gestire il tuo piano di controllo o i tuoi nodi Kubernetes.

  • AWS Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.

  • Amazon Neptune è un servizio di database a grafi che ti aiuta a creare ed eseguire applicazioni che funzionano con set di dati altamente connessi.

Best practice

Per le best practice, consulta Identity and Access Management nelle guide alle best practice di Amazon EKS.

Epiche

AttivitàDescrizioneCompetenze richieste

Verifica il contesto del cluster.

Prima di interagire con il cluster Amazon EKS utilizzando Helm o altri strumenti da riga di comando, devi definire variabili di ambiente che incapsulino i dettagli del cluster. Queste variabili vengono utilizzate nei comandi successivi per garantire che siano indirizzate al cluster e alle risorse corretti.

Innanzitutto, verifica che stai operando nel contesto del cluster corretto. Ciò garantisce che tutti i comandi successivi vengano inviati al cluster Kubernetes previsto. Per verificare il contesto corrente, esegui il comando seguente.

kubectl config current-context
Amministratore AWS, amministratore cloud

Definisci la CLUSTER_NAME variabile.

Definisci la variabile di CLUSTER_NAME ambiente per il tuo cluster Amazon EKS. Nel comando seguente, sostituisci il valore di esempio us-west-2 con quello corretto Regione AWS per il tuo cluster. Sostituisci il valore di esempio eks-workshop con il nome del cluster esistente.

export CLUSTER_NAME=$(aws eks describe-cluster --region us-west-2 --name eks-workshop --query "cluster.name" --output text)
Amministratore AWS, amministratore cloud

Convalida l'output.

Per verificare che le variabili siano state impostate correttamente, esegui il comando seguente.

echo $CLUSTER_NAME

Verificate che l'output di questo comando corrisponda all'input specificato nel passaggio precedente.

Amministratore AWS, amministratore cloud

Impostazione delle variabili di ambiente

AttivitàDescrizioneCompetenze richieste

Verifica il contesto del cluster.

Prima di interagire con il cluster Amazon EKS utilizzando Helm o altri strumenti da riga di comando, devi definire variabili di ambiente che incapsulino i dettagli del cluster. Queste variabili vengono utilizzate nei comandi successivi per garantire che siano indirizzate al cluster e alle risorse corretti.

Innanzitutto, verifica che stai operando nel contesto del cluster corretto. Ciò garantisce che tutti i comandi successivi vengano inviati al cluster Kubernetes previsto. Per verificare il contesto corrente, esegui il comando seguente.

kubectl config current-context
Amministratore AWS, amministratore cloud

Definisci la CLUSTER_NAME variabile.

Definisci la variabile di CLUSTER_NAME ambiente per il tuo cluster Amazon EKS. Nel comando seguente, sostituisci il valore di esempio us-west-2 con quello corretto Regione AWS per il tuo cluster. Sostituisci il valore di esempio eks-workshop con il nome del cluster esistente.

export CLUSTER_NAME=$(aws eks describe-cluster --region us-west-2 --name eks-workshop --query "cluster.name" --output text)
Amministratore AWS, amministratore cloud

Convalida l'output.

Per verificare che le variabili siano state impostate correttamente, esegui il comando seguente.

echo $CLUSTER_NAME

Verificate che l'output di questo comando corrisponda all'input specificato nel passaggio precedente.

Amministratore AWS, amministratore cloud
AttivitàDescrizioneCompetenze richieste

Crea un account di servizio .

Utilizzi i ruoli IAM per gli account di servizio per mappare i tuoi account di servizio Kubernetes ai ruoli IAM, per consentire una gestione granulare delle autorizzazioni per le tue applicazioni eseguite su Amazon EKS. Puoi usare eksctl per creare e associare un ruolo IAM a un account di servizio Kubernetes specifico all'interno del tuo cluster Amazon EKS. La policy AWS gestita NeptuneFullAccess consente l'accesso in scrittura e lettura al cluster Neptune specificato.

Importante

È necessario che al cluster sia associato un endpoint OIDC prima di eseguire questi comandi.

Crea un account di servizio da associare a una politica AWS gestita denominata. NeptuneFullAccess

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

dove eks-neptune-sa è il nome dell'account di servizio che desideri creare.

Al termine, questo comando visualizza la seguente risposta:

2024-02-07 01:12:39 [ℹ] created serviceaccount "default/eks-neptune-sa"
Amministratore AWS, amministratore cloud

Verifica che l'account sia configurato correttamente.

Assicurati che l'account del eks-neptune-sa servizio sia configurato correttamente nello spazio dei nomi predefinito del cluster.

kubectl get sa eks-neptune-sa -o yaml

L'output dovrebbe essere simile al seguente:

apiVersion: v1 kind: ServiceAccount metadata: annotations: eks.amazonaws.com/role-arn: arn:aws:iam::123456789123:role/eksctl-eks-workshop-addon-iamserviceaccount-d-Role1-Q35yKgdQOlmM creationTimestamp: "2024-02-07T01:12:39Z" labels: app.kubernetes.io/managed-by: eksctl name: eks-neptune-sa namespace: default resourceVersion: "5174750" uid: cd6ba2f7-a0f5-40e1-a6f4-4081e0042316
Amministratore AWS, amministratore cloud

Verifica la connettività.

Implementa un pod di esempio chiamato pod-util e verifica la connettività con Neptune.

apiVersion: v1 kind: Pod metadata: name: pod-util namespace: default spec: serviceAccountName: eks-neptune-sa containers: - name: pod-util image: public.ecr.aws/patrickc/troubleshoot-util command: - sleep - "3600" imagePullPolicy: IfNotPresent
kubectl apply -f pod-util.yaml
kubectl exec --stdin --tty pod-util -- /bin/bash 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 {"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":[]}}} bash-5.1# exit exit
Amministratore AWS, amministratore cloud

Crea un ruolo IAM e associalo a Kubernetes

AttivitàDescrizioneCompetenze richieste

Crea un account di servizio .

Utilizzi i ruoli IAM per gli account di servizio per mappare i tuoi account di servizio Kubernetes ai ruoli IAM, per consentire una gestione granulare delle autorizzazioni per le tue applicazioni eseguite su Amazon EKS. Puoi usare eksctl per creare e associare un ruolo IAM a un account di servizio Kubernetes specifico all'interno del tuo cluster Amazon EKS. La policy AWS gestita NeptuneFullAccess consente l'accesso in scrittura e lettura al cluster Neptune specificato.

Importante

È necessario che al cluster sia associato un endpoint OIDC prima di eseguire questi comandi.

Crea un account di servizio da associare a una politica AWS gestita denominata. NeptuneFullAccess

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

dove eks-neptune-sa è il nome dell'account di servizio che desideri creare.

Al termine, questo comando visualizza la seguente risposta:

2024-02-07 01:12:39 [ℹ] created serviceaccount "default/eks-neptune-sa"
Amministratore AWS, amministratore cloud

Verifica che l'account sia configurato correttamente.

Assicurati che l'account del eks-neptune-sa servizio sia configurato correttamente nello spazio dei nomi predefinito del cluster.

kubectl get sa eks-neptune-sa -o yaml

L'output dovrebbe essere simile al seguente:

apiVersion: v1 kind: ServiceAccount metadata: annotations: eks.amazonaws.com/role-arn: arn:aws:iam::123456789123:role/eksctl-eks-workshop-addon-iamserviceaccount-d-Role1-Q35yKgdQOlmM creationTimestamp: "2024-02-07T01:12:39Z" labels: app.kubernetes.io/managed-by: eksctl name: eks-neptune-sa namespace: default resourceVersion: "5174750" uid: cd6ba2f7-a0f5-40e1-a6f4-4081e0042316
Amministratore AWS, amministratore cloud

Verifica la connettività.

Implementa un pod di esempio chiamato pod-util e verifica la connettività con Neptune.

apiVersion: v1 kind: Pod metadata: name: pod-util namespace: default spec: serviceAccountName: eks-neptune-sa containers: - name: pod-util image: public.ecr.aws/patrickc/troubleshoot-util command: - sleep - "3600" imagePullPolicy: IfNotPresent
kubectl apply -f pod-util.yaml
kubectl exec --stdin --tty pod-util -- /bin/bash 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 {"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":[]}}} bash-5.1# exit exit
Amministratore AWS, amministratore cloud
AttivitàDescrizioneCompetenze richieste

Abilita l'autenticazione del database IAM.

Per impostazione predefinita, l'autenticazione del database IAM è disabilitata quando si crea un cluster Neptune DB. È possibile abilitare o disabilitare l'autenticazione del database IAM utilizzando. AWS Management Console

Segui i passaggi indicati nella AWS documentazione per abilitare l'autenticazione del database IAM in Neptune.

Amministratore AWS, amministratore cloud

Verifica le connessioni.

In questo passaggio, interagisci con il pod-util contenitore, che è già in stato di esecuzione, per installare awscurl e verificare la connessione.

  1. Esegui il seguente comando per trovare il pod.

    kubectl get pods

    L'output dovrebbe essere simile al seguente:

    NAME READY STATUS RESTARTS AGE pod-util 1/1 Running 0 50m
  2. Esegui il comando seguente per installare awscurl.

    kubectl exec --stdin --tty pod-util -- /bin/bash bash-5.1#pip3 install awscurl Installing collected packages: idna, configparser, configargparse, charset-normalizer, certifi, requests, awscurl Successfully installed awscurl-0.32 certifi-2024.2.2 charset-normalizer-3.3.2 configargparse-1.7 configparser-6.0.0 idna-3.6 requests-2.31.0 bash-5.1# awscurl https://db-neptune-1.cluster-xxxxxxxxxxxx.us-west-2.neptune.amazonaws.com:8182/status --region us-west-2 --service neptune-db {"status":"healthy","startTime":"Thu Feb 08 01:22:14 UTC 2024","dbEngineVersion":"1.3.0.0.R1","role":"writer","dfeQueryEngine":"viaQueryHint","gremlin":{"version":"tinkerpop-3.6.4"},"sparql":{"version":"sparql-1.1"},"opencypher":{"version":"Neptune-9.0.20190305-1.0"},"labMode":{"ObjectIndex":"disabled","ReadWriteConflictDetection":"enabled"},"features":{"SlowQueryLogs":"disabled","ResultCache":{"status":"disabled"},"IAMAuthentication":"enabled","Streams":"disabled","AuditLog":"disabled"},"settings":{"clusterQueryTimeoutInMs":"120000","SlowQueryLogsThreshold":"5000"}}
Amministratore AWS, amministratore cloud

Convalida l'attività di connessione

AttivitàDescrizioneCompetenze richieste

Abilita l'autenticazione del database IAM.

Per impostazione predefinita, l'autenticazione del database IAM è disabilitata quando si crea un cluster Neptune DB. È possibile abilitare o disabilitare l'autenticazione del database IAM utilizzando. AWS Management Console

Segui i passaggi indicati nella AWS documentazione per abilitare l'autenticazione del database IAM in Neptune.

Amministratore AWS, amministratore cloud

Verifica le connessioni.

In questo passaggio, interagisci con il pod-util contenitore, che è già in stato di esecuzione, per installare awscurl e verificare la connessione.

  1. Esegui il seguente comando per trovare il pod.

    kubectl get pods

    L'output dovrebbe essere simile al seguente:

    NAME READY STATUS RESTARTS AGE pod-util 1/1 Running 0 50m
  2. Esegui il comando seguente per installare awscurl.

    kubectl exec --stdin --tty pod-util -- /bin/bash bash-5.1#pip3 install awscurl Installing collected packages: idna, configparser, configargparse, charset-normalizer, certifi, requests, awscurl Successfully installed awscurl-0.32 certifi-2024.2.2 charset-normalizer-3.3.2 configargparse-1.7 configparser-6.0.0 idna-3.6 requests-2.31.0 bash-5.1# awscurl https://db-neptune-1.cluster-xxxxxxxxxxxx.us-west-2.neptune.amazonaws.com:8182/status --region us-west-2 --service neptune-db {"status":"healthy","startTime":"Thu Feb 08 01:22:14 UTC 2024","dbEngineVersion":"1.3.0.0.R1","role":"writer","dfeQueryEngine":"viaQueryHint","gremlin":{"version":"tinkerpop-3.6.4"},"sparql":{"version":"sparql-1.1"},"opencypher":{"version":"Neptune-9.0.20190305-1.0"},"labMode":{"ObjectIndex":"disabled","ReadWriteConflictDetection":"enabled"},"features":{"SlowQueryLogs":"disabled","ResultCache":{"status":"disabled"},"IAMAuthentication":"enabled","Streams":"disabled","AuditLog":"disabled"},"settings":{"clusterQueryTimeoutInMs":"120000","SlowQueryLogsThreshold":"5000"}}
Amministratore AWS, amministratore cloud

Risoluzione dei problemi

ProblemaSoluzione

Impossibile accedere al database di Neptune.

Esamina la policy IAM allegata all'account del servizio. Assicurati che consenta le azioni necessarie (ad esempioneptune:Connec,neptune:DescribeDBInstances) per le operazioni che desideri eseguire.

Risorse correlate

PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.