Modificar artefactos del sistema

Los artefactos del sistema admiten el sistema del dispositivo aislado de Google Distributed Cloud (GDC) y gestionan la implementación de GDC. El Artifact Registry privado de GDC almacena los artefactos del sistema. Hay varios formatos para los artefactos del sistema, entre los que se incluyen los siguientes:

  • Imágenes de contenedor para servicios gestionados de Anthos, KubeVirt y GDC
  • Imágenes del sistema operativo (SO)
  • Formatos de firmware
  • Plantillas de máquina virtual (VM) de referencia
  • Gráficos de Helm

Artifact Registry participa en varias operaciones del sistema GDC, como la instalación, las actualizaciones y el ciclo de vida de los recursos, de forma segura, escalable y a prueba de manipulaciones.

Antes de empezar

Para modificar los artefactos del sistema, debes obtener acceso de diagnóstico. El acceso de diagnóstico es un modo de acceso privilegiado necesario para ayudar de forma segura a un cliente cuando tiene un problema. Para obtener este acceso, debes crear una incidencia.

Subir imágenes de Docker

Para modificar los artefactos del sistema, debes subir nuevas imágenes de Docker. El método de subida depende de cuál de los dos registros siguientes uses para enviar tus imágenes de contenedor:

En las siguientes secciones se muestran las instrucciones de subida de los dos tipos de registro.

Artifact Registry en la máquina de arranque

Para subir imágenes de contenedor a Artifact Registry en la máquina de arranque, sigue estos pasos:

  1. Asegúrate de que tienes la imagen de Docker modificada con los problemas corregidos.

  2. Transfiere la nueva imagen al nodo de arranque de tu entorno aislado.

  3. Inicia sesión en el nodo de arranque.

  4. Busca la dirección de Artifact Registry en la máquina de arranque durante el arranque y configúrala como variable de entorno REGISTRY_IP:

    REGISTRY=$(kubectl get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
    
    REGISTRY_IP=${REGISTRY#https://}
    
  5. Recupera la credencial para acceder a Artifact Registry. Usa el siguiente comando para obtener la cuenta y la contraseña de administrador:

    ADMIN_PASS=$(kubectl -n harbor-system get secret harbor-admin \
        -o jsonpath="{.data.secret}" | base64 -d)
    
  6. Inicia sesión en Artifact Registry:

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    Se imprimirá un mensaje Login Succeeded para verificar que se ha iniciado sesión correctamente en Artifact Registry.

  7. Etiqueta la nueva imagen:

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

    Haz los cambios siguientes:

    • CONTAINER_IMAGE_URL: la URL de la imagen del contenedor local, como gcr.io/repository/image:tag.
    • PROJECT_NAME: nombre del proyecto de Artifact Registry.
    • IMAGE_NAME: el nombre de la imagen del contenedor.
    • TAG: la etiqueta de imagen del contenedor.
  8. Envía la nueva imagen a Artifact Registry:

    docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

Artifact Registry en el clúster de administración

Para subir imágenes de contenedor a Artifact Registry en el clúster de administrador, sigue estos pasos.

  1. Asegúrate de que tienes la imagen de Docker modificada con los problemas corregidos.

  2. Transfiere la nueva imagen a un nodo que tenga acceso de superusuario con un archivo root kubeconfig al clúster de administrador de tu entorno aislado.

  3. Exporta la ruta del archivo kubeconfig del clúster de administrador como una variable de entorno:

    export ADMIN_CLUSTER_KUBECONFIG=KUBECONFIG_FILE_PATH
    

    Sustituye KUBECONFIG_FILE_PATH por la ruta al archivo kubeconfig.

  4. Busca la dirección de Artifact Registry en el clúster y defínela como la variable de entorno REGISTRY_IP:

    REGISTRY=$(kubectl --kubeconfig $ADMIN_CLUSTER_KUBECONFIG get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
    
    REGISTRY_IP=${REGISTRY#https://}
    
  5. Comprueba que REGISTRY_IP contenga una URL válida, como 10.200.0.36:10443:

    echo ${REGISTRY_IP}
    
  6. Comprueba si existe el certificado de la autoridad de certificación (CA):

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

    Si el certificado no existe, créalo y configúralo:

    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. Recupera la credencial para acceder a Artifact Registry. Usa el siguiente comando para obtener la cuenta y la contraseña de administrador:

    ADMIN_PASS=$(kubectl --kubeconfig $ADMIN_CLUSTER_KUBECONFIG \
        -n harbor-system get secret harbor-admin \
        -o jsonpath="{.data.secret}" | base64 -d)
    
  8. Inicia sesión en Artifact Registry:

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    Se imprimirá un mensaje Login Succeeded para verificar que se ha iniciado sesión correctamente en Artifact Registry.

  9. Etiqueta la nueva imagen:

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

    Haz los cambios siguientes:

    • CONTAINER_IMAGE_URL: la URL de la imagen del contenedor local, como gcr.io/repository/image:tag.
    • PROJECT_NAME: nombre del proyecto de Artifact Registry.
    • IMAGE_NAME: el nombre de la imagen del contenedor.
    • TAG: la etiqueta de imagen del contenedor.
  10. Envía la nueva imagen a Artifact Registry:

    docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG