×

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

您可以为您的应用程序配置自定义域名。自定义域名是可用于 OpenShift Dedicated 应用程序的特定通配符域名。

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

顶级域名 (TLD) 属于操作 OpenShift Dedicated 集群的客户。自定义域名操作符会在第二天操作中设置一个带有自定义证书的新 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:` 部分使用保留名称 `default` 或 `apps*`,例如 `apps` 或 `apps2`。
步骤
  1. 从私钥和公钥证书创建一个新的 TLS 密钥,其中 `fullchain.pem` 和 `privkey.pem` 是您的公共或私有通配符证书。

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

    示例 `-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、Azure DNS 或 Google DNS)中添加新的通配符 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 命令行工具通过自定义域操作器 (CDO) 续订证书。

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

步骤
  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>