Actualizaciones de imágenes posteriores a la migración

Los artefactos de contenedor que creas con el comando migctl migration generate-artifacts no están diseñados solo para la implementación de la carga de trabajo migrada en el clúster de destino. También lo están para las operaciones de mantenimiento del "Día 2", que incluyen la aplicación de actualizaciones de software de SO del modo de usuario y la aplicación, parches de seguridad, la edición de configuraciones incorporadas, la adición o el reemplazo de archivos y la actualización del software de entorno de ejecución de Migrate to Containers.

Revisa la imagen de Dockerfile generada

Estas operaciones de mantenimiento aprovechan el Dockerfile generado y la capa de imagen del sistema capturada. Cuando se los combina con la capa de entorno de ejecución de Migrate to Containers, estos archivos se pueden compilar en una imagen de contenedor ejecutable.

Los artefactos de contenedor generados están pensados para integración de fase de compilación de canalización de IC/EC, como se describe en el siguiente diagrama:

Diagrama que muestra la canalización de IC/EC.

El Dockerfile está estructurado como una compilación de varias etapas para facilitar el mantenimiento y la manipulación mientras se evita que aumente el tamaño de la imagen.

A continuación, se muestra un ejemplo de un Dockerfile generado:

# Please refer to the documentation:
# https://cloud.google.com/migrate/anthos/docs/dockerfile-reference

FROM anthos-migrate.gcr.io/v2k-run-embedded:v1.6.0 as migrate-for-anthos-runtime

# Image containing data captured from the source VM
FROM gcr.io/myproject/myworkload-non-runnable-base:v1.0.0 as source-content

# If you want to update parts of the image, add your commands here.
# For example:
# RUN apt-get update
# RUN apt-get install -y \
#               package1=version \
#               package2=version \
#               package3=version
# RUN yum update
# RUN wget http://github.com

COPY --from=migrate-for-anthos-runtime / /

# Migrate for GKE Enterprise image includes entrypoint
ENTRYPOINT [ "/.v2k.go" ]

La segunda directiva FROM hace referencia a la capa de imagen del sistema capturada desde la VM migrada. Esta capa no se puede ejecutar sola y debe combinarse con la capa del entorno de ejecución de Migrate to Containers para compilar una imagen ejecutable.

Para obtener más información sobre cómo compilar imágenes de contenedores con Cloud Build, consulta Compila imágenes de contenedores.

Actualiza la capa de componentes de la carga de trabajo migrada

Si deseas aplicar alguna actualización o modificación a la capa de imagen de la carga de trabajo migrada, debes hacerlo después de la segunda directiva FROM.

En el siguiente ejemplo, actualizamos una imagen de contenedor migrada desde una VM de SUSE Enterprise Linux (SLES) como fuente, con Cloud Build y la CLI de gcloud. En el siguiente ejemplo, se actualiza el paquete openssh de distribución de SLES.

Dockerfile actualizado:

# Image containing data captured from the source VM
FROM anthos-migrate.gcr.io/v2k-run-embedded:v1.6.0 as migrate-for-anthos-runtime

# Image containing data captured from the source VM
FROM gcr.io/myproject/myworkload-non-runnable-base:v1.0.0 as source-content

# If you want to update parts of the image, add your commands here.
# For example:
# RUN apt-get update
# RUN apt-get install -y \
#               package1=version \
#               package2=version \
#               package3=version
# RUN yum update
# RUN wget http://github.com

RUN zypper ref -s && zypper -n in openssh
COPY --from=migrate-for-anthos-runtime / /

# Migrate to Containers image includes entrypoint
ENTRYPOINT [ "/.v2k.go" ]

Cómo compilar la imagen actualizada:

  1. Descarga el Dockerfile generado desde el bucket de Cloud Storage en un directorio local en tu entorno de Cloud Shell.
  2. Edita el Dockerfile para agregar la directiva RUN destacada, como en el ejemplo anterior.
  3. Compila la imagen actualizada y envíala a Container Registry con una etiqueta de versión actualizada, lo que garantiza que haya tiempo suficiente para que la compilación finalice. En el siguiente ejemplo, la imagen está en el directorio actual:

    gcloud builds submit --timeout 4h --tag gcr.io/myproject/mySUSEworkload:v1.0.1 .
    
  4. Puedes usar la imagen recién compilada para actualizar una implementación existente, por ejemplo, para realizar una actualización progresiva en la aplicación implementada:

    kubectl set image deployment/myWorkload my-app=gcr.io/myproject/mySUSEworkload:v1.0.1 --record
    

Actualiza la versión de la capa de Migrate to Containers

Cuando se lanzan nuevas versiones del software de Migrate to Containers, puedes actualizar esa versión de software en las imágenes de cargas de trabajo implementadas. Esas actualizaciones pueden incluir nuevas funciones, mejoras o correcciones de errores.

Para actualizar la capa de software de Migrate to Containers, edita el Dockerfile y cambia la etiqueta de versión a la versión actualizada que deseas aplicar.

Con el ejemplo anterior, puedes actualizar de la versión 1.6.0 a la versión hipotética 1.15.0 si editas la directiva FROM como se indica a continuación:

FROM anthos-migrate.gcr.io/v2k-run-embedded:v1.15.0 as migrate-for-anthos-runtime

Después de actualizar el Dockerfile, deberás compilar una nueva versión de imagen de contenedor de carga de trabajo y aplicarla a las implementaciones existentes para actualizarlas.

¿Qué sigue?