Modificar artefactos do sistema

Os artefactos do sistema suportam o sistema de dispositivo isolado do Google Distributed Cloud (GDC) e gerem a implementação do GDC. O Artifact Registry privado do GDC armazena os artefactos do sistema. Existem vários formatos para artefactos do sistema, incluindo, entre outros:

  • Imagens de contentores para serviços geridos do Anthos, KubeVirt e GDC
  • Imagens do sistema operativo (SO)
  • Formatos de firmware
  • Modelos de máquinas virtuais (VMs) dourados
  • Gráficos Helm

O Artifact Registry participa em várias operações do sistema GDC, como a instalação, as atualizações e o ciclo de vida dos recursos, de forma segura, escalável e inviolável.

Antes de começar

Para modificar artefactos do sistema, tem de obter acesso de diagnóstico. O acesso de diagnóstico é um modo de acesso privilegiado necessário para apoiar um cliente em segurança quando este encontra um problema. Tem de criar um pedido para que este acesso seja concedido.

Carregue imagens de Docker

Para modificar artefactos do sistema, tem de carregar novas imagens do Docker. O método de carregamento depende de qual dos seguintes registos envia as suas imagens de contentores:

As secções seguintes mostram as instruções de carregamento para os dois tipos de registo.

Artifact Registry na máquina de arranque

Para carregar imagens de contentores para o Artifact Registry na máquina de arranque, conclua os seguintes passos:

  1. Certifique-se de que tem a imagem Docker modificada com os problemas de interrupção corrigidos.

  2. Transfira a nova imagem para o nó de arranque no seu ambiente isolado da Internet.

  3. Inicie sessão no nó de arranque.

  4. Localize o endereço do Artifact Registry na máquina de arranque no momento do arranque e defina-o 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. Obtenha a credencial para aceder ao Artifact Registry. Use o seguinte comando para obter a conta de administrador e a palavra-passe:

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

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    É impressa uma mensagem Login Succeeded para validar um início de sessão bem-sucedido no Artifact Registry.

  7. Etiquete a nova imagem:

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

    Substitua o seguinte:

    • CONTAINER_IMAGE_URL: o URL da imagem do contentor local, como gcr.io/repository/image:tag.
    • PROJECT_NAME: o nome do projeto do Artifact Registry.
    • IMAGE_NAME: o nome da imagem do contentor.
    • TAG: a etiqueta de imagem do contentor.
  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 carregar imagens de contentores para o Artifact Registry no cluster de administrador, conclua os seguintes passos.

  1. Certifique-se de que tem a imagem Docker modificada com os problemas de interrupção corrigidos.

  2. Transfira a nova imagem para um nó que tenha acesso de superutilizador com um ficheiro rootkubeconfig para o cluster de administrador no seu ambiente isolado.

  3. Exporte o caminho do ficheiro 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 ficheiro 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. Certifique-se de que o elemento REGISTRY_IP contém um URL válido, como 10.200.0.36:10443:

    echo ${REGISTRY_IP}
    
  6. Verifique se o certificado da autoridade de certificação (AC) existe:

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

    Se o certificado não existir, crie-o 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. Obtenha a credencial para aceder ao Artifact Registry. Use o seguinte comando para obter a conta de administrador e a palavra-passe:

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

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    É impressa uma mensagem Login Succeeded para validar um início de sessão bem-sucedido no Artifact Registry.

  9. Etiquete a nova imagem:

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

    Substitua o seguinte:

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

    docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG