18.13. Tutoriel : Intégrer avec AWS Services


Bien que l’application OSToy fonctionne indépendamment, de nombreuses applications du monde réel nécessitent des services externes tels que des bases de données, des magasins d’objets ou des services de messagerie.

Les objectifs

  • Découvrez comment intégrer l’application OSToy à d’autres services Amazon Web Services (AWS), en particulier AWS S3 Storage. À la fin de cette section, l’application créera et lira en toute sécurité des objets à partir d’AWS S3 Storage.
  • Faites appel au contrôleur Amazon pour Kubernetes (ACK) pour créer les services nécessaires à notre application directement à partir de Kubernetes.
  • Les rôles de gestion de l’identité et de l’accès (IAM) sont utilisés pour les comptes de service pour gérer l’accès et l’authentification.
  • Créez un fichier texte de base et enregistrez-le dans un seau S3.
  • Confirmez que le fichier a été ajouté avec succès et peut être lu à partir du seau.

18.13.1. Contrôleur Amazon pour Kubernetes (ACK)

L’ACK permet de créer et d’utiliser les services AWS directement à partir de Kubernetes. Il est possible de déployer vos applications directement dans le framework Kubernetes en utilisant une structure familière pour définir et créer des services AWS tels que S3 buckets ou Relational Database Service (RDS).

Avec ACK, vous pouvez créer un seau S3, l’intégrer à l’application OSToy, y télécharger un fichier et afficher le fichier dans votre application.

18.13.2. IAM rôles pour les comptes de service

Il est possible d’utiliser les rôles IAM pour les comptes de service pour attribuer des rôles IAM directement aux comptes de service Kubernetes. Il est possible de l’utiliser pour autoriser le contrôleur ACK à déployer des services sur votre compte AWS. Les rôles IAM pour les comptes de service permettent d’automatiser la gestion et la rotation des informations d’identification temporaires.

Les pods reçoivent un jeton Web JSON (OIDC) valide et le transmettent à l’opération AWS STS AssumeRoleWithWebIdentity API pour recevoir des informations d’identification de rôle temporaires IAM. Le processus repose sur l’identité de la pod EKS mutant le webhook qui modifie les pods nécessitant un accès AWS IAM.

Les rôles de l’IAM pour les comptes de services respectent les meilleures pratiques suivantes:

  • Le principe du moindre privilège : Vous pouvez créer des autorisations IAM pour les rôles AWS qui n’autorisent qu’un accès limité. Ces autorisations sont limitées au compte de service associé au rôle et seuls les pods qui utilisent ce compte de service ont accès.
  • Isolation d’identification: Un pod ne peut récupérer que des informations d’identification pour le rôle IAM associé au compte de service que le pod utilise.
  • Audit : Tous les accès aux ressources AWS peuvent être consultés dans CloudTrail.

18.13.3. Installation du contrôleur ACK

Installez le contrôleur ACK pour créer et supprimer des seaux dans le service S3 en utilisant une ressource personnalisée Kubernetes pour le seau. L’installation du contrôleur créera également l’espace de noms et le compte de service requis.

