×

自定义 DHCP 选项集自定义 DHCP 选项集允许您使用自己的 DNS 服务器、域名等自定义您的 VPC。AWS 上的 Red Hat OpenShift 服务 (ROSA) 集群支持使用自定义 DHCP 选项集。默认情况下,ROSA 集群需要将“域名服务器”选项设置为AmazonProvidedDNS,以确保集群成功创建和运行。想要使用自定义 DNS 服务器进行 DNS 解析的客户必须进行额外配置,以确保 ROSA 集群成功创建和运行。

在本教程中,我们将配置我们的 DNS 服务器,以便将特定 DNS 区域(如下所述)的 DNS 查询转发到Amazon Route 53 入站解析器

本教程使用开源 BIND DNS 服务器 (named) 来演示将 DNS 查询转发到您计划在其 VPC 中部署 ROSA 集群的 Amazon Route 53 入站解析器所需的配置。有关如何配置区域转发的详细信息,请参阅您首选 DNS 服务器的文档。

先决条件

  • ROSA CLI (rosa)

  • AWS CLI (aws)

  • 一个手动创建的 AWS VPC

  • 配置为指向自定义 DNS 服务器并设置为 VPC 默认值的 DHCP 选项集

设置您的环境

  1. 配置以下环境变量

    $ export VPC_ID=<vpc_ID> (1)
    $ export REGION=<region> (2)
    $ export VPC_CIDR=<vpc_CIDR> (3)
    1 <vpc_ID>替换为您要安装集群的 VPC 的 ID。
    2 <region>替换为您要安装集群的 AWS 区域。
    3 <vpc_CIDR>替换为 VPC 的 CIDR 范围。
  2. 确保所有字段正确输出,然后才能进入下一节。

    $ echo "VPC ID: ${VPC_ID}, VPC CIDR Range: ${VPC_CIDR}, Region: ${REGION}"

创建 Amazon Route 53 入站解析器

使用以下步骤在我们将要部署集群的 VPC 中部署Amazon Route 53 入站解析器

在此示例中,我们将 Amazon Route 53 入站解析器部署到集群将使用的同一 VPC 中。如果您想将其部署到单独的 VPC,则必须在**集群创建启动后**手动关联下面详细说明的专用托管区域。您不能在集群创建过程开始之前关联区域。在集群创建过程中未能关联专用托管区域将导致集群创建失败。

  1. 创建一个安全组,并允许 VPC 访问端口53/tcp53/udp

    $ SG_ID=$(aws ec2 create-security-group --group-name rosa-inbound-resolver --description "Security group for ROSA inbound resolver" --vpc-id ${VPC_ID} --region ${REGION} --output text)
    $ aws ec2 authorize-security-group-ingress --group-id ${SG_ID} --protocol tcp --port 53 --cidr ${VPC_CIDR} --region ${REGION}
    $ aws ec2 authorize-security-group-ingress --group-id ${SG_ID} --protocol udp --port 53 --cidr ${VPC_CIDR} --region ${REGION}
  2. 在您的 VPC 中创建一个 Amazon Route 53 入站解析器。

    $ RESOLVER_ID=$(aws route53resolver create-resolver-endpoint \
      --name rosa-inbound-resolver \
      --creator-request-id rosa-$(date '+%Y-%m-%d') \
      --security-group-ids ${SG_ID} \
      --direction INBOUND \
      --ip-addresses $(aws ec2 describe-subnets --filter Name=vpc-id,Values=${VPC_ID} --region ${REGION} | jq -jr '.Subnets | map("SubnetId=\(.SubnetId) ") | .[]') \
      --region ${REGION} \
      --output text \
      --query 'ResolverEndpoint.Id')

    上述命令使用动态分配的 IP 地址将 Amazon Route 53 入站解析器端点附加到提供的 VPC 中的所有子网。如果您希望手动指定子网和/或 IP 地址,请运行以下命令:

    $ RESOLVER_ID=$(aws route53resolver create-resolver-endpoint \
      --name rosa-inbound-resolver \
      --creator-request-id rosa-$(date '+%Y-%m-%d') \
      --security-group-ids ${SG_ID} \
      --direction INBOUND \
      --ip-addresses SubnetId=<subnet_ID>,Ip=<endpoint_IP> SubnetId=<subnet_ID>,Ip=<endpoint_IP> \(1)
      --region ${REGION} \
      --output text \
      --query 'ResolverEndpoint.Id')
    1 <subnet_ID>替换为子网 ID,将<endpoint_IP>替换为您想要添加入站解析器端点的静态 IP 地址。
  3. 获取入站解析器端点的 IP 地址,以便在您的 DNS 服务器配置中进行配置。

    $ aws route53resolver list-resolver-endpoint-ip-addresses \
      --resolver-endpoint-id ${RESOLVER_ID} \
      --region=${REGION} \
      --query 'IpAddresses[*].Ip'
    示例输出
    [
        "10.0.45.253",
        "10.0.23.131",
        "10.0.148.159"
    ]

配置您的 DNS 服务器

使用以下步骤配置您的 DNS 服务器,以便将必要的专用托管区域转发到您的 Amazon Route 53 入站解析器。

