신뢰할 수 있는 CA를 Red Hat OpenShift on IBM Cloud
가상 프라이빗 클라우드 4.19 이후 RHCOS 워커 노드 RHEL 워커 노드
Red Hat® OpenShift® on IBM Cloud® 클러스터에 신뢰할 수 있는 CA(인증 기관)를 추가하는 방법을 알아보세요. 사용자 지정 CA가 서명한 인증서를 사용하는 자체 호스팅 레지스트리에서 이미지를 가져올 때 신뢰할 수 있는 CA를 추가해야 할 수도 있습니다.
클러스터에 신뢰할 수 있는 CA 추가하기
Red Hat OpenShift on IBM Cloud 클러스터에 신뢰할 수 있는 CA를 추가하려면 CA 인증서가 포함된 구성 맵을 만들고 모든 작업자 노드에 인증서를 설치하는 데몬셋을 배포합니다.
시작하기 전에 CA 인증서 파일이 준비되었는지 확인하세요. 인증서는 PEM 형식이어야 합니다.
-
CA 인증서를 사용하여
openshift-config-user-ca-bundleconfigmap을 만듭니다.<path-to-your-ca-cert>을 CA 인증서 파일의 경로로 바꿉니다.kubectl create cm openshift-config-user-ca-bundle -n kube-system --from-file=openshift-config-user-ca-bundle.crt=<path-to-your-ca-cert> -
각 노드에 신뢰할 수 있는 CA를 설치하는 스크립트를 만듭니다.
cat > openshift-config-user-ca-script.sh <<EOF #!/bin/bash set -e # Exit on any error set -x # Enable debug output if ! diff /tmp/openshift-config-user-ca-bundle/openshift-config-user-ca-bundle.crt /host/etc/pki/ca-trust/source/anchors ; then cp /tmp/openshift-config-user-ca-bundle/openshift-config-user-ca-bundle.crt /host/etc/pki/ca-trust/source/anchors chroot /host update-ca-trust extract if chroot /host systemctl is-enabled coreos-update-ca-trust.service; then chroot /host systemctl restart coreos-update-ca-trust.service fi chroot /host systemctl restart crio.service; fi # Keep container running to maintain daemonset pod sleep inf EOF kubectl delete cm -n kube-system openshift-config-user-ca-script --ignore-not-found kubectl create cm -n kube-system --from-file openshift-config-user-ca-script.sh openshift-config-user-ca-script -
모든 노드에서 스크립트를 실행하는 데몬셋을 생성합니다.
OCP_REGISTRY_ENDPOINT=$(kubectl get pod -n kube-system -l k8s-app=kube-apiserver-proxy -o json | jq -r '.items[0].spec.containers[0].image | select( . != null )' | awk -F/ '{ print $1 }') if [[ -z "${OCP_REGISTRY_ENDPOINT}" ]]; then OCP_REGISTRY_ENDPOINT=$(kubectl get pod -n kube-system -l app=ibm-master-proxy-static -o json | jq -r '.items[0].spec.containers[0].image | select( . != null )' | awk -F/ '{ print $1 }') fi OCP_VERSION=$(oc version -o json | jq -r .openshiftVersion) kubectl apply -f - <<EOF --- apiVersion: apps/v1 kind: DaemonSet metadata: name: update-openshift-config-user-ca-bundle namespace: kube-system labels: app: update-openshift-config-user-ca-bundle spec: selector: matchLabels: app: update-openshift-config-user-ca-bundle template: metadata: labels: app: update-openshift-config-user-ca-bundle spec: containers: - command: ["/bin/bash", "-c", "/tmp/openshift-config-user-ca-script/openshift-config-user-ca-script.sh"] image: ${OCP_REGISTRY_ENDPOINT}/armada-master/ocp-release-${OCP_VERSION}-x86_64:cli imagePullPolicy: IfNotPresent name: update-openshift-config-user-ca-bundle resources: requests: cpu: 1m memory: 1Mi securityContext: privileged: true volumeMounts: - name: host-volume mountPath: /host - name: openshift-config-user-ca-bundle mountPath: /tmp/openshift-config-user-ca-bundle - name: openshift-config-user-ca-script mountPath: /tmp/openshift-config-user-ca-script hostIPC: true hostNetwork: true hostPID: true tolerations: - operator: Exists volumes: - name: host-volume hostPath: path: / type: Directory - name: openshift-config-user-ca-bundle configMap: name: openshift-config-user-ca-bundle - name: openshift-config-user-ca-script configMap: name: openshift-config-user-ca-script defaultMode: 0755 EOF kubectl rollout status ds -n kube-system update-openshift-config-user-ca-bundle -
데몬 세트 로그를 확인하여 신뢰할 수 있는 CA가 설치되었는지 확인합니다.
oc logs -n kube-system -l app=update-openshift-config-user-ca-bundle --tail=-1
데몬 세트가 완료되면 신뢰할 수 있는 CA가 모든 작업자 노드에 설치되고 클러스터는 사용자 지정 CA가 서명한 인증서를 사용하는 레지스트리에서 이미지를 가져올 수 있습니다.