« nous utiliserons un opérateur pour faciliter la tâche. L’installation de l’opérateur créera également un espace de noms ack-system et un contrôleur de compte de service pour vous.

  1. Connectez-vous à la console de cluster.
  2. Dans le menu de gauche, cliquez sur Opérateurs, puis OperatorHub.
  3. Dans la zone de filtre, entrez "S3" et sélectionnez AWS Controller pour Kubernetes - Amazon S3.

    cloud experts deploying integrating ack operator

  4. En cas d’apparition d’une pop-up sur les opérateurs communautaires, cliquez sur Continuer.
  5. Cliquez sur Install.
  6. Choisissez Tous les espaces de noms du cluster sous « Mode d’installation ».
  7. Choisissez ack-system sous "Installed Namespace".
  8. Choisissez le manuel sous la rubrique « Mise à jour de l’approbation ».

    Important

    Assurez-vous que le mode manuel est sélectionné afin que les modifications apportées au compte de service ne soient pas écrasées par une mise à jour automatique de l’opérateur.

  9. Cliquez sur Install.

    Les paramètres devraient ressembler à l’image ci-dessous.

    cloud experts deployment integrating ack install

  10. Cliquez sur Approuver.
  11. L’installation commence mais ne sera pas terminée tant que vous n’avez pas créé un rôle et une politique IAM pour le contrôleur ACK.
  1. Exécutez l’un des scripts suivants pour créer le rôle AWS IAM pour le contrôleur ACK et assigner la stratégie S3:

    • Automatiquement télécharger le script setup-s3-ack-controller.sh, qui automatise le processus pour vous.
    • Exécutez le script suivant dans votre interface de ligne de commande (CLI):

      $ curl https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/resources/setup-s3-ack-controller.sh | bash
      Copy to Clipboard Toggle word wrap
  2. Lorsque le script est terminé, il redémarre le déploiement qui met à jour les pods du contrôleur de service avec les rôles IAM pour les variables d’environnement des comptes de service.
  3. Confirmez que les variables d’environnement sont définies en exécutant la commande suivante:

    $ oc describe pod ack-s3-controller -n ack-system | grep "^\s*AWS_"
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    AWS_ROLE_ARN:                 arn:aws:iam::000000000000:role/ack-s3-controller
    AWS_WEB_IDENTITY_TOKEN_FILE:  /var/run/secrets/eks.amazonaws.com/serviceaccount/token
    Copy to Clipboard Toggle word wrap

  4. Confirmez la configuration réussie du contrôleur ACK dans la console Web en cliquant sur Opérateurs, puis sur les opérateurs installés.

    cloud experts deployment installing ack oper installed

  5. Lorsque vous ne voyez pas une installation réussie de l’opérateur et les variables d’environnement, redémarrez manuellement le déploiement en exécutant la commande suivante:

    $ oc rollout restart deployment ack-s3-controller -n ack-system
    Copy to Clipboard Toggle word wrap

18.13.5. Configuration de l’accès pour l’application

Il est possible de créer un compte de rôle et de service AWS IAM afin que OSToy puisse lire et écrire des objets dans un seau S3.

  1. Créez un nouveau projet unique pour OSToy en exécutant la commande suivante:

    $ oc new-project ostoy-$(uuidgen | cut -d - -f 2 | tr '[:upper:]' '[:lower:]')
    Copy to Clipboard Toggle word wrap
  2. Enregistrez le nom de l’espace de noms et du projet dans une variable d’environnement en exécutant la commande suivante:

    $ export OSTOY_NAMESPACE=$(oc config view --minify -o 'jsonpath={..namespace}')
    Copy to Clipboard Toggle word wrap

18.13.6. Créer un rôle AWS IAM

  1. Bénéficiez de l’ID de votre compte AWS en exécutant la commande suivante:

    $ export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
    Copy to Clipboard Toggle word wrap
  2. Obtenez le fournisseur OIDC en exécutant la commande suivante, en remplaçant <cluster-name> par le nom de votre cluster:

    $ export OIDC_PROVIDER=$(rosa describe cluster -c <cluster-name> -o yaml | awk '/oidc_endpoint_url/ {print $2}' | cut -d '/' -f 3,4)
    Copy to Clipboard Toggle word wrap
  3. Créez le fichier de stratégie de confiance en exécutant la commande suivante:

    $ cat <<EOF > ./ostoy-sa-trust.json
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "arn:aws:iam::${AWS_ACCOUNT_ID}:oidc-provider/${OIDC_PROVIDER}"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "${OIDC_PROVIDER}:sub": "system:serviceaccount:${OSTOY_NAMESPACE}:ostoy-sa"
            }
          }
        }
      ]
    }
    EOF
    Copy to Clipboard Toggle word wrap
  4. Créez le rôle AWS IAM à utiliser avec votre compte de service en exécutant la commande suivante:

    $ aws iam create-role --role-name "ostoy-sa-role" --assume-role-policy-document file://ostoy-sa-trust.json
    Copy to Clipboard Toggle word wrap

