Modificar artefatos do sistema

Os artefatos do sistema oferecem suporte ao sistema de dispositivo com isolamento físico do Google Distributed Cloud (GDC) e gerenciam a implantação do GDC. O Artifact Registry particular do GDC armazena os artefatos do sistema. Há vários formatos para artefatos do sistema, incluindo, entre outros:

  • Imagens de contêiner para Anthos, KubeVirt e serviços gerenciados do GDC
  • Imagens do sistema operacional (SO)
  • Formatos de firmware
  • Modelos de máquina virtual (VM) de ouro
  • Gráficos do Helm

O Artifact Registry participa de várias operações do sistema GDC, como instalação, upgrades e ciclo de vida de recursos, de maneira segura, escalonável e à prova de violação.

Antes de começar

Para modificar artefatos do sistema, é necessário ter acesso de diagnóstico. O acesso de diagnóstico é um modo de acesso privilegiado necessário para oferecer suporte seguro a um cliente quando ele encontra um problema. Você precisa criar um tíquete para receber esse acesso.

Fazer upload de imagens do Docker

Para modificar artefatos do sistema, faça upload de novas imagens do Docker. O método de upload depende de qual dos dois registros a seguir você envia as imagens de contêiner:

As seções a seguir mostram as instruções de upload para os dois tipos de registro.

Artifact Registry na máquina de inicialização

Para fazer upload de imagens de contêiner para o Artifact Registry na máquina de bootstrap, siga estas etapas:

  1. Verifique se você tem a imagem do Docker modificada com os problemas graves corrigidos.

  2. Transfira a nova imagem para o nó de bootstrap no seu ambiente isolado.

  3. Faça login no nó de bootstrap.

  4. Localize o endereço do Artifact Registry na máquina de bootstrap durante a inicialização e defina como a variável de ambiente REGISTRY_IP:

    REGISTRY=$(kubectl get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
    
    REGISTRY_IP=${REGISTRY#https://}
    
  5. Recupere a credencial para acessar o Artifact Registry. Use o comando a seguir para recuperar a conta e a senha de administrador:

    ADMIN_PASS=$(kubectl -n harbor-system get secret harbor-admin \
        -o jsonpath="{.data.secret}" | base64 -d)
    
  6. Faça login no Artifact Registry:

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    Uma mensagem Login Succeeded é impressa para verificar se o login no Artifact Registry foi bem-sucedido.

  7. Marque a nova imagem:

    docker image tag CONTAINER_IMAGE_URL \
        $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

    Substitua:

    • CONTAINER_IMAGE_URL: o URL da imagem de contêiner local, como gcr.io/repository/image:tag.
    • PROJECT_NAME: o nome do projeto do Artifact Registry.
    • IMAGE_NAME: o nome da imagem do contêiner.
    • TAG: a tag da imagem do contêiner.
  8. Envie a nova imagem para o Artifact Registry:

    docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

Artifact Registry no cluster de administrador

Para fazer upload de imagens de contêiner para o Artifact Registry no cluster de administrador, conclua as etapas a seguir.

  1. Verifique se você tem a imagem do Docker modificada com os problemas graves corrigidos.

  2. Transfira a nova imagem para um nó com acesso root e um arquivo kubeconfig root para o cluster de administrador no seu ambiente isolado.

  3. Exporte o caminho do arquivo kubeconfig do cluster de administrador como uma variável de ambiente:

    export ADMIN_CLUSTER_KUBECONFIG=KUBECONFIG_FILE_PATH
    

    Substitua KUBECONFIG_FILE_PATH pelo caminho para o arquivo kubeconfig.

  4. Localize o endereço do Artifact Registry no cluster e defina-o como a variável de ambiente REGISTRY_IP:

    REGISTRY=$(kubectl --kubeconfig $ADMIN_CLUSTER_KUBECONFIG get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
    
    REGISTRY_IP=${REGISTRY#https://}
    
  5. Verifique se o REGISTRY_IP contém um URL válido, como 10.200.0.36:10443:

    echo ${REGISTRY_IP}
    
  6. Verifique se o certificado da autoridade certificadora (CA) existe:

    ls -al /etc/docker/certs.d/${REGISTRY_IP}/ca.crt
    

    Se o certificado não existir, crie e configure-o:

    mkdir -p /etc/docker/certs.d/${REGISTRY_IP}/
    
    chmod 755  /etc/docker/certs.d/${REGISTRY_IP}/
    
    echo $(kubectl get secret harbor-cert-secret -n istio-system -o jsonpath='{.data.ca\.crt}' --kubeconfig $ADMIN_CLUSTER_KUBECONFIG) | openssl base64 -A -d >  /etc/docker/certs.d/${REGISTRY_IP}/ca.crt
    
    chmod 755  /etc/docker/certs.d/${REGISTRY_IP}/ca.crt
    
  7. Recupere a credencial para acessar o Artifact Registry. Use o comando a seguir para recuperar a conta e a senha de administrador:

    ADMIN_PASS=$(kubectl --kubeconfig $ADMIN_CLUSTER_KUBECONFIG \
        -n harbor-system get secret harbor-admin \
        -o jsonpath="{.data.secret}" | base64 -d)
    
  8. Faça login no Artifact Registry:

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    Uma mensagem Login Succeeded é impressa para verificar se o login no Artifact Registry foi bem-sucedido.

  9. Marque a nova imagem:

    docker image tag CONTAINER_IMAGE_URL \
        $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

    Substitua:

    • CONTAINER_IMAGE_URL: o URL da imagem de contêiner local, como gcr.io/repository/image:tag.
    • PROJECT_NAME: o nome do projeto do Artifact Registry.
    • IMAGE_NAME: o nome da imagem do contêiner.
    • TAG: a tag da imagem do contêiner.
  10. Envie a nova imagem para o Artifact Registry:

    docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG