5.2. 配置自定义证书颁发机构
要使用自定义证书颁发机构(CA)配置外部生成的证书和域名,请将它们添加到 MicroShift /etc/microshift/config.yaml 配置文件中。您还必须配置主机操作系统信任 root。
外部生成的 kubeconfig 文件在 /var/lib/microshift/resources/kubeadmin/<hostname>/kubeconfig 目录中创建。如果您需要在外部生成的配置之外使用 localhost,请在其默认位置保留原始 kubeconfig 文件。localhost kubeconfig 文件使用自签名证书颁发机构。
先决条件
-
已安装 OpenShift CLI (
oc)。 - 您可以使用具有集群管理角色的用户访问集群。
- 证书颁发机构已发布自定义证书。
-
MicroShift
/etc/microshift/config.yaml配置文件存在。
流程
- 复制您要添加到 MicroShift 主机的信任根中的自定义证书。确保证书和私钥只能被 MicroShift 访问。
对于您需要的每个自定义 CA,使用以下示例
将名为Certificates 的apiServer部分添加到/etc/microshift/config.yamlMicroShift 配置文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,重启 {microshift-service} 以应用证书:
systemctl microshift restart
$ systemctl microshift restartCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
等待几分钟,让系统重新启动并应用自定义服务器。新的
kubeconfig文件在/var/lib/microshift/resources/kubeadmin/目录中生成。 -
将
kubeconfig文件复制到客户端。如果您为 IP 地址指定了通配符,请更新kubeconfig以删除服务器的公共 IP 地址,并使用您要使用的特定通配符范围替换该 IP 地址。 在客户端中,执行以下步骤:
运行以下命令指定要使用的
kubeconfig:export KUBECONFIG=~/custom-kubeconfigs/kubeconfig
$ export KUBECONFIG=~/custom-kubeconfigs/kubeconfig1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 使用复制的
kubeconfig文件的位置作为路径。
使用以下命令检查是否应用了证书:
oc --certificate-authority ~/certs/ca.ca get node
$ oc --certificate-authority ~/certs/ca.ca get nodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
oc get node NAME STATUS ROLES AGE VERSION dhcp-1-235-195.arm.example.com Ready control-plane,master,worker 76m v1.30.3
oc get node NAME STATUS ROLES AGE VERSION dhcp-1-235-195.arm.example.com Ready control-plane,master,worker 76m v1.30.3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将新 CA 文件添加到 $KUBECONFIG 环境变量中:
oc config set clusters.microshift.certificate-authority /tmp/certificate-authority-data-new.crt
$ oc config set clusters.microshift.certificate-authority /tmp/certificate-authority-data-new.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证新的
kubeconfig文件是否包含新的 CA:oc config view --flatten
$ oc config view --flattenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 外部生成的
kubeconfig文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 外部生成的
kubeconfig文件中不存在certificate-authority-data部分。它通过之前使用的oc config set命令添加。
运行以下命令,验证自定义 API 服务器证书颁发机构的
主题和签发者:curl --cacert /tmp/caCert.pem https://${fqdn_name}:6443/healthz -v$ curl --cacert /tmp/caCert.pem https://${fqdn_name}:6443/healthz -vCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要将生成的
kubeconfig文件中的certificate-authority-data替换为新的rootCA,或者将certificate-authority-data添加到操作系统的信任根中。不要同时使用这两种方法。在操作系统的信任根中配置额外的 CA。例如,在客户端系统上的 RHEL 客户端信任存储中。详情请查看 系统范围的信任存储。
- 建议使用包含 CA 的配置更新证书捆绑包。
-
如果您不想配置证书捆绑包,也可以使用
oc login localhost:8443 --certificate-authority=/path/to/cert.crt命令,但这不是首选的方法。