이 문서에서는 Google Distributed Cloud (GDC) 오프라인 어플라이언스에서 패키지 검증에 사용되는 루트 인증 기관 (CA)을 업그레이드하는 방법을 설명합니다.
GDC 패키지 유효성 검사는 루트 인증 기관 (CA)을 사용하여 출시 키 인증서를 검사합니다. 출시 공지에서 요구하거나 시스템 업그레이드 중에 경고 메시지가 표시되면 이 루트 CA를 업그레이드해야 합니다.
시작하기 전에
패키지 유효성 검사 인증서를 업그레이드하려면 필요한 ID 및 액세스 역할이 있어야 합니다.
harbor-system/package-validation-root-certsConfigMap에 대한 쓰기 액세스 권한이 있는지 확인합니다.- 보안 관리자에게 업그레이드 디버거 (
upgrade-debugger-cp) 역할을 부여해 달라고 요청하세요.
인증서 업그레이드가 필요한지 확인
클러스터의 활성 ConfigMap을 업그레이드 번들의 최신 스테이징 루트 인증서와 비교하여 작업을 실행하기 전에 패키지 검증 인증서 업그레이드가 필요한지 확인합니다.
KUBECONFIG환경 변수를 설정합니다.$ KUBECONFIG=PATH_TO_KUBECONFIG_FILEPATH_TO_KUBECONFIG_FILE를 루트 관리자 클러스터에서gdcloud auth login를 실행하여kubeconfig파일을 가져온 경로로 바꿉니다.현재 신뢰 앵커를 최신 신뢰 앵커와 비교하여 업그레이드가 필요한지 확인합니다.
harbor-system/package-validation-root-certs의ConfigMap데이터가 로컬 신뢰 앵커와 비교됩니다.$ CURRENT_TRUST_ANCHOR=$(kubectl --kubeconfig=$KUBECONFIG get cm package-validation-root-certs -n harbor-system -o jsonpath='{.data.ca\.crt}') $ LATEST_TRUST_ANCHOR=$(cat /root/release/staging_root_ca_certificate.crt) $ diff <( echo "$CURRENT_TRUST_ANCHOR" ) <( echo "$LATEST_TRUST_ANCHOR" ) && echo trust anchors are same || echo trust anchors are different, upgrade required!
인증서 업그레이드
업그레이드가 필요한 경우 루트 관리자 클러스터의 harbor-system/package-validation-root-certs에 있는 ConfigMap 객체를 업데이트합니다. 이 작업을 완료하려면 ConfigMap에 대한 쓰기 액세스 권한이 있어야 합니다.
KUBECONFIG환경 변수를 설정합니다.$ KUBECONFIG=PATH_TO_KUBECONFIG_FILEPATH_TO_KUBECONFIG_FILE를 루트 관리자 클러스터에서gdcloud auth login를 실행하여kubeconfig파일을 가져온 경로로 바꿉니다.다음 변수를 만들고 값을 할당합니다.
USERNAME=USER_NAME #IO TARGET_FOLDER=/tmp/${USERNAME} OUTPUT="${TARGET_FOLDER}/package-validation-root-certs.yaml" LATEST_TRUST_ANCHOR_CA_FILE=/root/release/staging_root_ca_certificate.crt CONFIGMAP_NAME=package-validation-root-certs NAMESPACE=harbor-systemUSER_NAME을 IO 사용자 이름으로 바꿉니다.인증서 업그레이드 프로세스의 출력 파일이 포함될 타겟 폴더를 만듭니다.
mkdir -p "${TARGET_FOLDER}"현재 신뢰 앵커를 가져와 로컬 임시 파일에 저장합니다.
CURRENT_TRUST_ANCHOR=$(kubectl --kubeconfig=$KUBECONFIG get configmap "${CONFIGMAP_NAME}" -n "${NAMESPACE}" -o jsonpath="{.data.ca\.crt}" ) CURRENT_TRUST_ANCHOR_CA_FILE=$(mktemp) echo "$CURRENT_TRUST_ANCHOR" > "${CURRENT_TRUST_ANCHOR_CA_FILE}"업데이트된 신뢰 앵커 파일을 생성합니다.
cat <<EOF > "${OUTPUT}" apiVersion: v1 kind: ConfigMap metadata: name: ${CONFIGMAP_NAME} namespace: ${NAMESPACE} data: ca.crt: | $(sed 's/^/ /' "${LATEST_TRUST_ANCHOR_CA_FILE}") $(sed 's/^/ /' "${CURRENT_TRUST_ANCHOR_CA_FILE}") EOF신뢰 앵커가 올바르게 업데이트되었는지 확인합니다.
신뢰 앵커에는 현재 신뢰 앵커 인증서와 최신 신뢰 앵커 인증서가 모두 포함되어야 합니다.
$ cat "${OUTPUT}" apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- (certificate content) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (certificate content) -----END CERTIFICATE----- (other certificate) kind: ConfigMap metadata: name: package-validation-root-certs namespace: harbor-systemkubectl를 사용하여 새 구성을 적용합니다.kubectl --kubeconfig=$KUBECONFIG apply -f ${OUTPUT}새로 적용된 ca.crt가
ConfigMap내에 있는지 확인합니다.kubectl --kubeconfig=$KUBECONFIG describe configmap package-validation-root-certs -n harbor-system
이렇게 하면 package-validation-root-cert에서 새 인증서가 업그레이드됩니다.