Chapitre 2. Opérateurs de réseautage


2.1. AWS Load Balancer Opérateur

L’opérateur AWS Load Balancer est un opérateur pris en charge par Red Hat que les utilisateurs peuvent éventuellement installer sur le service Red Hat OpenShift géré par SRE sur les clusters AWS (ROSA). L’opérateur AWS Load Balancer gère le cycle de vie du contrôleur AWS Load Balancer qui fournit les services AWS Elastic Load Balancing v2 (ELBv2) pour les applications exécutées dans les clusters ROSA.

2.1.1. Créer un rôle AWS IAM en utilisant l’utilitaire Cloud Credential Operator

Il est possible d’utiliser l’utilitaire Cloud Credential Operator (ccoctl) pour créer un rôle AWS IAM pour l’opérateur AWS Load Balancer. Le rôle AWS IAM interagit avec les sous-réseaux et les clouds privés virtuels (VPC).

Conditions préalables

  • Il faut extraire et préparer le binaire ccoctl.

Procédure

  1. Téléchargez la ressource personnalisée CredentialsRequest (CR) et stockez-la dans un répertoire en exécutant la commande suivante:

    $ curl --create-dirs -o <credentials_requests_dir>/operator.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-credentials-request.yaml
    Copy to Clipboard
  2. L’utilitaire ccoctl permet de créer un rôle AWS IAM en exécutant la commande suivante:

    $ ccoctl aws create-iam-roles \
        --name <name> \
        --region=<aws_region> \
        --credentials-requests-dir=<credentials_requests_dir> \
        --identity-provider-arn <oidc_arn>
    Copy to Clipboard

    Exemple de sortie

    2023/09/12 11:38:57 Role arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-operator created 
    1
    
    2023/09/12 11:38:57 Saved credentials configuration to: /home/user/<credentials_requests_dir>/manifests/aws-load-balancer-operator-aws-load-balancer-operator-credentials.yaml
    2023/09/12 11:38:58 Updated Role policy for Role <name>-aws-load-balancer-operator-aws-load-balancer-operator created
    Copy to Clipboard

    1
    Le nom de ressource Amazon (ARN) d’un rôle AWS IAM qui a été créé pour l’opérateur AWS Load Balancer, tel que arn:aws:iam::7777777777:role/&lt;name&gt;-aws-load-balancer-operator-aws-load-balancer-operator.
    Note

    La longueur d’un nom de rôle AWS IAM doit être inférieure ou égale à 12 caractères.

2.1.2. Création d’un rôle AWS IAM pour le contrôleur en utilisant l’utilitaire Cloud Credential Operator

Il est possible d’utiliser l’utilitaire Cloud Credential Operator (ccoctl) pour créer un rôle AWS IAM pour le contrôleur AWS Load Balancer. Le rôle AWS IAM est utilisé pour interagir avec les sous-réseaux et les clouds privés virtuels (VPC).

Conditions préalables

  • Il faut extraire et préparer le binaire ccoctl.

Procédure

  1. Téléchargez la ressource personnalisée CredentialsRequest (CR) et stockez-la dans un répertoire en exécutant la commande suivante:

    $ curl --create-dirs -o <credentials_requests_dir>/controller.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/controller/controller-credentials-request.yaml
    Copy to Clipboard
  2. L’utilitaire ccoctl permet de créer un rôle AWS IAM en exécutant la commande suivante:

    $ ccoctl aws create-iam-roles \
        --name <name> \
        --region=<aws_region> \
        --credentials-requests-dir=<credentials_requests_dir> \
        --identity-provider-arn <oidc_arn>
    Copy to Clipboard

    Exemple de sortie

    2023/09/12 11:38:57 Role arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-controller created 
    1
    
    2023/09/12 11:38:57 Saved credentials configuration to: /home/user/<credentials_requests_dir>/manifests/aws-load-balancer-operator-aws-load-balancer-controller-credentials.yaml
    2023/09/12 11:38:58 Updated Role policy for Role <name>-aws-load-balancer-operator-aws-load-balancer-controller created
    Copy to Clipboard

    1
    Le nom de ressource Amazon (ARN) d’un rôle AWS IAM qui a été créé pour le contrôleur AWS Load Balancer, tel que arn:aws:iam::7777777777:role/&lt;name&gt;-aws-load-balancer-operator-aws-load-balancer-controller.
    Note

    La longueur d’un nom de rôle AWS IAM doit être inférieure ou égale à 12 caractères.

