14.3. AWS 계정 준비
cert-manager 가 Let's Encrypt (또는 다른 ACME 인증서 발급자)에서 인증서를 요청하는 경우, Let's Encrypt servers validate that you control the domain name in that certificate using challenges. 이 튜토리얼에서는 해당 도메인 이름에 TXT 레코드에 특정 값을 배치하여 도메인 이름의 DNS를 제어한다는 것을 증명하는 DNS -01 챌린지 를 사용하고 있습니다. 이 모든 작업은 cert-manager에 의해 자동으로 수행됩니다. cert-manager 권한이 도메인의 Amazon Route 53 공용 호스팅 영역을 수정할 수 있도록 하려면 특정 정책 권한 및 pod 액세스를 허용하는 신뢰 관계를 사용하여 IAM(Identity Access Management) 역할을 생성해야 합니다.
이 튜토리얼에서 사용되는 공개 호스팅 영역은 ROSA 클러스터와 동일한 AWS 계정에 있습니다. 공개 호스팅 영역이 다른 계정에 있는 경우 Cross Account Access 에 대한 몇 가지 추가 단계가 필요합니다.
Amazon Route 53 공용 호스팅 영역 ID를 검색합니다.
참고이 명령은 이전에
DOMAIN
환경 변수로 지정한 사용자 정의 도메인과 일치하는 공개 호스팅 영역을 찾습니다.내보내기 ZONE_ID=<zone_ID>를 실행하여 Amazon Route 53 공개 호스팅 영역을
수동으로 지정하여 <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}