18.13.7. Attacher la politique S3 au rôle de l’IAM

  1. Bénéficiez de la stratégie d’accès complet S3 ARN en exécutant la commande suivante:

    $ export POLICY_ARN=$(aws iam list-policies --query 'Policies[?PolicyName==`AmazonS3FullAccess`].Arn' --output text)
    Copy to Clipboard Toggle word wrap
  2. Attachez la stratégie au rôle AWS IAM en exécutant la commande suivante:

    $ aws iam attach-role-policy --role-name "ostoy-sa-role" --policy-arn "${POLICY_ARN}"
    Copy to Clipboard Toggle word wrap

18.13.8. Créer le compte de service pour votre pod

  1. Bénéficiez de l’ARN pour le rôle AWS IAM que nous avons créé afin qu’il soit inclus comme annotation lorsque vous créez votre compte de service en exécutant la commande suivante:

    $ export APP_IAM_ROLE_ARN=$(aws iam get-role --role-name=ostoy-sa-role --query Role.Arn --output text)
    Copy to Clipboard Toggle word wrap
  2. Créez le compte de service en exécutant la commande suivante:

    $ cat <<EOF | oc apply -f -
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: ostoy-sa
      namespace: ${OSTOY_NAMESPACE}
      annotations:
        eks.amazonaws.com/role-arn: "$APP_IAM_ROLE_ARN"
    EOF
    Copy to Clipboard Toggle word wrap
    Important

    Il ne faut pas changer le nom du compte de service de "ostoy-sa" ou vous devrez modifier la relation de confiance pour le rôle AWS IAM.

  3. Accordez au compte de service le rôle restreint en exécutant la commande suivante:

    $ oc adm policy add-scc-to-user restricted system:serviceaccount:${OSTOY_NAMESPACE}:ostoy-sa
    Copy to Clipboard Toggle word wrap
  4. Confirmez que l’annotation a été couronnée de succès en exécutant la commande suivante:

    $ oc describe serviceaccount ostoy-sa -n ${OSTOY_NAMESPACE}
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    Name:                ostoy-sa
    Namespace:           ostoy
    Labels:              <none>
    Annotations:         eks.amazonaws.com/role-arn: arn:aws:iam::000000000000:role/ostoy-sa-role
    Image pull secrets:  ostoy-sa-dockercfg-b2l94
    Mountable secrets:   ostoy-sa-dockercfg-b2l94
    Tokens:              ostoy-sa-token-jlc6d
    Events:              <none>
    Copy to Clipboard Toggle word wrap

