パッケージ検証証明書をアップグレードする

このドキュメントでは、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 の新しい証明書のアップグレードが処理されます。