4.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.yaml
MicroShift 配置文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令重启 MicroShift 以应用证书:
systemctl microshift restart
$ systemctl microshift restart
Copy 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/kubeconfig
1 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 node
Copy 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.3
Copy 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.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证新的
kubeconfig
文件是否包含新的 CA:oc config view --flatten
$ oc config view --flatten
Copy 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 -v
Copy 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
命令,但这不是首选的方法。