13.4. La préparation de votre compte AWS
Découvrez l’ID de zone hébergée par Amazon Route 53:
$ export ZONE_ID=$(aws route53 list-hosted-zones-by-name --output json \ --dns-name "${DOMAIN}." --query 'HostedZones[0]'.Id --out text | sed 's/\/hostedzone\///')Élaborer un document avec les modifications DNS nécessaires pour activer la résolution DNS pour le domaine canonique du contrôleur Ingress:
$ NLB_HOST=$(oc -n openshift-ingress get service/router-external-dns-ingress -ojsonpath="{.status.loadBalancer.ingress[0].hostname}") $ cat << EOF > "${SCRATCH}/create-cname.json" { "Comment":"Add CNAME to ingress controller canonical domain", "Changes":[{ "Action":"CREATE", "ResourceRecordSet":{ "Name": "router-external-dns-ingress.${DOMAIN}", "Type":"CNAME", "TTL":30, "ResourceRecords":[{ "Value": "${NLB_HOST}" }] } }] } EOFL’opérateur DNS externe utilise ce domaine canonique comme cible pour les enregistrements CNAME.
Envoyez vos modifications à Amazon Route 53 pour propagation:
aws route53 change-resource-record-sets \ --hosted-zone-id ${ZONE_ID} \ --change-batch file://${SCRATCH}/create-cname.jsonCréez un document AWS IAM Policy qui permet à l’opérateur DNS externe de mettre à jour uniquement la zone hébergée par le domaine personnalisé:
$ cat << EOF > "${SCRATCH}/external-dns-policy.json" { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "route53:ChangeResourceRecordSets" ], "Resource": [ "arn:aws:route53:::hostedzone/${ZONE_ID}" ] }, { "Effect": "Allow", "Action": [ "route53:ListHostedZones", "route53:ListResourceRecordSets" ], "Resource": [ "*" ] } ] } EOFCréer un utilisateur AWS IAM:
$ aws iam create-user --user-name "${CLUSTER}-external-dns-operator"Joindre la politique:
$ aws iam attach-user-policy --user-name "${CLUSTER}-external-dns-operator" --policy-arn $POLICY_ARNNoteCela sera changé en STS en utilisant l’IRSA à l’avenir.
Créer des clés AWS pour l’utilisateur IAM:
$ SECRET_ACCESS_KEY=$(aws iam create-access-key --user-name "${CLUSTER}-external-dns-operator")Créer des informations d’identification statiques:
$ cat << EOF > "${SCRATCH}/credentials" [default] aws_access_key_id = $(echo $SECRET_ACCESS_KEY | jq -r '.AccessKey.AccessKeyId') aws_secret_access_key = $(echo $SECRET_ACCESS_KEY | jq -r '.AccessKey.SecretAccessKey') EOF