18.13.9. Créer un seau S3

  1. Créez un seau S3 à l’aide d’un fichier manifeste en exécutant la commande suivante:

    $ cat <<EOF | oc apply -f -
    apiVersion: s3.services.k8s.aws/v1alpha1
    kind: Bucket
    metadata:
      name: ${OSTOY_NAMESPACE}-bucket
      namespace: ${OSTOY_NAMESPACE}
    spec:
      name: ${OSTOY_NAMESPACE}-bucket
    EOF
    Copy to Clipboard Toggle word wrap
    Important

    L’application OSToy s’attend à trouver un seau nommé &lt;namespace&gt;-bucket. Lorsque vous utilisez autre chose que l’espace de noms de votre projet OSToy, cette fonctionnalité ne fonctionnera pas. Ainsi, si notre projet est "ostoy", la valeur du nom doit être ostoy-bucket.

  2. Confirmez que le seau a été créé en exécutant la commande suivante:

    $ aws s3 ls | grep ${OSTOY_NAMESPACE}-bucket
    Copy to Clipboard Toggle word wrap
  1. Exécutez votre pod avec le compte de service que vous avez créé.
  2. Déployez le microservice en exécutant la commande suivante:

    $ - oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-microservice-deployment.yaml
    Copy to Clipboard Toggle word wrap
  3. Déployez l’ostoy-frontend en exécutant la commande suivante:

    $ - oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-frontend-deployment.yaml
    Copy to Clipboard Toggle word wrap
  4. Corrigez le déploiement ostoy-frontend en exécutant la commande suivante:

    $ oc patch deploy ostoy-frontend -n ${OSTOY_NAMESPACE} --type=merge --patch '{"spec": {"template": {"spec":{"serviceAccount":"ostoy-sa"}}}}'
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    spec:
      # Uncomment to use with ACK portion of the workshop
      # If you chose a different service account name please replace it.
      serviceAccount: ostoy-sa
      containers:
      - name: ostoy-frontend
        image: quay.io/ostoylab/ostoy-frontend:1.6.0
        imagePullPolicy: IfNotPresent
    [...]
    Copy to Clipboard Toggle word wrap

  5. Attendez que le pod soit mis à jour.

18.13.11. Confirmation des variables d’environnement

  • La commande suivante permet de décrire les pods et de vérifier l’existence de variables d’environnement AWS_WEB_IDENTITY_TOKEN_FILE et AWS_ROLE_ARN pour notre application:

    $ oc describe pod ostoy-frontend -n ${OSTOY_NAMESPACE} | grep "^\s*AWS_"
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    AWS_ROLE_ARN:                 arn:aws:iam::000000000000:role/ostoy-sa
    AWS_WEB_IDENTITY_TOKEN_FILE:  /var/run/secrets/eks.amazonaws.com/serviceaccount/token
    Copy to Clipboard Toggle word wrap

18.13.12. Affichage du contenu du seau à travers OSToy

Consultez votre application pour afficher le contenu de votre seau S3.

  1. Accédez à l’itinéraire de l’application nouvellement déployée en exécutant la commande suivante:

    $ oc get route ostoy-route -n ${OSTOY_NAMESPACE} -o jsonpath='{.spec.host}{"\n"}'
    Copy to Clipboard Toggle word wrap
  2. Ouvrez un nouvel onglet du navigateur et entrez l’itinéraire obtenu à l’étape précédente.

    Important

    Assurez-vous d’utiliser http:// et non https://.

  3. Cliquez sur ACK S3 dans le menu de gauche dans OSToy.
  4. Comme il s’agit d’un nouveau seau, le seau doit être vide.

    cloud expert deploying integrating ack views3contents

18.13.13. Créer des fichiers dans votre seau S3

Faites appel à OStoy pour créer un fichier et le télécharger sur le seau S3. Bien que S3 puisse accepter n’importe quel type de fichier, pour ce tutoriel, utilisez des fichiers texte afin que le contenu puisse facilement être rendu dans le navigateur.

  1. Cliquez sur ACK S3 dans le menu de gauche dans OSToy.
  2. Faites défiler vers le bas pour télécharger un fichier texte vers S3.
  3. Entrez un nom de fichier pour votre fichier.
  4. Entrez le contenu de votre fichier.
  5. Cliquez sur Créer un fichier.

    cloud expert deploying integrating ack creates3obj

  6. Faites défiler la section supérieure pour les fichiers existants et confirmez que le fichier que vous venez de créer est là.
  7. Cliquez sur le nom du fichier pour afficher le fichier.

    cloud experts deploying integrating ack viewobj

  8. Confirmez avec AWS CLI en exécutant la commande suivante pour répertorier le contenu de votre seau:

    $ aws s3 ls s3://${OSTOY_NAMESPACE}-bucket
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    $ aws s3 ls s3://ostoy-bucket
    2023-05-04 22:20:51         51 OSToy.txt
    Copy to Clipboard Toggle word wrap

Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat