Langkah 4: Menyebarkan aplikasi ke Amazon EKS dan menulis data ke tabel Anda - Amazon Keyspaces (untuk Apache Cassandra)

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

Langkah 4: Menyebarkan aplikasi ke Amazon EKS dan menulis data ke tabel Anda

Pada langkah tutorial ini, Anda mengonfigurasi penyebaran Amazon EKS untuk aplikasi Anda, dan mengonfirmasi bahwa aplikasi sedang berjalan dan dapat terhubung ke Amazon Keyspaces.

Untuk menyebarkan aplikasi ke Amazon EKS, Anda perlu mengonfigurasi semua pengaturan yang relevan dalam file bernamadeployment.yaml. File ini kemudian digunakan oleh Amazon EKS untuk menyebarkan aplikasi. Metadata dalam file harus berisi informasi berikut:

  • Nama aplikasi nama aplikasi. Untuk tutorial ini, kita gunakanmy-keyspaces-app.

  • Kubernetes namespace adalah namespace dari klaster Amazon EKS. Untuk tutorial ini, kita gunakanmy-eks-namespace.

  • Nama akun layanan Amazon EKS nama akun layanan Amazon EKS. Untuk tutorial ini, kita gunakanmy-eks-serviceaccount.

  • nama gambar nama gambar aplikasi. Untuk tutorial ini, kita gunakanmy-keyspaces-app.

  • URI gambar URI gambar Docker dari Amazon ECR.

  • AWS ID akun ID AWS akun Anda.

  • Peran IAM ARN ARN dari peran IAM yang dibuat untuk diasumsikan oleh akun layanan. Untuk tutorial ini, kita gunakanmy-iam-role.

  • Wilayah AWS dari kluster Amazon EKS tempat Wilayah AWS Anda membuat cluster Amazon EKS Anda.