2.1.3. Installation d’un opérateur AWS Load Balancer

Il est possible d’installer un opérateur AWS Load Balancer et un contrôleur AWS Load Balancer si vous répondez à certaines exigences.

Conditions préalables

  • Il existe un cluster Red Hat OpenShift sur AWS (ROSA) doté d’une configuration VPC (BYO-VPC) sur plusieurs zones de disponibilité installées en mode Plan de contrôle hébergé (HCP).
  • En tant qu’utilisateur, vous avez accès au cluster avec le rôle d’administrateur dédié.
  • Il vous est possible de modifier le VPC et les sous-réseaux du cluster ROSA créé.
  • Le ROSA CLI (rosa) a été installé.
  • Le CLI d’Amazon Web Services (AWS) a été installé.
  • Le service Red Hat OpenShift est disponible sur AWS 4.13 ou version ultérieure.
Important

Lors de l’installation d’un opérateur AWS Load Balancer pour une utilisation avec un cluster ROSA dans une zone locale AWS (LZ), vous devez activer la zone locale AWS pour le compte. De plus, vous devez vous assurer que les services AWS Elastic Load Balancing v2 (ELBv2) existent dans la zone locale AWS.

Procédure

  1. Identifiez l’ID de l’infrastructure de cluster et le DNS OpenID Connect (OIDC) en exécutant les commandes suivantes:

    1. Identifier l’ID du cluster ROSA:

      $ rosa describe cluster --cluster=<cluster_name> | grep -i 'Infra ID'
      Copy to Clipboard

      a) ou

      $ oc get infrastructure cluster -o json | jq -r '.status.infrastructureName'
      Copy to Clipboard
    2. Identifiez le cluster ROSA OIDC DNS à l’aide de la commande rosa CLI suivante:

      $ rosa describe cluster --cluster=<cluster_name> | grep -i OIDC 
      1
      Copy to Clipboard
      1
      Dans un exemple de DNS OIDC est oidc.op1.openshiftapps.com/28q7fsn54m2jjts3kd556aij4mu9omah.

      a) ou

      $ oc get authentication.config cluster -o=jsonpath="{.spec.serviceAccountIssuer}"
      Copy to Clipboard
    3. Localisez les informations OIDC Amazon Resource Name (ARN) sur la console Web AWS en naviguant vers les fournisseurs IAM Access Management Identity. L’exemple OIDC ARN est arn:aws:iam::777777777777:oidc-provider/&lt;oidc_dns_url&gt;.
    4. Enregistrez la sortie des commandes. Ces informations seront utilisées dans les prochaines étapes de cette procédure.
  2. Créez la politique AWS IAM requise pour l’opérateur AWS Load Balancer à l’aide de l’AWS CLI.

    1. Connectez-vous au cluster ROSA en tant qu’utilisateur avec le rôle d’administrateur dédié et créez un nouveau projet en utilisant la commande suivante:

      $ oc new-project aws-load-balancer-operator
      Copy to Clipboard
    2. Attribuer la politique de confiance suivante au nouveau rôle AWS IAM:

      $ IDP='{Cluster_OIDC_Endpoint}'
      Copy to Clipboard
      $ IDP_ARN="arn:aws:iam::{AWS_AccountNo}:oidc-provider/${IDP}" 
      1
      Copy to Clipboard
      1
      {AWS_AccountNo} par votre numéro de compte AWS et {Cluster_OIDC_Endpoint} par le DNS OIDC identifié plus tôt dans cette procédure.
    3. Assurez-vous que la politique de trsut a été assignée au rôle AWS IAM.

      Exemple de sortie

      $ cat <<EOF > albo-operator-trusted-policy.json
      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Federated": "${IDP_ARN}"
                  },
                  "Action": "sts:AssumeRoleWithWebIdentity",
                  "Condition": {
                      "StringEquals": {
                          "${IDP}:sub": "system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-operator-controller-manager"
                      }
                  }
              }
          ]
      }
      EOF
      Copy to Clipboard

      Important

      Il ne faut pas inclure la partie https de l’URL DNS OIDC lorsque vous remplacez {Cluster_OIDC_Endpoint} par le DNS OIDC que vous avez identifié plus tôt. Il n’y a que les informations alphanumériques qui suivent l’URL.

    4. Créer et vérifier le rôle en utilisant la politique de confiance générée:

      $ aws iam create-role --role-name albo-operator --assume-role-policy-document file://albo-operator-trusted-policy.json
      Copy to Clipboard
      $ OPERATOR_ROLE_ARN=$(aws iam get-role --role-name albo-operator --output json | jq -r '.Role.Arn')
      Copy to Clipboard
      $ echo $OPERATOR_ROLE_ARN
      Copy to Clipboard

      Exemple de sortie

      ROLE arn:aws:iam::<aws_account_number>:role/albo-operator	2023-08-02T12:13:22Z
      ASSUMEROLEPOLICYDOCUMENT	2012-10-17
      STATEMENT	sts:AssumeRoleWithWebIdentity	Allow
      STRINGEQUALS system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-controller-manager
      PRINCIPAL arn:aws:iam:<aws_account_number>:oidc-provider/<oidc_provider_id>
      Copy to Clipboard

      Note

      Là où le rôle AWS IAM a été créé pour l’opérateur AWS Load Balancer, tel que arn:aws:iam::7777777777:role/albo-operator.

    5. Joindre la politique d’autorisation de l’opérateur au rôle:

      $ curl -o albo-operator-permission-policy.json https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/release-1.1/hack/operator-permission-policy.json
      $ aws iam put-role-policy --role-name albo-operator --policy-name perms-policy-albo-operator --policy-document file://albo-operator-permission-policy.json
      Copy to Clipboard
  3. Créez la politique AWS IAM requise pour le contrôleur AWS Load Balancer à l’aide de l’AWS CLI:

    1. Générez un fichier de stratégie de confiance pour votre fournisseur d’identité. L’exemple suivant utilise OpenID Connect:

      $ IDP='{Cluster_OIDC_Endpoint}'
      $ IDP_ARN="arn:aws:iam::{AWS_AccountNo}:oidc-provider/${IDP}"
      $ cat <<EOF > albo-controller-trusted-policy.json
      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Federated": "${IDP_ARN}"
                  },
                  "Action": "sts:AssumeRoleWithWebIdentity",
                  "Condition": {
                      "StringEquals": {
                          "${IDP}:sub": "system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-operator-controller-manager"
                      }
                  }
              }
          ]
      }
      EOF
      Copy to Clipboard
    2. Créer et vérifier le rôle en utilisant la politique de confiance générée:

      $ aws iam create-role --role-name albo-controller --assume-role-policy-document file://albo-controller-trusted-policy.json
      $ CONTROLLER_ROLE_ARN=$(aws iam get-role --role-name albo-controller --output json | jq -r '.Role.Arn')
      $ echo $CONTROLLER_ROLE_ARN
      Copy to Clipboard

      Exemple de sortie

      ROLE	arn:aws:iam::<aws_account_number>:role/albo-controller	2023-08-02T12:13:22Z
      ASSUMEROLEPOLICYDOCUMENT	2012-10-17
      STATEMENT	    sts:AssumeRoleWithWebIdentity	Allow
      STRINGEQUALS	system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-operator-controller-manager
      PRINCIPAL	    arn:aws:iam:<aws_account_number>:oidc-provider/<oidc_provider_id>
      Copy to Clipboard

      Note

      Là où le rôle AWS IAM a été créé pour le contrôleur AWS Load Balancer, tel que arn:aws:iam::7777777777:role/albo-controller.

    3. Joindre la politique d’autorisation du contrôleur au rôle:

      $ curl -o albo-controller-permission-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.4.7/docs/install/iam_policy.json
      $ aws iam put-role-policy --role-name albo-controller --policy-name perms-policy-albo-controller --policy-document file://albo-controller-permission-policy.json
      Copy to Clipboard
  4. Dans le cas d’un ROSA avec cluster HCP, ajoutez les balises nécessaires à la découverte du sous-réseau:

    1. Ajoutez la balise {Key: Value} suivante à la balise VPC hébergeant le cluster ROSA et à tous ses sous-réseaux. * remplacer {Cluster Infra ID} par l’ID Infra spécifié précédemment:

      kubernetes.io/cluster/${Cluster Infra ID}:owned
      Copy to Clipboard
    2. Ajoutez les balises ELBv2 {Key: Value} suivantes aux sous-réseaux privés et, éventuellement, aux sous-réseaux publics:

      • Les sous-réseaux privés: kubernetes.io/role/internal-elb:1
      • Les sous-réseaux publics: kubernetes.io/role/elb:1

        Note

        Des équilibreurs de charge internes et face à Internet seront créés dans la zone de disponibilité AWS à laquelle appartiennent ces sous-réseaux.

        Important

        Les ressources ELBv2 (comme les ALB et les NLB) créées par AWS Load Balancer Operator n’héritent pas de balises personnalisées définies pour les clusters ROSA. Il faut définir des balises séparément pour ces ressources.

  5. Créez l’opérateur AWS Load Balancer en remplissant les étapes suivantes:

    1. Créez un objet OperatorGroup en exécutant la commande suivante:

      $ cat <<EOF | oc apply -f -
      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: aws-load-balancer-operator
        namespace: aws-load-balancer-operator
      spec:
        targetNamespaces: []
      EOF
      Copy to Clipboard
    2. Créez un objet d’abonnement en exécutant la commande suivante:

      $ cat <<EOF | oc apply -f -
      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: aws-load-balancer-operator
        namespace: aws-load-balancer-operator
      spec:
        channel: stable-v1
        name: aws-load-balancer-operator
        source: redhat-operators
        sourceNamespace: openshift-marketplace
        config:
          env:
          - name: ROLEARN
            value: "<operator_role_arn>" 
      1
      
      EOF
      Copy to Clipboard
      1
      Indique le rôle ARN de l’opérateur AWS Load Balancer. L’objet CredentialsRequest utilise ce rôle ARN pour fournir les informations d’identification AWS. L’exemple de &lt;operator_role_arn&gt; est arn:aws:iam::&lt;aws_account_number&gt;:role/albo-operator.
  6. Créez le contrôleur AWS Load Balancer:

    apiVersion: networking.olm.openshift.io/v1
    kind: AWSLoadBalancerController
    metadata:
      name: cluster
    spec:
      subnetTagging: Manual
      credentialsRequestConfig:
        stsIAMRoleARN: <controller_role_arn>
    Copy to Clipboard
    Important

    Étant donné que les contrôleurs AWS Load Balancer ne prennent pas en charge la création des balanceurs de charge AWS (ALB) associés aux zones de disponibilité AWS et aux zones locales AWS, les clusters ROSA peuvent avoir des ALB associés exclusivement aux zones locales AWS ou aux zones de disponibilité AWS, mais pas simultanément.

La vérification

  1. Confirmez une installation réussie en exécutant les commandes suivantes:

    1. Collecter des informations sur les pods dans le cadre du projet:

      $ oc get pods -n aws-load-balancer-operator
      Copy to Clipboard
    2. Consultez les journaux du projet:

      $ oc logs -n aws-load-balancer-operator deployment/aws-load-balancer-operator-controller-manager -c manager
      Copy to Clipboard

2.1.4. Désinstallation d’un opérateur AWS Load Balancer

Afin de désinstaller un opérateur AWS Load Balancer et d’effectuer un nettoyage global des ressources associées, effectuez la procédure suivante.

Procédure

  1. Nettoyez l’application d’échantillon en supprimant les balanceurs de charge créés et gérés par l’ALBO. En savoir plus sur la suppression des balanceurs de charge, voir Supprimer un balanceur de charge d’application.
  2. Nettoyez les balises AWS VPC en supprimant les balises VPC qui ont été ajoutées aux sous-réseaux pour découvrir les sous-réseaux et pour créer des balanceurs de charge d’applications (ALB). Cliquez ici pour plus d’informations sur Tag Basics.
  3. Nettoyez les composants AWS Load Balancer Operator en supprimant à la fois l’opérateur AWS Load Balancer et le contrôleur d’équilibre de charge de l’application. Consultez Supprimer les opérateurs d’un cluster pour plus d’informations.
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