14.3. AWS アカウントの準備
cert-manager が Let's Encrypt (または別の ACME 証明書発行者) に証明書を要求すると、Let's Encrypt のサーバーが チャレンジ を使用して、その証明書内のドメイン名がお客様によって制御されていることを検証します。このチュートリアルでは、ドメイン名の TXT レコードに特定の値を入力することで、ドメイン名の DNS を制御していることを証明する DNS-01 チャレンジ を使用します。これはすべて cert-manager によって自動的に行われます。cert-manager 権限によってドメインの Amazon Route 53 パブリックホストゾーンを変更できるように、Pod へのアクセスを許可する信頼関係と特定のポリシー権限を持つ Identity Access Management (IAM) ロールを作成する必要があります。
このチュートリアルで使用するパブリックホストゾーンは、ROSA クラスターと同じ AWS アカウント内にあります。パブリックホストゾーンが別のアカウントにある場合は、クロスアカウントアクセス のためにいくつかの追加手順が必要です。
Amazon Route 53 のパブリックホストゾーン ID を取得します。
注記このコマンドは、
DOMAIN
環境変数として以前指定したカスタムドメインに一致するパブリックホストゾーンを検索します。Amazon Route 53 パブリックホストゾーンを手動で指定するには、export ZONE_ID=<zone_ID>
を実行し、<zone_ID>
を特定の Amazon Route 53 パブリックホストゾーン ID に置き換えます。$ export ZONE_ID=$(aws route53 list-hosted-zones-by-name --output json \ --dns-name "${DOMAIN}." --query 'HostedZones[0]'.Id --out text | sed 's/\/hostedzone\///')
指定されたパブリックホストゾーン のみ を更新する機能を提供する cert-manager Operator の AWS IAM ポリシードキュメントを作成します。
$ cat <<EOF > "${SCRATCH}/cert-manager-policy.json" { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:GetChange", "Resource": "arn:aws:route53:::change/*" }, { "Effect": "Allow", "Action": [ "route53:ChangeResourceRecordSets", "route53:ListResourceRecordSets" ], "Resource": "arn:aws:route53:::hostedzone/${ZONE_ID}" }, { "Effect": "Allow", "Action": "route53:ListHostedZonesByName", "Resource": "*" } ] } EOF
前のステップで作成したファイルを使用して IAM ポリシーを作成します。
$ POLICY_ARN=$(aws iam create-policy --policy-name "${CLUSTER}-cert-manager-policy" \ --policy-document file://${SCRATCH}/cert-manager-policy.json \ --query 'Policy.Arn' --output text)
cert-manager Operator の AWS IAM 信頼ポリシーを作成します。
$ cat <<EOF > "${SCRATCH}/trust-policy.json" { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "StringEquals" : { "${OIDC_ENDPOINT}:sub": "system:serviceaccount:cert-manager:cert-manager" } }, "Principal": { "Federated": "arn:aws:iam::$AWS_ACCOUNT_ID:oidc-provider/${OIDC_ENDPOINT}" }, "Action": "sts:AssumeRoleWithWebIdentity" } ] } EOF
前のステップで作成した信頼ポリシーを使用して、cert-manager Operator の IAM ロールを作成します。
$ ROLE_ARN=$(aws iam create-role --role-name "${CLUSTER}-cert-manager-operator" \ --assume-role-policy-document "file://${SCRATCH}/trust-policy.json" \ --query Role.Arn --output text)
権限ポリシーをロールに割り当てます。
$ aws iam attach-role-policy --role-name "${CLUSTER}-cert-manager-operator" \ --policy-arn ${POLICY_ARN}