$ oc create secret tls <name>-tls --cert=fullchain.pem --key=privkey.pem -n <my_project>
从 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`。 |
从私钥和公钥证书创建一个新的 TLS 密钥,其中 `fullchain.pem` 和 `privkey.pem` 是您的公共或私有通配符证书。
$ oc create secret tls <name>-tls --cert=fullchain.pem --key=privkey.pem -n <my_project>
创建一个新的 `CustomDomain` 自定义资源 (CR)
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 服务的命名空间集。如果未提供值,则默认为不进行过滤。 |
应用 CR
$ oc apply -f <company_name>-custom-domain.yaml
获取新创建的 CR 的状态
$ oc get customdomains
NAME ENDPOINT DOMAIN STATUS
<company_name> xxrywp.<company_name>.cluster-01.opln.s1.openshiftapps.com *.apps.<company_name>.io Ready
使用端点值,在您的托管 DNS 提供商(例如 Route53、Azure DNS 或 Google DNS)中添加新的通配符 CNAME 记录集。
*.apps.<company_name>.io -> xxrywp.<company_name>.cluster-01.opln.s1.openshiftapps.com
创建新的应用程序并将其公开
$ 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
命令行工具。
创建新的密钥
$ oc create secret tls <secret-new> --cert=fullchain.pem --key=privkey.pem -n <my_project>
修补 CustomDomain CR
$ oc patch customdomain <company_name> --type='merge' -p '{"spec":{"certificate":{"name":"<secret-new>"}}}'
删除旧密钥
$ oc delete secret <secret-old> -n <my_project>