带有 HCP 的 ROSA

带有 HCP 集群的 ROSA 需要您为两个专用托管区域配置 DNS 转发

  • <cluster-name>.hypershift.local

  • rosa.<domain-prefix>.<unique-ID>.p3.openshiftapps.com

这些 Amazon Route 53 专用托管区域是在集群创建期间创建的。cluster-namedomain-prefix是客户指定的,但unique-ID是在集群创建期间随机生成的,无法预先选择。因此,您必须等到集群创建过程开始后才能配置p3.openshiftapps.com专用托管区域的转发。

  1. 在创建集群之前,请配置您的 DNS 服务器,以便将所有对<cluster-name>.hypershift.local的 DNS 请求转发到您的 Amazon Route 53 入站解析器端点。对于 BIND DNS 服务器,请在您喜欢的文本编辑器中编辑您的/etc/named.conf文件,并使用以下示例添加一个新区域

    示例
    zone "<cluster-name>.hypershift.local" { (1)
      type forward;
      forward only;
      forwarders { (2)
        10.0.45.253;
        10.0.23.131;
        10.0.148.159;
      };
    };
    1 <cluster-name>替换为您的 ROSA HCP 集群名称。
    2 替换为您上面收集的入站解析器端点的 IP 地址,确保每个 IP 地址后都有一个;
  2. 创建您的集群.

  3. 集群开始创建过程后,找到新创建的专用托管区域

    $ aws route53 list-hosted-zones-by-vpc \
      --vpc-id ${VPC_ID} \
      --vpc-region ${REGION} \
      --query 'HostedZoneSummaries[*].Name' \
      --output table
    示例输出
    --------------------------------------------------
    |             ListHostedZonesByVPC               |
    +------------------------------------------------+
    |  rosa.domain-prefix.lkmb.p3.openshiftapps.com. |
    |  cluster-name.hypershift.local.                |
    +------------------------------------------------+

    集群创建过程可能需要几分钟才能在 Route 53 中创建专用托管区域。如果您没有看到p3.openshiftapps.com域,请等待几分钟,然后再次运行该命令。

  4. 一旦您知道集群域的唯一 ID,请配置您的 DNS 服务器,以便将所有对rosa.<domain-prefix>.<unique-ID>.p3.openshiftapps.com的 DNS 请求转发到您的 Amazon Route 53 入站解析器端点。对于 BIND DNS 服务器,请在您喜欢的文本编辑器中编辑您的/etc/named.conf文件,并使用以下示例添加一个新区域

    示例
    zone "rosa.<domain-prefix>.<unique-ID>.p3.openshiftapps.com" { (1)
      type forward;
      forward only;
      forwarders { (2)
        10.0.45.253;
        10.0.23.131;
        10.0.148.159;
      };
    };
    1 <domain-prefix>替换为您的集群域前缀,将<unique-ID>替换为您上面收集的唯一 ID。
    2 替换为您上面收集的入站解析器端点的 IP 地址,确保每个 IP 地址后都有一个;

ROSA Classic

ROSA Classic 集群需要您为一个专用托管区域配置 DNS 转发

  • <domain-prefix>.<unique-ID>.p1.openshiftapps.com

此 Amazon Route 53 专用托管区域是在集群创建期间创建的。domain-prefix是客户指定的,但unique-ID是在集群创建期间随机生成的,无法预先选择。因此,您必须等到集群创建过程开始后才能配置p1.openshiftapps.com专用托管区域的转发。

  1. 创建您的集群.

  2. 集群开始创建过程后,找到新创建的专用托管区域

    $ aws route53 list-hosted-zones-by-vpc \
      --vpc-id ${VPC_ID} \
      --vpc-region ${REGION} \
      --query 'HostedZoneSummaries[*].Name' \
      --output table
    示例输出
    ----------------------------------------------
    |           ListHostedZonesByVPC             |
    +--------------------------------------------+
    |  domain-prefix.agls.p3.openshiftapps.com.  |
    +--------------------------------------------+

    集群创建过程可能需要几分钟才能在 Route 53 中创建专用托管区域。如果您没有看到p1.openshiftapps.com域,请等待几分钟,然后再次运行该命令。

  3. 一旦您知道集群域的唯一 ID,请配置您的 DNS 服务器,以便将所有对<domain-prefix>.<unique-ID>.p1.openshiftapps.com的 DNS 请求转发到您的 Amazon Route 53 入站解析器端点。对于 BIND DNS 服务器,请在您喜欢的文本编辑器中编辑您的/etc/named.conf文件,并使用以下示例添加一个新区域

    示例
    zone "<domain-prefix>.<unique-ID>.p1.openshiftapps.com" { (1)
      type forward;
      forward only;
      forwarders { (2)
        10.0.45.253;
        10.0.23.131;
        10.0.148.159;
      };
    };
    1 <domain-prefix>替换为您的集群域前缀,将<unique-ID>替换为您上面收集的唯一 ID。
    2 替换为您上面收集的入站解析器端点的 IP 地址,确保每个 IP 地址后都有一个;