Pada langkah ini, Anda menyebarkan dan menjalankan aplikasi yang terhubung ke Amazon Keyspaces dan menulis data ke tabel.

  1. Konfigurasikan file deployment.yaml. Anda perlu mengganti nilai-nilai berikut:

    • name

    • namespace

    • serviceAccountName

    • image

    • AWS_ROLE_ARN value

    • Wilayah AWS Di CASSANDRA_HOST

    • AWS_REGION

    Anda dapat menggunakan file berikut sebagai contoh.

    apiVersion: apps/v1 kind: Deployment metadata: name: my-keyspaces-app namespace: my-eks-namespace spec: replicas: 1 selector: matchLabels: app: my-keyspaces-app template: metadata: labels: app: my-keyspaces-app spec: serviceAccountName: my-eks-serviceaccount containers: - name: my-keyspaces-app image: 111122223333.dkr.ecr.aws-region.amazonaws.com/my-ecr-repository:latest ports: - containerPort: 8080 env: - name: CASSANDRA_HOST value: "cassandra.aws-region.amazonaws.com:9142" - name: CASSANDRA_DC value: "aws-region" - name: AWS_WEB_IDENTITY_TOKEN_FILE value: /var/run/secrets/eks.amazonaws.com/serviceaccount/token - name: AWS_ROLE_ARN value: "arn:aws:iam::111122223333:role/my-iam-role" - name: AWS_REGION value: "aws-region"
  2. Menyebarkandeployment.yaml.

    kubectl apply -f deployment.yaml

    Outputnya akan terlihat seperti ini.

    deployment.apps/my-keyspaces-app created
  3. Periksa status Pod di namespace Anda di klaster Amazon EKS.

    kubectl get pods -n my-eks-namespace

    Outputnya akan terlihat mirip dengan contoh ini.

    NAME READY STATUS RESTARTS AGE my-keyspaces-app-123abcde4f-g5hij 1/1 Running 0 75s

    Untuk lebih jelasnya, Anda dapat menggunakan perintah berikut.

    kubectl describe pod my-keyspaces-app-123abcde4f-g5hij -n my-eks-namespace
    Name: my-keyspaces-app-123abcde4f-g5hij Namespace: my-eks-namespace Priority: 2000001000 Priority Class Name: system-node-critical Service Account: my-eks-serviceaccount Node: fargate-ip-192-168-102-209.ec2.internal/192.168.102.209 Start Time: Thu, 23 Nov 2023 12:15:43 +0000 Labels: app=my-keyspaces-app eks.amazonaws.com/fargate-profile=my-fargate-profile pod-template-hash=6c56fccc56 Annotations: CapacityProvisioned: 0.25vCPU 0.5GB Logging: LoggingDisabled: LOGGING_CONFIGMAP_NOT_FOUND Status: Running IP: 192.168.102.209 IPs: IP: 192.168.102.209 Controlled By: ReplicaSet/my-keyspaces-app-6c56fccc56 Containers: my-keyspaces-app: Container ID: containerd://41ff7811d33ae4bc398755800abcdc132335d51d74f218ba81da0700a6f8c67b Image: 111122223333.dkr.ecr.aws-region.amazonaws.com/my_eks_repository:latest Image ID: 111122223333.dkr.ecr.aws-region.amazonaws.com/my_eks_repository@sha256:fd3c6430fc5251661efce99741c72c1b4b03061474940200d0524b84a951439c Port: 8080/TCP Host Port: 0/TCP State: Running Started: Thu, 23 Nov 2023 12:15:19 +0000 Finished: Thu, 23 Nov 2023 12:16:17 +0000 Ready: True Restart Count: 1 Environment: CASSANDRA_HOST: cassandra.aws-region.amazonaws.com:9142 CASSANDRA_DC: aws-region AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token AWS_ROLE_ARN: arn:aws:iam::111122223333:role/my-iam-role AWS_REGION: aws-region AWS_STS_REGIONAL_ENDPOINTS: regional Mounts: /var/run/secrets/eks.amazonaws.com/serviceaccount from aws-iam-token (ro) /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-fssbf (ro) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: aws-iam-token: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 86400 kube-api-access-fssbf: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: <nil> DownwardAPI: true QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning LoggingDisabled 2m13s fargate-scheduler Disabled logging because aws-logging configmap was not found. configmap "aws-logging" not found Normal Scheduled 89s fargate-scheduler Successfully assigned my-eks-namespace/my-keyspaces-app-6c56fccc56-mgs2m to fargate-ip-192-168-102-209.ec2.internal Normal Pulled 75s kubelet Successfully pulled image "111122223333.dkr.ecr.aws-region.amazonaws.com/my_eks_repository:latest" in 13.027s (13.027s including waiting) Normal Pulling 54s (x2 over 88s) kubelet Pulling image "111122223333.dkr.ecr.aws-region.amazonaws.com/my_eks_repository:latest" Normal Created 54s (x2 over 75s) kubelet Created container my-keyspaces-app Normal Pulled 54s kubelet Successfully pulled image "111122223333.dkr.ecr.aws-region.amazonaws.com/my_eks_repository:latest" in 222ms (222ms including waiting) Normal Started 53s (x2 over 75s) kubelet Started container my-keyspaces-app
  4. Periksa log Pod untuk mengonfirmasi bahwa aplikasi Anda sedang berjalan dan dapat terhubung ke tabel Amazon Keyspaces Anda. Anda dapat melakukannya dengan perintah berikut. Pastikan untuk mengganti nama penerapan Anda.

    kubectl logs -f my-keyspaces-app-123abcde4f-g5hij -n my-eks-namespace

    Anda harus dapat melihat entri log aplikasi yang mengonfirmasi koneksi ke Amazon Keyspaces seperti pada contoh di bawah ini.

    2:47:20.553 [s0-admin-0] DEBUG c.d.o.d.i.c.metadata.MetadataManager - [s0] Adding initial contact points [Node(endPoint=cassandra.aws-region.amazonaws.com/1.222.333.44:9142, hostId=null, hashCode=e750d92)] 22:47:20.562 [s0-admin-1] DEBUG c.d.o.d.i.c.c.ControlConnection - [s0] Initializing with event types [SCHEMA_CHANGE, STATUS_CHANGE, TOPOLOGY_CHANGE] 22:47:20.564 [s0-admin-1] DEBUG c.d.o.d.i.core.context.EventBus - [s0] Registering com.datastax.oss.driver.internal.core.metadata.LoadBalancingPolicyWrapper$$Lambda$812/0x0000000801105e88@769afb95 for class com.datastax.oss.driver.internal.core.metadata.NodeStateEvent 22:47:20.566 [s0-admin-1] DEBUG c.d.o.d.i.c.c.ControlConnection - [s0] Trying to establish a connection to Node(endPoint=cassandra.us-east-1.amazonaws.com/1.222.333.44:9142, hostId=null, hashCode=e750d92)
  5. Jalankan kueri CQL berikut di tabel Amazon Keyspaces Anda untuk mengonfirmasi bahwa satu baris data telah ditulis ke tabel Anda:

    SELECT * from aws.user;

    Anda akan melihat output berikut:

    fname | lname | username | last_update_date ----------+-------+----------+----------------------------- random | k | test | 2023-12-07 13:58:31.57+0000