5.2. 添加 API 服务器证书
默认 API 服务器证书由内部 OpenShift Container Platform 集群 CA 发布。默认情况下,位于集群外的客户端无法验证 API 服务器的证书。此证书可以替换为由客户端信任的 CA 发布的证书。
5.2.1. 向 API 服务器添加指定名称的证书
默认 API 服务器证书由内部 OpenShift Container Platform 集群 CA 发布。您可以向 API 服务器添加额外证书以根据客户请求的 URL 发送,比如使用反向代理或负载均衡器时。
先决条件
- 必须具有 PEM 格式的证书和密钥,以用于客户端 URL。
- 必须针对客户端用来访问 API 服务器的 URL 发布证书。
-
证书必须有 URL 的
subjectAltName
扩展。 如果要求证书链认证服务器证书,则必须将证书链附加到服务器证书中。证书文件必须是 Base64 PEM 编码的,通常具有
.crt
或.pem
扩展名。例如:$ cat server_cert.pem int2ca_cert.pem int1ca_cert.pem rootca_cert.pem>combined_cert.pem
在合并证书时,证书的顺序非常重要。每个证书都必须直接认证前面的证书,例如:
- OpenShift Container Platform master 主机服务器证书。
- 认证服务器证书的中间 CA 证书。
- 认证中间 CA 证书的根 CA 证书。
不要为内部负载均衡器(主机名 api-int.<cluster_name>.<base_domain>
)提供指定了名称的证书。这样可让集群处于降级状态。
流程
创建一个包含
openshift-config
命名空间中证书和密钥的 secret。$ oc create secret tls <certificate> \1 --cert=</path/to/cert.crt> \2 --key=</path/to/cert.key> \3 -n openshift-config
更新 API 服务器以引用所创建的 secret。
$ oc patch apiserver cluster \ --type=merge -p \ '{"spec":{"servingCerts": {"namedCertificates": [{"names": ["<hostname>"], 1 "servingCertificate": {"name": "<certificate>"}}]}}}' 2
检查
apiserver/cluster
对象并确认该 secret 现已被引用。$ oc get apiserver cluster -o yaml ... spec: servingCerts: namedCertificates: - names: - <hostname> servingCertificate: name: <certificate> ...