En este documento, se describe cómo actualizar una oferta de SaaS con App Lifecycle Manager.
App Lifecycle Manager permite realizar actualizaciones en varias unidades aprovisionadas con
lanzamientos. Los lanzamientos se orientan a las unidades según su UnitKind y, de manera opcional,
pueden aplicar filtros (unit_filter) para orientarse a un subconjunto específico de unidades con Google Cloud CLI . Esto permite
realizar actualizaciones administradas en toda la base implementada. Se puede realizar una reversión
actualizando las unidades a una versión anterior.
Para realizar operaciones en una sola unidad específica, usa los controles disponibles en la página Detalles de la unidad.
Antes de comenzar
Antes de actualizar tu oferta de app, debes hacer lo siguiente:
- Asegúrate de haber habilitado App Lifecycle Manager.
- Asegúrate de tener los permisos de IAM necesarios para crear una oferta de app.
- Crea una oferta de app.
- Crea un UnitKind.
- Crea y aprovisiona una unidad.
- Prepara un plano de Terraform nuevo o modificado.
Crea una versión
Antes de actualizar tu oferta de app, debes crear una versión. Una versión representa una versión específica de tu aplicación de SaaS que se define con un paquete de plano y sus configuraciones asociadas. En esencia, una versión contiene la actualización de tus unidades.
Console
Ve a App Lifecycle Manager.
Haz clic en Versiones.
En la página Versiones, haz clic en Crear.
En la página Crear versión, haz lo siguiente:
- En el cuadro Nombre de la versión, ingresa un nombre único para la versión.
- En el cuadro Tipo de unidad, selecciona el tipo de unidad con el que se asocia esta versión.
- En la sección Solo se puede actualizar desde (opcional), puedes seleccionar las versiones desde las que se pueden actualizar las unidades a esta versión. Esto te permite controlar las rutas de actualización.
- En los pasos Crear plano y Almacenar plano, selecciona o crea tu plano. Consulta la documentación de Blueprints para obtener información detallada sobre las opciones de creación de planos.
En la sección Variables (opcional), puedes establecer variables de entrada para esta versión. Consulta la documentación de Variables para obtener más información sobre cómo configurar variables.
Haz clic en Crear.
Creaste una versión. Puedes ver los detalles de la versión en la página Detalles de la versión. Podrás hacer referencia a esta versión cuando crees un lanzamiento.
gcloud
Para crear una versión con la consola de Google Cloud , sigue estos pasos:
gcloud beta app-lifecycle-manager releases create RELEASE_NAME --blueprint-package=BLUEPRINT_PACKAGE_URI --unit-kind=UNIT_KIND [--location=LOCATION] [--labels=[KEY=VALUE,...]] [--upgradeable-from-releases=[RELEASE_NAME,...]] [--input-variable-defaults=[variable=VARIABLE,value=VALUE,type=TYPE,...]]
Reemplaza lo siguiente:
RELEASE_NAME: Es el ID de la versión que deseas crear. Este formará parte del nombre completo del recurso de la versión.BLUEPRINT_PACKAGE_URI: Es el URI del paquete del plano que se usará para esta versión. Los planos son imágenes de OCI alojadas en Artifact Registry o en otro registro de OCI.- El paquete de planos contiene los artefactos necesarios para aprovisionar una unidad y, además, incluye metadatos sobre el motor usado (Terraform) y la versión.
- Si omites el nombre de host en el URI, se establece de forma predeterminada en la ruta de acceso regional
de Artifact Registry (
us-east1-docker.pkg.dev, por ejemplo). - Consulta la documentación de Blueprints para obtener más información sobre cómo crear planos.
UNIT_KIND: Es el ID o el identificador completamente calificado para el tipo de unidad al que corresponde esta versión. UNIT_KIND es inmutable después de crear una versión.LOCATION: Es la ubicación en la que deseas crear la versión. Esta marca proporciona un valor de resguardo para la ubicación de la versión si no se proporciona la ruta de acceso de URI completa. La ubicación predeterminada es la que se configuró en tu entorno de Google Cloud CLI.LABELS: (Opcional) Son las etiquetas que se aplicarán a la versión para categorizarla. Las etiquetas son pares clave-valor.- Las claves deben comenzar con un carácter en minúscula y contener solo guiones, guiones bajos, caracteres en minúscula y números.
- Los valores deben contener solo guiones, guiones bajos, caracteres en minúscula y números.
- Por ejemplo:
--labels=environment=staging,team=app-lifecycle-manager.
UPGRADEABLE_FROM_RELEASES: Es una lista de nombres de versiones separada por comas que especifica qué versiones existentes se pueden actualizar con la versión nueva que crees (opcional).- Si dejas esta marca vacía, no habrá restricciones sobre qué versiones se pueden actualizar a esta versión.
- Cuando se proporcionen, las solicitudes de actualización de unidades a esta versión aplicarán esta restricción.
INPUT_VARIABLE_DEFAULTS: (Opcional) Son los valores predeterminados para las variables de entrada que requiere el plano.- Puedes especificar los valores predeterminados de las variables de forma intercalada o haciendo referencia a un archivo YAML o JSON.
- Las variables definidas aquí se pueden anular durante la creación del lanzamiento.
Para obtener más información sobre cómo configurar variables, consulta la documentación sobre variables.
Para obtener más información sobre las versiones, consulta la referencia de Google Cloud CLI de Release.
Crea un tipo de lanzamiento
Antes de crear un lanzamiento, debes crear un tipo de lanzamiento que sirva como plantilla para la forma en que se implementa la versión en tus unidades.
Console
Ve a App Lifecycle Manager.
Haz clic en Tipos de lanzamiento.
En la página Tipos de lanzamiento, haz clic en Crear.
En la página Crea un tipo de lanzamiento, haz lo siguiente:
- En el cuadro Nombre del tipo de lanzamiento, ingresa un nombre para tu tipo de lanzamiento.
- En el cuadro Tipo de unidad, selecciona el tipo de unidad que detalla el tipo de unidad que deseas actualizar con la versión.
En el menú desplegable Estrategia de lanzamiento, selecciona la estrategia que quieras usar para implementar la versión en tus unidades:
- Una ubicación a la vez (simple): Actualiza una ubicación a la vez (sin tiempos de prueba). Actualiza hasta el 5% de las unidades de forma simultánea.
- Todo al mismo tiempo (simple): Todas las ubicaciones comienzan a actualizarse de forma simultánea (ideal para entornos de desarrollo y situaciones de emergencia).
- Progresiva (gradual): Implementa actualizaciones de forma gradual en lotes de porcentajes de manera exponencial en varias ubicaciones (con tiempos de prueba).
- Progresiva (una sola ubicación): Actualiza las unidades en lotes de porcentajes con tiempos de prueba extendidos para detectar problemas dentro de una sola ubicación.
Para obtener más información sobre las estrategias de lanzamiento, consulta Estrategias de lanzamiento.
Haz clic en Crear.
Creaste un tipo de lanzamiento. En la página Detalles del tipo de lanzamiento, puedes ver y editar los parámetros de tu tipo de lanzamiento.
gcloud
Para crear un tipo de lanzamiento con la consola de Google Cloud , sigue estos pasos:
gcloud beta app-lifecycle-manager rollout-kinds create ROLLOUT_KIND_NAME --unit-kind=UNIT_KIND --location=LOCATION --rollout_strategy=ROLLOUT_STRATEGY --error_budget=ERROR_BUDGET --unit_filter=UNIT_FILTER --update_unit_kind_default=UPDATE_UNIT_KIND_DEFAULT
Reemplaza lo siguiente:
ROLLOUT_KIND_NAME: Es el nombre del tipo de lanzamiento.UNIT_KIND: Define a qué unidades deseas aplicar las versiones. Las versiones se aplican a todas las unidades del tipo de unidad seleccionado.LOCATION: Es la ubicación en la que deseas crear tu tipo de lanzamiento.ROLLOUT_STRATEGY: Define la estrategia de lanzamiento para tu tipo de lanzamiento. Estos son algunos de los valores posibles:Google.Cloud.Simple.OneLocationAtATime: Actualiza una ubicación a la vez (sin tiempos de prueba). Actualiza hasta el 5% de las unidades de forma simultánea.Google.Cloud.Simple.AllAtOnce: Todas las ubicaciones comienzan a actualizarse de forma simultánea (ideal para entornos de desarrollo y situaciones de emergencia).Google.Cloud.Progressive.Gradual.v1: Implementa actualizaciones de forma gradual en lotes de porcentajes de manera exponencial en varias ubicaciones (con tiempos de prueba).Google.Cloud.Progressive.SingleLocation.v1: Actualiza las unidades en lotes de porcentajes con tiempos de prueba extendidos para detectar problemas en una sola ubicación.
Para obtener más información sobre las estrategias de lanzamiento, consulta Estrategias de lanzamiento.
ERROR_BUDGET: Es la configuración del porcentaje de error aceptable aceptable. Si la cantidad de unidades con errores supera el máximo deerror_budget(definido porallowed_count,allowed_ratio*total_units), el lanzamiento se pausará. Si no se estableceerror_budget, App Lifecycle Manager intentará actualizar todas las unidades, independientemente de la cantidad de fallas que se encuentren.UNIT_FILTER: Es la cadena de filtro con formato CEL que se usa en las unidades. Se aplicará el filtro para determinar la población de unidades aptas. Este filtro solo puede reducir el alcance del lanzamiento. No puede expandir el alcance del lanzamiento.UPDATE_UNIT_KIND_DEFAULT: Es la configuración para actualizar el tipo de unidad. De forma predeterminada, el tipo de unidad se actualizará cuando comience el lanzamiento. Estos son algunos de los valores posibles:UPDATE_UNIT_KIND_STRATEGY_UNSPECIFIED: No se especificó la estrategia de actualización del tipo de unidad.UPDATE_UNIT_KIND_STRATEGY_ON_START: Actualiza la estrategia de tipo de unidad en el inicio del lanzamiento.UPDATE_UNIT_KIND_STRATEGY_NEVER: Nunca actualiza la estrategia de tipo de unidad.
Para obtener más información, consulta la referencia de Google Cloud CLI de
RolloutKind.
Función de porcentaje de error aceptable
App Lifecycle Manager incluye una función de porcentaje de error aceptable aceptable (ErrorBudget en
RolloutKind) como protección. Esto puede pausar automáticamente un lanzamiento si la
cantidad o el porcentaje de fallas de actualización de unidades (durante la aplicación de la infraestructura,
por ejemplo) supera un umbral configurado, lo que ayuda a limitar el impacto de
los posibles problemas durante una actualización.
Crear un lanzamiento
Después de crear un tipo de lanzamiento, puedes crear un lanzamiento que especifique la versión con la que deseas actualizar tus unidades.
Una vez que se crea el lanzamiento, App Lifecycle Manager actualiza tus unidades según la estrategia definida en el tipo de unidad.
Console
Ve a App Lifecycle Manager.
Haz clic en Lanzamientos.
En la página Lista de lanzamientos, haz clic en Crear.
En la página Crear un lanzamiento, haz lo siguiente:
- En el cuadro Tipo de lanzamiento, selecciona el tipo de lanzamiento que detalla cómo implementar tu versión en las unidades especificadas.
- En el cuadro Versión, especifica la versión con la que se actualizarán las unidades.
- En el cuadro Nombre del lanzamiento, ingresa un nombre para el lanzamiento.
Haz clic en Crear.
Se creó tu lanzamiento.
En la página Detalles del lanzamiento global, puedes supervisar los detalles del lanzamiento, incluidos el estado, el progreso (por recuento de unidades) y los errores.
gcloud
Para crear un lanzamiento con la consola de Google Cloud , sigue estos pasos:
gcloud beta app-lifecycle-manager rollouts create ROLLOUT_NAME --rollout-kind=ROLLOUT_KIND_NAME --release=RELEASE_NAME --location=LOCATION
Reemplaza lo siguiente:
ROLLOUT_NAME: Es el nombre del lanzamiento.ROLLOUT_KIND_NAME: Define qué tipo de lanzamiento quieres usar para aplicar versiones a tus unidades. Las versiones se aplican a todas las unidades del tipo de unidad definido en el tipo de lanzamiento.RELEASE_NAME: Define el objeto binario de la versión que quieres implementar en tus unidades.LOCATION: Es la ubicación en la que deseas crear el lanzamiento.
Para obtener más información, consulta la referencia de Google Cloud CLI de
Rollout.
¿Qué sigue?
- Para obtener más información sobre App Lifecycle Manager, consulta Descripción general de App Lifecycle Manager.
- Para probar un instructivo, consulta Implementa una instancia de MySQL con App Lifecycle Manager.
- Para comprender cómo se usan las cuentas de servicio y cómo otorgar permisos detallados para estas cuentas, consulta Cuentas de servicio de App Lifecycle Manager.