Chapitre 2. Opérateurs de réseautage
2.1. AWS Load Balancer Opérateur Copier lienLien copié sur presse-papiers!
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 Copier lienLien copié sur presse-papiers!
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
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
$ curl --create-dirs -o <credentials_requests_dir>/operator.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-credentials-request.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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>$ ccoctl aws create-iam-roles \ --name <name> \ --region=<aws_region> \ --credentials-requests-dir=<credentials_requests_dir> \ --identity-provider-arn <oidc_arn>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 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
2023/09/12 11:38:57 Role arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-operator created1 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 createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 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/<name>-aws-load-balancer-operator-aws-load-balancer-operator.
NoteLa 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 Copier lienLien copié sur presse-papiers!
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
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
$ curl --create-dirs -o <credentials_requests_dir>/controller.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/controller/controller-credentials-request.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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>$ ccoctl aws create-iam-roles \ --name <name> \ --region=<aws_region> \ --credentials-requests-dir=<credentials_requests_dir> \ --identity-provider-arn <oidc_arn>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 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
2023/09/12 11:38:57 Role arn:aws:iam::777777777777:role/<name>-aws-load-balancer-operator-aws-load-balancer-controller created1 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 createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 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/<name>-aws-load-balancer-operator-aws-load-balancer-controller.
NoteLa 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 Copier lienLien copié sur presse-papiers!
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.
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
Identifiez l’ID de l’infrastructure de cluster et le DNS OpenID Connect (OIDC) en exécutant les commandes suivantes:
Identifier l’ID du cluster ROSA:
rosa describe cluster --cluster=<cluster_name> | grep -i 'Infra ID'
$ rosa describe cluster --cluster=<cluster_name> | grep -i 'Infra ID'Copy to Clipboard Copied! Toggle word wrap Toggle overflow a) ou
oc get infrastructure cluster -o json | jq -r '.status.infrastructureName'
$ oc get infrastructure cluster -o json | jq -r '.status.infrastructureName'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Identifiez le cluster ROSA OIDC DNS à l’aide de la commande rosa CLI suivante:
rosa describe cluster --cluster=<cluster_name> | grep -i OIDC
$ rosa describe cluster --cluster=<cluster_name> | grep -i OIDC1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Dans un exemple de DNS OIDC est oidc.op1.openshiftapps.com/28q7fsn54m2jjts3kd556aij4mu9omah.
a) ou
oc get authentication.config cluster -o=jsonpath="{.spec.serviceAccountIssuer}"$ oc get authentication.config cluster -o=jsonpath="{.spec.serviceAccountIssuer}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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/<oidc_dns_url>.
- Enregistrez la sortie des commandes. Ces informations seront utilisées dans les prochaines étapes de cette procédure.
Créez la politique AWS IAM requise pour l’opérateur AWS Load Balancer à l’aide de l’AWS CLI.
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
$ oc new-project aws-load-balancer-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow Attribuer la politique de confiance suivante au nouveau rôle AWS IAM:
IDP='{Cluster_OIDC_Endpoint}'$ IDP='{Cluster_OIDC_Endpoint}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow IDP_ARN="arn:aws:iam::{AWS_AccountNo}:oidc-provider/${IDP}"$ IDP_ARN="arn:aws:iam::{AWS_AccountNo}:oidc-provider/${IDP}"1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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.
Assurez-vous que la politique de trsut a été assignée au rôle AWS IAM.
Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ImportantIl 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.
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
$ aws iam create-role --role-name albo-operator --assume-role-policy-document file://albo-operator-trusted-policy.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow OPERATOR_ROLE_ARN=$(aws iam get-role --role-name albo-operator --output json | jq -r '.Role.Arn')
$ OPERATOR_ROLE_ARN=$(aws iam get-role --role-name albo-operator --output json | jq -r '.Role.Arn')Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo $OPERATOR_ROLE_ARN
$ echo $OPERATOR_ROLE_ARNCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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>
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 Copied! Toggle word wrap Toggle overflow NoteLà 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.
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
$ 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.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Créez la politique AWS IAM requise pour le contrôleur AWS Load Balancer à l’aide de l’AWS CLI:
Générez un fichier de stratégie de confiance pour votre fournisseur d’identité. L’exemple suivant utilise OpenID Connect:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
$ 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_ARNCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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>
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 Copied! Toggle word wrap Toggle overflow NoteLà 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.
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
$ 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.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Dans le cas d’un ROSA avec cluster HCP, ajoutez les balises nécessaires à la découverte du sous-réseau:
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}:ownedkubernetes.io/cluster/${Cluster Infra ID}:ownedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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
NoteDes équilibreurs de charge internes et face à Internet seront créés dans la zone de disponibilité AWS à laquelle appartiennent ces sous-réseaux.
ImportantLes 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.
Créez l’opérateur AWS Load Balancer en remplissant les étapes suivantes:
Créez un objet OperatorGroup en exécutant la commande suivante:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un objet d’abonnement en exécutant la commande suivante:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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 <operator_role_arn> est arn:aws:iam::<aws_account_number>:role/albo-operator.
Créez le contrôleur AWS Load Balancer:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
Confirmez une installation réussie en exécutant les commandes suivantes:
Collecter des informations sur les pods dans le cadre du projet:
oc get pods -n aws-load-balancer-operator
$ oc get pods -n aws-load-balancer-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow Consultez les journaux du projet:
oc logs -n aws-load-balancer-operator deployment/aws-load-balancer-operator-controller-manager -c manager
$ oc logs -n aws-load-balancer-operator deployment/aws-load-balancer-operator-controller-manager -c managerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.1.4. Désinstallation d’un opérateur AWS Load Balancer Copier lienLien copié sur presse-papiers!
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
- 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.
- 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.
- 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.