搜索

14.3. 准备 AWS 帐户

download PDF

当 cert-manager 从 Let's Encrypt (或其他 ACME 证书签发者)请求证书时,Let 的 Encrypt 服务器会验证您是否使用 质询 控制该证书中的域名。在本教程中,您使用 DNS-01 质询,它证明您通过在域名下将特定值放在 TXT 记录中来控制您的域名的 DNS。这一切都由 cert-manager 自动完成。要允许 cert-manager 权限为您的域修改 Amazon Route 53 公共托管区,您需要创建一个具有特定策略权限的 Identity Access Management (IAM)角色,以及允许访问 pod 的信任关系。

本教程中使用的公共托管区与 ROSA 集群位于同一个 AWS 帐户。如果您的公共托管区位于不同的帐户中,则需要执行一些额外的步骤来 帐户访问。

  1. 检索 Amazon Route 53 公共托管区 ID:

    注意

    此命令查找与之前作为 DOMAIN 环境变量指定的自定义域匹配的公共托管区。您可以通过运行 export ZONE_ID=<zone_ID > 来手动指定 Amazon Route 53 公共托管区,将 &lt ;zone_ID& gt; 替换为您的特定的 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\///')
  2. 为 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
  3. 使用您在上一步中创建的文件创建 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)
  4. 为 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
  5. 使用您在上一步中创建的信任策略,为 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)
  6. 将权限策略附加到角色:

    $ aws iam attach-role-policy --role-name "${CLUSTER}-cert-manager-operator" \
      --policy-arn ${POLICY_ARN}
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.