12.3.9. 사용자 정의 레지스트리 또는 라우터 인증서 재배포
재배포된 CA로 인해 노드를 비우면 레지스트리 및 라우터 포드가 다시 시작됩니다. 레지스트리 및 라우터 인증서도 새 CA로 재배포되지 않은 경우 이전 인증서를 사용하여 마스터에 연결할 수 없기 때문에 중단될 수 있습니다.
12.3.9.1. 수동으로 레지스트리 인증서 재배포
레지스트리 인증서를 수동으로 재배포하려면 registry -certificates라는 보안에 새 레지스트리
인증서를 추가한 다음 레지스트리를 다시 배포해야 합니다.
다음 단계의 나머지 부분에서
기본
프로젝트로 전환합니다.$ oc project default
OpenShift Container Platform 3.1 이하에서 레지스트리가 처음 생성된 경우에도 여전히 환경 변수를 사용하여 인증서를 저장하는 것일 수 있습니다(보안 사용을 위해 더 이상 사용되지 않음).
다음을 실행하고
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}'`
새 레지스트리 인증서를 생성합니다.
$ 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
기본적으로 /etc/ansible/hosts 에서 Ansible 호스트 인벤토리 파일에 나열된 첫 번째 마스터에서만
oc adm
명령을 실행합니다.새
레지스트리 인증서로 registry-certificates
보안을 업데이트합니다.$ 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 -
레지스트리를 재배포합니다.
$ oc rollout latest dc/docker-registry