패키지 유효성 검사 인증서 업그레이드

이 문서에서는 Google Distributed Cloud (GDC) 오프라인 어플라이언스에서 패키지 검증에 사용되는 루트 인증 기관 (CA)을 업그레이드하는 방법을 설명합니다.

GDC 패키지 유효성 검사는 루트 인증 기관 (CA)을 사용하여 출시 키 인증서를 검사합니다. 출시 공지에서 요구하거나 시스템 업그레이드 중에 경고 메시지가 표시되면 이 루트 CA를 업그레이드해야 합니다.

시작하기 전에

패키지 유효성 검사 인증서를 업그레이드하려면 필요한 ID 및 액세스 역할이 있어야 합니다.

  • harbor-system/package-validation-root-certs ConfigMap에 대한 쓰기 액세스 권한이 있는지 확인합니다.
  • 보안 관리자에게 업그레이드 디버거 (upgrade-debugger-cp) 역할을 부여해 달라고 요청하세요.

인증서 업그레이드가 필요한지 확인

클러스터의 활성 ConfigMap을 업그레이드 번들의 최신 스테이징 루트 인증서와 비교하여 작업을 실행하기 전에 패키지 검증 인증서 업그레이드가 필요한지 확인합니다.

  1. KUBECONFIG 환경 변수를 설정합니다.

    $ KUBECONFIG=PATH_TO_KUBECONFIG_FILE
    

    PATH_TO_KUBECONFIG_FILE를 루트 관리자 클러스터에서 gdcloud auth login를 실행하여 kubeconfig 파일을 가져온 경로로 바꿉니다.

  2. 현재 신뢰 앵커를 최신 신뢰 앵커와 비교하여 업그레이드가 필요한지 확인합니다. harbor-system/package-validation-root-certsConfigMap 데이터가 로컬 신뢰 앵커와 비교됩니다.

    $ 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에 대한 쓰기 액세스 권한이 있어야 합니다.

  1. KUBECONFIG 환경 변수를 설정합니다.

    $ KUBECONFIG=PATH_TO_KUBECONFIG_FILE
    

    PATH_TO_KUBECONFIG_FILE를 루트 관리자 클러스터에서 gdcloud auth login를 실행하여 kubeconfig 파일을 가져온 경로로 바꿉니다.

  2. 다음 변수를 만들고 값을 할당합니다.

    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-system
    

    USER_NAME을 IO 사용자 이름으로 바꿉니다.

  3. 인증서 업그레이드 프로세스의 출력 파일이 포함될 타겟 폴더를 만듭니다.

    mkdir -p "${TARGET_FOLDER}"
    
  4. 현재 신뢰 앵커를 가져와 로컬 임시 파일에 저장합니다.

    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}"
    
  5. 업데이트된 신뢰 앵커 파일을 생성합니다.

    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
    
  6. 신뢰 앵커가 올바르게 업데이트되었는지 확인합니다.

    신뢰 앵커에는 현재 신뢰 앵커 인증서와 최신 신뢰 앵커 인증서가 모두 포함되어야 합니다.

    $ 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-system
    
  7. kubectl를 사용하여 새 구성을 적용합니다.

      kubectl --kubeconfig=$KUBECONFIG apply -f ${OUTPUT}
    
  8. 새로 적용된 ca.crt가 ConfigMap 내에 있는지 확인합니다.

      kubectl --kubeconfig=$KUBECONFIG describe configmap package-validation-root-certs -n harbor-system
    

이렇게 하면 package-validation-root-cert에서 새 인증서가 업그레이드됩니다.