

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Akses database Amazon Neptunus dari wadah Amazon EKS
<a name="access-amazon-neptune-database-from-amazon-eks-container"></a>

*Ramakrishnan Palaninathan, Amazon Web Services*

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

Pola ini membuat koneksi antara Amazon Neptunus, yang merupakan database grafik yang dikelola sepenuhnya, dan Amazon Elastic Kubernetes Service (Amazon EKS), layanan orkestrasi kontainer, untuk mengakses database Neptunus. Cluster DB Neptunus terbatas dalam virtual private cloud (VPC) aktif. AWS Untuk alasan ini, mengakses Neptunus memerlukan konfigurasi VPC yang cermat untuk mengaktifkan konektivitas.

Tidak seperti Amazon Relational Database Service (Amazon RDS) untuk PostgreSQL, Neptune tidak bergantung pada kredensyal akses database yang khas. Sebaliknya, ia menggunakan peran AWS Identity and Access Management (IAM) untuk otentikasi. Oleh karena itu, menghubungkan ke Neptunus dari Amazon EKS melibatkan pengaturan peran IAM dengan izin yang diperlukan untuk mengakses Neptunus.

Selain itu, titik akhir Neptunus hanya dapat diakses dalam VPC tempat cluster berada. Ini berarti Anda harus mengonfigurasi pengaturan jaringan untuk memfasilitasi komunikasi antara Amazon EKS dan Neptunus. Bergantung pada kebutuhan spesifik dan preferensi jaringan Anda, ada [berbagai pendekatan untuk mengonfigurasi VPC untuk](https://docs.aws.amazon.com/neptune/latest/userguide/get-started-vpc.html) memungkinkan konektivitas tanpa batas antara Neptunus dan Amazon EKS. Setiap metode menawarkan keuntungan dan pertimbangan yang berbeda, yang memberikan fleksibilitas dalam merancang arsitektur database Anda agar sesuai dengan kebutuhan aplikasi Anda.

## Prasyarat dan batasan
<a name="access-amazon-neptune-database-from-amazon-eks-container-prereqs"></a>

**Prasyarat**
+ [Instal **kubectl** versi terbaru (lihat instruksi).](https://kubernetes.io/docs/tasks/tools/#kubectl) Untuk memeriksa versi Anda, jalankan: 

  ```
  kubectl version --short
  ```
+ [Instal versi terbaru **eksctl** (lihat instruksi).](https://eksctl.io/installation/) Untuk memeriksa versi Anda, jalankan: 

  ```
  eksctl info
  ```
+ Instal versi terbaru dari AWS Command Line Interface (AWS CLI) versi 2 (lihat [instruksi](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)). Untuk memeriksa versi Anda, jalankan: 

  ```
  aws --version
  ```
+ [Buat cluster DB Neptunus (lihat instruksi).](https://docs.aws.amazon.com/neptune/latest/userguide/get-started-cfn-create.html) Pastikan untuk membuat komunikasi antara VPC cluster dan Amazon EKS melalui [VPC peering](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html),, [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-getting-started.html)atau metode lain. Pastikan juga bahwa status cluster “tersedia” dan memiliki aturan masuk pada port 8182 untuk grup keamanan.
+ [Konfigurasikan penyedia OpenID Connect (OIDC) IAM di kluster Amazon EKS yang ada (lihat instruksi).](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html)

**Versi produk**
+ [Amazon EKS 1.27](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html)
+ [Mesin Amazon Neptunus versi 1.3.0.0 (2023-11-15)](https://docs.aws.amazon.com/neptune/latest/userguide/engine-releases-1.3.0.0.html)

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

Diagram berikut menunjukkan hubungan antara pod Kubernetes di cluster Amazon EKS dan Neptunus untuk menyediakan akses ke database Neptunus.

![\[Menghubungkan pod di node Kubernetes dengan Amazon Neptunus.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/2fcf9e00-1664-462a-825e-b0fdd962f478/images/86da67e5-340e-4b29-acc6-2da416ce57eb.png)


**Otomatisasi dan skala**

Anda dapat menggunakan Amazon EKS [Horizontal Pod Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/horizontal-pod-autoscaler.html) untuk menskalakan solusi ini.

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

**Layanan**
+ [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) EKS) membantu Anda menjalankan AWS Kubernetes tanpa perlu menginstal atau memelihara control plane atau node Kubernetes Anda sendiri.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
+ [Amazon Neptunus](https://docs.aws.amazon.com/neptune/latest/userguide/intro.html) adalah layanan database grafik yang membantu Anda membangun dan menjalankan aplikasi yang bekerja dengan kumpulan data yang sangat terhubung.

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

Untuk praktik terbaik, lihat [Identity and Access Management](https://aws.github.io/aws-eks-best-practices/security/docs/iam/) di *Panduan Praktik Terbaik Amazon EKS*.

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

### Tetapkan variabel lingkungan
<a name="set-environment-variables"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Verifikasi konteks cluster. | Sebelum berinteraksi dengan klaster Amazon EKS menggunakan Helm atau alat baris perintah lainnya, Anda harus menentukan variabel lingkungan yang merangkum detail klaster Anda. Variabel-variabel ini digunakan dalam perintah berikutnya untuk memastikan bahwa mereka menargetkan cluster dan sumber daya yang benar.Pertama, konfirmasikan bahwa Anda beroperasi dalam konteks cluster yang benar. Ini memastikan bahwa setiap perintah berikutnya dikirim ke cluster Kubernetes yang dimaksud. Untuk memverifikasi konteks saat ini, jalankan perintah berikut.<pre>kubectl config current-context</pre> | Administrator AWS, Administrator cloud | 
| Tentukan `CLUSTER_NAME` variabelnya. | Tentukan variabel `CLUSTER_NAME` lingkungan untuk klaster Amazon EKS Anda. Dalam perintah berikut, ganti nilai sampel `us-west-2` dengan yang benar Wilayah AWS untuk cluster Anda. Ganti nilai sampel `eks-workshop` dengan nama cluster yang ada.<pre>export CLUSTER_NAME=$(aws eks describe-cluster --region us-west-2 --name eks-workshop --query "cluster.name" --output text)</pre> | Administrator AWS, Administrator cloud | 
| Validasi keluaran. | Untuk memvalidasi bahwa variabel telah diatur dengan benar, jalankan perintah berikut.<pre>echo $CLUSTER_NAME</pre>Verifikasi bahwa output dari perintah ini cocok dengan input yang Anda tentukan pada langkah sebelumnya. | Administrator AWS, Administrator cloud | 

### Buat peran IAM dan kaitkan dengan Kubernetes
<a name="create-iam-role-and-associate-it-with-kubernetes"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat akun layanan. | Anda menggunakan [peran IAM untuk akun layanan untuk memetakan akun layanan](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) Kubernetes Anda ke peran IAM, untuk mengaktifkan manajemen izin berbutir halus untuk aplikasi Anda yang berjalan di Amazon EKS. Anda dapat menggunakan [eksctl](https://eksctl.io/) untuk membuat dan mengaitkan peran IAM dengan akun layanan Kubernetes tertentu dalam klaster Amazon EKS Anda. Kebijakan AWS terkelola `NeptuneFullAccess` memungkinkan akses tulis dan baca ke klaster Neptunus yang Anda tentukan.Anda harus memiliki [endpoint OIDC](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) yang terkait dengan cluster Anda sebelum menjalankan perintah ini.Buat akun layanan yang ingin Anda kaitkan dengan kebijakan AWS terkelola bernama`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>di `eks-neptune-sa ` mana nama akun layanan yang ingin Anda buat.Setelah selesai, perintah ini menampilkan respons berikut:<pre>2024-02-07 01:12:39 [ℹ] created serviceaccount "default/eks-neptune-sa"</pre> | Administrator AWS, Administrator cloud | 
| Verifikasi bahwa akun sudah diatur dengan benar. | Pastikan akun `eks-neptune-sa` layanan diatur dengan benar di namespace default di cluster Anda.<pre>kubectl get sa eks-neptune-sa -o yaml</pre>Outputnya akan terlihat seperti ini:<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> | Administrator AWS, Administrator cloud | 
| Periksa konektivitas. | Terapkan pod sampel yang disebut `pod-util` dan periksa konektivitas dengan Neptunus.<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> | Administrator AWS, Administrator cloud | 

### Validasi aktivitas koneksi
<a name="validate-connection-activity"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Aktifkan otentikasi database IAM. | Secara default, otentikasi database IAM dinonaktifkan saat Anda membuat cluster DB Neptunus. Anda dapat mengaktifkan atau menonaktifkan otentikasi database IAM dengan menggunakan file. Konsol Manajemen AWSIkuti langkah-langkah dalam AWS dokumentasi untuk [mengaktifkan otentikasi database IAM di Neptunus](https://docs.aws.amazon.com/neptune/latest/userguide/iam-auth-enable.html). | Administrator AWS, Administrator cloud | 
| Verifikasi koneksi. | Pada langkah ini, Anda berinteraksi dengan `pod-util` wadah, yang sudah dalam status berjalan, untuk menginstal **awscurl** dan memverifikasi koneksi.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/access-amazon-neptune-database-from-amazon-eks-container.html) | Administrator AWS, Administrator cloud | 

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


| Isu | Solusi | 
| --- | --- | 
| Tidak dapat mengakses database Neptunus. | Tinjau kebijakan IAM yang dilampirkan ke akun layanan. Pastikan bahwa itu memungkinkan tindakan yang diperlukan (misalnya,`neptune:Connec,neptune:DescribeDBInstances`) untuk operasi yang ingin Anda jalankan. | 

## Sumber daya terkait
<a name="access-amazon-neptune-database-from-amazon-eks-container-resources"></a>
+ [Berikan akses beban kerja Kubernetes untuk AWS menggunakan Akun Layanan Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/service-accounts.html) (dokumentasi Amazon EKS)
+ [Peran IAM untuk akun layanan](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) (dokumentasi Amazon EKS)
+ [Membuat cluster DB Neptunus baru (dokumentasi Amazon Neptunus](https://docs.aws.amazon.com/neptune/latest/userguide/get-started-create-cluster.html))