Red Hat Training
A Red Hat training course is available for OpenShift Container Platform
12.3.9. 重新部署自定义 registry 或路由器证书
当因为重新部署了 CA 节点被撤离时,registry 和路由器 pod 会重启。如果 registry 和路由器证书也未被新的 CA 重新部署,这可能会导致中断,因为它们无法使用其旧证书访问 master。
12.3.9.1. 手动重新部署 registry 证书
要手动重新部署 registry 证书,您必须将新的 registry 证书添加到名为 registry-certificates
的 secret 中,然后重新部署 registry:
使用以下步骤的其余部分切换到
default
项目:$ oc project default
如果您的 registry 最初是在 OpenShift Container Platform 3.1 或更早版本上创建,它可能仍在使用环境变量来存储证书(这已被淘汰使用 secret)。
运行以下命令,并查找
OPENSHIFT_CA_DATA
、OPENSHIFT_CERT_DATA
、OPENSHIFT_KEY_DATA
环境变量:$ oc set env dc/docker-registry --list
如果不存在,请跳过这一步。如果这样做,请创建以下
ClusterRoleBinding
:$ cat <<EOF | apiVersion: v1 groupNames: null kind: ClusterRoleBinding metadata: creationTimestamp: null name: registry-registry-role roleRef: kind: ClusterRole name: system:registry subjects: - kind: ServiceAccount name: registry namespace: default userNames: - system:serviceaccount:default:registry EOF oc create -f -
然后,运行以下命令来删除环境变量:
$ oc set env dc/docker-registry OPENSHIFT_CA_DATA- OPENSHIFT_CERT_DATA- OPENSHIFT_KEY_DATA- OPENSHIFT_MASTER-
本地设置以下环境变量使其更复杂:
$ REGISTRY_IP=`oc get service docker-registry -o jsonpath='{.spec.clusterIP}'` $ REGISTRY_HOSTNAME=`oc get route/docker-registry -o jsonpath='{.spec.host}'`
创建新 registry 证书:
$ oc adm ca create-server-cert \ --signer-cert=/etc/origin/master/ca.crt \ --signer-key=/etc/origin/master/ca.key \ --hostnames=$REGISTRY_IP,docker-registry.default.svc,docker-registry.default.svc.cluster.local,$REGISTRY_HOSTNAME \ --cert=/etc/origin/master/registry.crt \ --key=/etc/origin/master/registry.key \ --signer-serial=/etc/origin/master/ca.serial.txt
仅从 Ansible 主机清单文件中列出的第一个 master 运行
oc adm
命令,默认为 /etc/ansible/hosts。使用新的 registry 证书更新
registry-certificates
secret:$ oc create secret generic registry-certificates \ --from-file=/etc/origin/master/registry.crt,/etc/origin/master/registry.key \ -o json --dry-run | oc replace -f -
重新部署 registry:
$ oc rollout latest dc/docker-registry