Este documento descreve como fazer upgrade da autoridade certificadora raiz (CA) usada para validação de pacotes no appliance isolado do Google Distributed Cloud (GDC).
A validação de pacotes do GDC usa uma autoridade certificadora raiz (CA) para validar certificados de chave de lançamento. Faça upgrade dessa CA raiz se um aviso de lançamento exigir ou se você vir uma mensagem de aviso durante um upgrade do sistema.
Antes de começar
Para fazer upgrade do certificado de validação de pacote, você precisa ter as funções de identidade e acesso necessárias:
- Verifique se você tem acesso de gravação ao ConfigMap
harbor-system/package-validation-root-certs. - Peça ao administrador de segurança para conceder a você o papel de Upgrade Debugger (
upgrade-debugger-cp).
Verificar se o upgrade do certificado é necessário
Verifique se é necessário fazer upgrade de um certificado de validação de pacote antes de realizar a operação. Para isso, compare o ConfigMap ativo no cluster com o certificado raiz de pré-produção mais recente no pacote de upgrade:
Defina a variável de ambiente
KUBECONFIG:$ KUBECONFIG=PATH_TO_KUBECONFIG_FILESubstitua
PATH_TO_KUBECONFIG_FILEpelo caminho para o arquivokubeconfigque você obteve ao executargdcloud auth loginno cluster de administrador raiz.Determine se um upgrade é necessário comparando a âncora de confiança atual com a mais recente. Os dados
ConfigMapemharbor-system/package-validation-root-certssão comparados com a âncora de confiança local:$ 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!
Fazer upgrade do certificado
Se um upgrade for necessário, atualize o objeto ConfigMap localizado em harbor-system/package-validation-root-certs no cluster de administrador raiz. Você precisa ter acesso de gravação ao ConfigMap para concluir essa tarefa.
Defina a variável de ambiente
KUBECONFIG:$ KUBECONFIG=PATH_TO_KUBECONFIG_FILESubstitua
PATH_TO_KUBECONFIG_FILEpelo caminho para o arquivokubeconfigque você obteve ao executargdcloud auth loginno cluster de administrador raiz.Crie e atribua valores às seguintes variáveis:
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-systemSubstitua
USER_NAMEpelo nome de usuário do IO.Crie a pasta de destino que vai conter os arquivos de saída do processo de upgrade do certificado:
mkdir -p "${TARGET_FOLDER}"Receba a âncora de confiança atual e armazene-a em um arquivo temporário local:
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}"Gere o arquivo de âncora de confiança atualizado:
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}") EOFVerifique se a âncora de confiança foi atualizada corretamente:
A âncora de confiança precisa conter o certificado atual e o mais recente.
$ 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-systemAplique a nova configuração com
kubectl:kubectl --kubeconfig=$KUBECONFIG apply -f ${OUTPUT}Verifique se o ca.crt recém-aplicado está presente em
ConfigMap:kubectl --kubeconfig=$KUBECONFIG describe configmap package-validation-root-certs -n harbor-system
Isso cuida da atualização de um novo certificado no package-validation-root-cert.