Étape 4 : Déployer l'application sur Amazon EKS et écrire des données dans votre table - Amazon Keyspaces (pour Apache Cassandra)

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Étape 4 : Déployer l'application sur Amazon EKS et écrire des données dans votre table

Dans cette étape du didacticiel, vous configurez le déploiement d'Amazon EKS pour votre application, puis vous confirmez que l'application est en cours d'exécution et qu'elle peut se connecter à Amazon Keyspaces.

Pour déployer une application sur Amazon EKS, vous devez configurer tous les paramètres pertinents dans un fichier appelédeployment.yaml. Ce fichier est ensuite utilisé par Amazon EKS pour déployer l'application. Les métadonnées du fichier doivent contenir les informations suivantes :

  • Nom de l'application : nom de l'application. Pour ce tutoriel, nous utilisonsmy-keyspaces-app.

  • Espace de noms Kubernetes : espace de noms du cluster Amazon EKS. Pour ce tutoriel, nous utilisonsmy-eks-namespace.

  • Le nom du compte de service Amazon EKS est le nom du compte de service Amazon EKS. Pour ce tutoriel, nous utilisonsmy-eks-serviceaccount.

  • nom de l'image : nom de l'image de l'application. Pour ce tutoriel, nous utilisonsmy-keyspaces-app.

  • URI de l'image : URI de l'image Docker provenant d'Amazon ECR.

  • AWS identifiant de compte : votre identifiant de AWS compte.

  • ARN du rôle IAM : ARN du rôle IAM créé pour que le compte de service puisse l'assumer. Pour ce tutoriel, nous utilisonsmy-iam-role.

  • Région AWS du cluster Amazon EKS dans lequel Région AWS vous avez créé votre cluster Amazon EKS.

Au cours de cette étape, vous déployez et exécutez l'application qui se connecte à Amazon Keyspaces et écrit des données dans la table.

  1. Configurez le fichier deployment.yaml. Vous devez remplacer les valeurs suivantes :

    • name

    • namespace

    • serviceAccountName

    • image

    • AWS_ROLE_ARN value

    • Le Région AWS in CASSANDRA_HOST

    • AWS_REGION

    Vous pouvez utiliser le fichier suivant comme exemple.

    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. Déployez deployment.yaml.

    kubectl apply -f deployment.yaml

    La sortie doit ressembler à ceci.

    deployment.apps/my-keyspaces-app created
  3. Vérifiez l'état du Pod dans votre espace de noms du cluster Amazon EKS.

    kubectl get pods -n my-eks-namespace

    La sortie doit ressembler à cet exemple.

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

    Pour plus de détails, vous pouvez utiliser la commande suivante.

    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. Consultez les journaux du Pod pour vérifier que votre application est en cours d'exécution et qu'elle peut se connecter à votre table Amazon Keyspaces. Vous pouvez le faire à l'aide de la commande suivante. Assurez-vous de remplacer le nom de votre déploiement.

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

    Vous devriez pouvoir voir les entrées du journal de l'application confirmant la connexion à Amazon Keyspaces, comme dans l'exemple ci-dessous.

    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. Exécutez la requête CQL suivante sur votre table Amazon Keyspaces pour confirmer qu'une ligne de données a été écrite dans votre table :

    SELECT * from aws.user;

    Vous devriez voir la sortie suivante :

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