×

从 Red Hat OpenShift Service on AWS 4.14 版本开始,自定义域名操作符已弃用。要管理 Red Hat OpenShift Service on AWS 4.14 中的 Ingress,请使用 Ingress 操作符。Red Hat OpenShift Service on AWS 4.13 和更早版本的功能保持不变。

您可以为您的应用程序配置自定义域名。自定义域名是可与 Red Hat OpenShift Service on AWS 应用程序一起使用的特定通配符域名。

为应用程序配置自定义域名

顶级域名 (TLD) 由运营 Red Hat OpenShift Service on AWS 集群的客户拥有。自定义域名操作符会设置一个新的带有自定义证书的 Ingress 控制器作为第二天操作。然后,外部 DNS 可以使用此 Ingress 控制器的公共 DNS 记录来创建通配符 CNAME 记录,用于自定义域名。

不支持自定义 API 域名,因为 Red Hat 控制 API 域名。但是,客户可以更改其应用程序域名。对于具有私有IngressController 的私有自定义域名,请在CustomDomain CR 中将.spec.scope 设置为Internal

先决条件
  • 具有dedicated-admin 权限的用户帐户

  • 唯一的域名或通配符域名,例如*.apps.<company_name>.io

  • 自定义证书或通配符自定义证书,例如CN=*.apps.<company_name>.io

  • 访问安装了最新版本oc CLI 的集群

请勿在CustomDomain CR 的metadata/name: 部分中使用保留名称defaultapps*(例如appsapps2)。
步骤
  1. 从私钥和公钥证书创建一个新的 TLS 密钥,其中fullchain.pemprivkey.pem 是您的公共或私有通配符证书。

    示例
    $ oc create secret tls <name>-tls --cert=fullchain.pem --key=privkey.pem -n <my_project>
  2. 创建一个新的CustomDomain 自定义资源 (CR)

    示例<company_name>-custom-domain.yaml
    apiVersion: managed.openshift.io/v1alpha1
    kind: CustomDomain
    metadata:
      name: <company_name>
    spec:
      domain: apps.<company_name>.io (1)
      scope: External
      loadBalancerType: Classic (2)
      certificate:
        name: <name>-tls (3)
        namespace: <my_project>
      routeSelector: (4)
        matchLabels:
         route: acme
      namespaceSelector: (5)
        matchLabels:
         type: sharded
    1 自定义域名。
    2 自定义域名的负载均衡器类型。此类型可以是默认的classic 或如果您使用网络负载均衡器,则为NLB
    3 在上一步骤中创建的密钥。
    4 可选:过滤 CustomDomain Ingress 提供服务的路由集。如果未提供值,则默认为不进行过滤。
    5 可选:过滤 CustomDomain Ingress 提供服务的命名空间集。如果未提供值,则默认为不进行过滤。
  3. 应用 CR

    示例
    $ oc apply -f <company_name>-custom-domain.yaml
  4. 获取新创建的 CR 的状态

    $ oc get customdomains
    示例输出
    NAME               ENDPOINT                                                    DOMAIN                       STATUS
    <company_name>     xxrywp.<company_name>.cluster-01.opln.s1.openshiftapps.com  *.apps.<company_name>.io     Ready
  5. 使用端点值,向您的托管 DNS 提供商(例如 Route53)添加新的通配符 CNAME 记录集。

    示例
    *.apps.<company_name>.io -> xxrywp.<company_name>.cluster-01.opln.s1.openshiftapps.com
  6. 创建一个新的应用程序并公开它

    示例
    $ oc new-app --docker-image=docker.io/openshift/hello-openshift -n my-project
    $ oc create route <route_name> --service=hello-openshift hello-openshift-tls --hostname hello-openshift-tls-my-project.apps.<company_name>.io -n my-project
    $ oc get route -n my-project
    $ curl https://hello-openshift-tls-my-project.apps.<company_name>.io
    Hello OpenShift!

续订自定义域名的证书

您可以使用oc CLI 工具通过自定义域名操作符 (CDO) 续订证书。

先决条件
  • 您已安装最新版本的oc CLI 工具。

步骤
  1. 创建新的密钥

    $ oc create secret tls <secret-new> --cert=fullchain.pem --key=privkey.pem -n <my_project>
  2. 修补 CustomDomain CR

    $ oc patch customdomain <company_name> --type='merge' -p '{"spec":{"certificate":{"name":"<secret-new>"}}}'
  3. 删除旧密钥

    $ oc delete secret <secret-old> -n <my_project>