7.2. Déployer l’opérateur AWS Load Balancer
L’opérateur AWS Load Balancer est utilisé pour installer, gérer et configurer une instance de contrôleur aws-charge-balancer dans un cluster ROSA. « pour déployer des ALB dans ROSA, nous devons d’abord déployer l’opérateur AWS Load Balancer.
Créez un nouveau projet pour déployer l’opérateur AWS Load Balancer en exécutant la commande suivante:
$ oc new-project aws-load-balancer-operatorCréez une stratégie AWS IAM pour le contrôleur AWS Load Balancer si l’on n’existe pas déjà en exécutant la commande suivante:
NoteLa politique provient de la politique AWS Load Balancer Controller en amont. Ceci est requis par l’opérateur pour fonctionner.
$ POLICY_ARN=$(aws iam list-policies --query \ "Policies[?PolicyName=='aws-load-balancer-operator-policy'].{ARN:Arn}" \ --output text)$ if [[ -z "${POLICY_ARN}" ]]; then wget -O "${SCRATCH}/load-balancer-operator-policy.json" \ https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy.json POLICY_ARN=$(aws --region "$REGION" --query Policy.Arn \ --output text iam create-policy \ --policy-name aws-load-balancer-operator-policy \ --policy-document "file://${SCRATCH}/load-balancer-operator-policy.json") fiCréez une politique de confiance AWS IAM pour AWS Load Balancer Operator:
$ cat <<EOF > "${SCRATCH}/trust-policy.json" { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "StringEquals" : { "${OIDC_ENDPOINT}:sub": ["system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-operator-controller-manager", "system:serviceaccount:aws-load-balancer-operator:aws-load-balancer-controller-cluster"] } }, "Principal": { "Federated": "arn:aws:iam::$AWS_ACCOUNT_ID:oidc-provider/${OIDC_ENDPOINT}" }, "Action": "sts:AssumeRoleWithWebIdentity" } ] } EOFCréer un rôle AWS IAM pour l’opérateur AWS Load Balancer:
$ ROLE_ARN=$(aws iam create-role --role-name "${CLUSTER}-alb-operator" \ --assume-role-policy-document "file://${SCRATCH}/trust-policy.json" \ --query Role.Arn --output text)Joignez la politique AWS Load Balancer Operator au rôle IAM que nous avons créé précédemment en exécutant la commande suivante:
$ aws iam attach-role-policy --role-name "${CLUSTER}-alb-operator" \ --policy-arn ${POLICY_ARN}Créez un secret pour que l’opérateur AWS Load Balancer assume notre nouveau rôle AWS IAM:
$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: aws-load-balancer-operator namespace: aws-load-balancer-operator stringData: credentials: | [default] role_arn = ${ROLE_ARN} web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token EOFInstallez l’opérateur AWS Load Balancer:
$ cat << EOF | oc apply -f - apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: aws-load-balancer-operator namespace: aws-load-balancer-operator spec: upgradeStrategy: Default --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: aws-load-balancer-operator namespace: aws-load-balancer-operator spec: channel: stable-v1.0 installPlanApproval: Automatic name: aws-load-balancer-operator source: redhat-operators sourceNamespace: openshift-marketplace startingCSV: aws-load-balancer-operator.v1.0.0 EOFDéployez une instance du contrôleur AWS Load Balancer à l’aide de l’opérateur:
NoteLorsque vous obtenez une erreur ici, attendez une minute et essayez à nouveau, cela signifie que l’opérateur n’a pas encore terminé l’installation.
$ cat << EOF | oc apply -f - apiVersion: networking.olm.openshift.io/v1 kind: AWSLoadBalancerController metadata: name: cluster spec: credentials: name: aws-load-balancer-operator enabledAddons: - AWSWAFv2 EOFAssurez-vous que les pods de l’opérateur et du contrôleur sont en cours d’exécution:
$ oc -n aws-load-balancer-operator get podsIl faut voir ce qui suit, sinon attendre un moment et réessayer:
NAME READY STATUS RESTARTS AGE aws-load-balancer-controller-cluster-6ddf658785-pdp5d 1/1 Running 0 99s aws-load-balancer-operator-controller-manager-577d9ffcb9-w6zqn 2/2 Running 0 2m4s