Modificar artefactos del sistema

Los artefactos del sistema admiten el sistema del dispositivo aislado de Google Distributed Cloud (GDC) y administran la implementación de GDC. El registro privado de artefactos de GDC almacena los artefactos del sistema. Existen varios formatos para los artefactos del sistema, incluidos, sin limitaciones, los siguientes:

  • Imágenes de contenedor para Anthos, KubeVirt y servicios administrados de GDC
  • Imágenes del sistema operativo (SO)
  • Formatos de firmware
  • Plantillas de máquina virtual (VM) doradas
  • Charts de Helm

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

Antes de comenzar

Para modificar los artefactos del sistema, debes obtener acceso de diagnóstico. El acceso de diagnóstico es un modo de acceso con privilegios que se requiere para brindar asistencia al cliente de forma segura cuando este tiene un problema. Debes crear un ticket para que se te otorgue este acceso.

Sube imágenes de Docker

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

En las siguientes secciones, se muestran las instrucciones de carga para los dos tipos de registros.

Artifact Registry en la máquina de arranque

Para subir imágenes de contenedor a Artifact Registry en la máquina de arranque, completa los siguientes pasos:

  1. Asegúrate de tener la imagen de Docker modificada con los problemas de interrupción corregidos.

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

  3. Accede al nodo de arranque.

  4. Ubica la dirección de Artifact Registry en la máquina de arranque durante el arranque y configúrala como la 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 recuperar la cuenta y la contraseña del administrador:

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

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    Se imprimirá un mensaje Login Succeeded para verificar que se accedió correctamente a Artifact Registry.

  7. Etiqueta la imagen nueva:

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

    Reemplaza lo siguiente:

    • CONTAINER_IMAGE_URL: Es la URL de la imagen de contenedor local, como gcr.io/repository/image:tag.
    • PROJECT_NAME: Es el nombre del proyecto de Artifact Registry.
    • IMAGE_NAME: Es el nombre de la imagen del contenedor.
    • TAG: Es la etiqueta de la 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 administrador

Para subir imágenes de contenedores a Artifact Registry en el clúster de administrador, completa los siguientes pasos.

  1. Asegúrate de tener la imagen de Docker modificada con los problemas de interrupción corregidos.

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

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

    export ADMIN_CLUSTER_KUBECONFIG=KUBECONFIG_FILE_PATH
    

    Reemplaza KUBECONFIG_FILE_PATH por la ruta de acceso al archivo kubeconfig.

  4. Ubica la dirección de Artifact Registry dentro del clúster y configúrala 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. Asegúrate de que REGISTRY_IP contenga una URL válida, como 10.200.0.36:10443:

    echo ${REGISTRY_IP}
    
  6. Verifica si existe el certificado de la autoridad certificadora (AC):

    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 recuperar la cuenta y la contraseña del administrador:

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

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    Se imprimirá un mensaje Login Succeeded para verificar que se accedió correctamente a Artifact Registry.

  9. Etiqueta la imagen nueva:

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

    Reemplaza lo siguiente:

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

    docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG