En este documento, se describe cómo usar las políticas de implementación para restringir las acciones de la canalización de publicación manuales o automatizadas.
Una política de implementación es un recurso de Cloud Deploy que puedes usar para restringir acciones manuales o automáticas en una canalización de publicación o un destino seleccionados (o todas las canalizaciones o destinos).
¿Qué comportamiento se puede restringir?
Puedes crear políticas de implementación para restringir o evitar que Cloud Deploy realice ciertas acciones en los lanzamientos. Por ejemplo, una política puede impedir la creación de lanzamientos para una canalización de publicación determinada durante un período determinado. Por ejemplo, puedes usarlo para restricciones de temporada.
Cómo se evalúan y aplican las políticas
Para cualquier acción manual o automatizada, Cloud Deploy hace lo siguiente:
Verifica los permisos de Identity and Access Management.
Si el usuario o la cuenta de servicio no tienen los permisos de IAM adecuados, la acción no se realiza y no es necesario evaluar las políticas de despliegue.
Verifica si hay una política aplicable para la canalización de destino o de publicación y, si la hay, se evalúa la política.
Cloud Deploy evalúa la acción que se está realizando para ver si esta regla es aplicable.
Es decir, ¿el tipo de acción y el llamador coinciden con la política?
Cloud Deploy verifica los períodos definidos para la política para ver si está vigente en el momento de la solicitud.
Si la política está vigente y la regla se aplica a la canalización de publicación o al objetivo y a la acción, se aplica esa regla y se bloquea la acción.
Requisitos y limitaciones
Cada política debe tener al menos un selector.
Cada política debe tener al menos una regla.
Todos los IDs de reglas deben ser únicos dentro de una política de implementación.
Cada regla debe tener al menos un
timeWindows
y, dentro de esetimeWindows
, debe haber unoneTimeWindows
o unweeklyWindows
.Consulta Fechas y horas para obtener más detalles sobre el uso de bloques de tiempo.
No puedes tener más de 1,000 políticas de implementación por proyecto o ubicación.
Roles y permisos de Identity and Access Management necesarios
Además de los permisos que necesitas para ejecutar cualquier canalización de entrega de Cloud Deploy y realizar las tareas que se restringirían por política, hay varios permisos necesarios para realizar ciertas operaciones en el recurso de política:
clouddeploy.deployPolicies.create
clouddeploy.deployPolicies.delete
clouddeploy.deployPolicies.get
clouddeploy.deployPolicies.list
clouddeploy.deployPolicies.update
clouddeploy.deployPolicies.override
Esos permisos se incluyen en el rol roles/clouddeploy.policyAdmin
.
Además, el rol roles/clouddeploy.policyOverrider
incluye el permiso .override
.
Crear una política de implementación
La creación de un recurso de política de implementación consta de los siguientes pasos:
Crea un archivo YAML con la configuración de la política de implementación.
La configuración incluye un encabezado, que identifica el recurso como una política de implementación.
name
es obligatorio.apiVersion: deploy.cloud.google.com/v1 kind: DeployPolicy metadata: name: description:
Agrega una referencia a las canalizaciones de entrega y los destinos a los que se aplica la política (el
selectors
).Consulta Cómo implementar selectores de políticas y la referencia del esquema de configuración para obtener más información sobre los selectores de políticas y cómo configurarlos.
Agrega uno o más
rules
de políticas.Cada regla describe una restricción y las circunstancias en las que se aplica. Consulta Cómo implementar reglas de políticas y la Referencia del esquema de configuración para obtener más información sobre las reglas de políticas y cómo configurarlas.
Aplica ese archivo con
gcloud deploy apply --filename=
para crear el recurso.
Las canalizaciones de entrega o los destinos a los que se hace referencia ahora se restringen según las reglas del recurso de política de implementación.
Selectores de políticas de implementación
Los selectores, definidos en las configuraciones de la política de implementación, determinan qué canalizaciones de publicación y destinos se ven afectados por una regla determinada.
Un selector se define en una estrofa selectors
en la configuración de la política de implementación, como una propiedad de nivel superior:
selectors:
- deliveryPipeline:
id:
labels:
target:
id:
labels:
En esta configuración YAML, deliveryPipeline.id
toma el nombre de la canalización de publicación y target.id
toma el nombre del destino (en ambos casos, metadata.name
).
Puedes usar id: *
para seleccionar todas las canalizaciones de entrega o todos los destinos. También
puedes usar etiquetas para hacer coincidir las canalizaciones de entrega, los destinos o ambos.
Dentro de un selector determinado, los elementos se combinan con el operador Y. Se aplica la operación OR a varios selectores. Es decir, para que la política restrinja una solicitud determinada, debe aplicarse a al menos un selector. Sin embargo, dentro de ese selector, la solicitud debe coincidir con todos los elementos.
Implementa reglas de políticas
Cada política de implementación incluye una o más reglas de políticas, que definen qué acción se restringe en la canalización de publicación o el objetivo seleccionados. La regla también define en qué circunstancias se aplica.
Las siguientes reglas están disponibles:
rolloutRestriction
La regla rolloutRestriction
evita que se realicen las acciones de lanzamiento especificadas en los destinos seleccionados que usan las canalizaciones de publicación seleccionadas. Esta regla
usa un período que define cuándo no se puede crear un lanzamiento para la
canalización de publicación y el objetivo seleccionados. Consulta Fechas y horas para obtener una descripción de cómo se especifican las fechas y las horas en las reglas de la política de implementación.
Se pueden restringir las siguientes acciones mientras la regla esté vigente:
ADVANCE
Las fases de lanzamiento no se pueden adelantar.
APPROVE
No se puede aprobar la promoción de lanzamiento.
CANCEL
No se pueden cancelar los lanzamientos.
CREATE
No se pueden crear lanzamientos. Puedes crear una versión si una política impide esta acción, pero esa versión no generará un lanzamiento.
IGNORE_JOB
No se pueden ignorar las tareas.
RETRY_JOB
No se pueden reintentar los trabajos.
ROLLBACK
Los lanzamientos no se pueden revertir.
TERMINATE_JOBRUN
No se pueden finalizar las ejecuciones de trabajos.
Consulta la referencia del esquema de configuración para ver la estructura YAML de esta regla.
Fechas y horas en una regla rolloutRestriction
Configuras bloques de fecha y hora para especificar períodos de tiempo recurrentes y no recurrentes durante los cuales la política de implementación está vigente.
Los siguientes son los requisitos para expresar fechas y horas:
Las fechas se expresan como
yyyy-mm-dd
.Cuando se expresa la hora del día, el inicio del día es
00:00
y el final del día es24:00
.Para
oneTimeWindows
, las fechas deben incluir la hora. ParaweeklyWindows
, puedes omitir la hora del día. Sin embargo, si incluyesstartTime
, debes incluirendTime
, y viceversa.Por ejemplo, una inmovilización solo los domingos sería la siguiente:
- daysOfWeek: [SUNDAY] startTime: "00:00" endTime: "24:00"
También puedes hacer lo siguiente:
- daysOfWeek: [SUNDAY]
Pero no lo siguiente:
- daysOfWeek: [SUNDAY] startTime: "00:00"
Debes incluir una zona horaria en la estrofa
timeWindows
.Por ejemplo:
timeZone: America/New_York
.
Ventanas de tiempo no repetitivas
Un período no recurrente comienza y finaliza en un día y una hora específicos. Puedes usar esta opción para cualquier período durante el cual quieras restringir los lanzamientos.
Las ventanas de tiempo no repetidas se configuran con una estrofa oneTimeWindows
.
Ventanas de tiempo repetidas
Un período recurrente describe un bloque de tiempo recurrente durante el cual quieres restringir los lanzamientos. Por ejemplo, puedes usar esta función para restringir los lanzamientos durante los fines de semana.
Las ventanas de tiempo repetidas se configuran con una estrofa weeklyWindows
.
Ejemplos
En esta sección, se incluyen algunos ejemplos del uso de fechas y horas para configurar cuándo se aplica una política de implementación.
Suspensión anual
Si hay una época del año durante la cual deseas inmovilizar los lanzamientos, puedes configurar un bloque oneTimeWindows
para hacerlo. Si las fechas son predecibles, de año a año, deberás usar varios bloques oneTimeWindow
.
En el siguiente YAML, se muestra un período único (no repetitivo) para aplicar una política de implementación para una inmovilización anual:
timeWindows:
timeZone: "America/New_York"
oneTimeWindows:
- start: "2024-12-22 17:00"
end: "2025-01-02 09:00"
Este YAML describe un período desde el 22 de diciembre de 2024 a las 5 p.m. hasta el 2 de enero de 2025 a las 9 a.m.
Congelación de fin de semana repetida
En el siguiente YAML, se muestra un período de tiempo recurrente para aplicar una política de implementación que restringe los lanzamientos los fines de semana, desde el viernes a las 5 p.m. hasta el lunes por la mañana a las 9 a.m.:
timeWindows:
timeZone: "America/New_York"
weeklyWindows:
- daysOfWeek: [FRIDAY]
startTime: "17:00"
endTime: "24:00"
- daysOfWeek: [SATURDAY, SUNDAY]
startTime: "00:00"
endTime: "24:00"
- daysOfWeek: [MONDAY]
startTime: "00:00"
endTime: "09:00"
Actualiza una política de implementación
La actualización de una política de implementación consta de los siguientes pasos:
Edita el archivo YAML de configuración de la política.
Si creaste la política con la consola de Google Cloud, puedes obtener la configuración de YAML seleccionando la pestaña YAML en la página Detalles de la política de implementación. Luego, puedes copiar ese texto en un archivo de forma local y editarlo allí.
Aplica ese archivo con
gcloud deploy apply --filename=
.Esto actualiza el recurso de la política de implementación con la configuración nueva.
Debido a que las políticas de implementación se evalúan cuando se intenta la acción restringida, todas esas acciones contra todos los recursos de Cloud Deploy están sujetas a la política actualizada. Es decir, no hay ningún resto de las restricciones anteriores.
Por ejemplo, si tienes un bloqueo de restrictRollouts
para todo el mes de diciembre y, el 14 de diciembre, actualizas la política para que la restricción finalice el 15 de diciembre, los lanzamientos ya no se bloquearán después de esa fecha.
Anula una política de implementación
Si es necesario, puedes anular una política de implementación. Por ejemplo, si hay un problema con una implementación en producción y necesitas revertirla, pero hay una política de implementación que impide que se realicen implementaciones, puedes anular esa política para revertir la implementación incorrecta.
Para anular una política de implementación, debes tener el permiso clouddeploy.deployPolicies.override
de IAM.
Puedes anular la política desde gcloud CLI o con la consola de Google Cloud:
Console
En la consola de Google Cloud, intenta realizar una acción que esté bloqueada por una política.
Se muestra un diálogo que indica que una política de implementación bloquea la acción. Este diálogo incluye un vínculo a la política específica que bloquea esta acción.
En el campo de texto proporcionado, escribe el nombre de la política y haz clic en Intentar anular las políticas.
Si tienes permiso para anular la política, Cloud Deploy ahora ejecuta la acción.
gcloud CLI
Para anular una política de implementación con gcloud CLI, agrega --override-deploy-policies
al comando para cualquier acción que esa política impediría. Por ejemplo, el siguiente comando promociona una versión anula una política de implementación específica que, de otro modo, impediría la promoción:
gcloud deploy releases promote --release=my-release-001 \
--project=my-policy-testing-project \
--region=us-central1 \
--delivery-pipeline=my-pipeline \
--to-target=prod-target \
--override-deploy-policies=my-deploy-policy
Borra una política de implementación
Para borrar una política de implementación, haz lo siguiente:
Console
En la consola de Google Cloud, navega a la página Políticas de implementación de Cloud Deploy.
Abre la página Implementar políticas
La página incluye una lista de las políticas de implementación disponibles en tu proyecto actual, si las hay.
Selecciona el botón
Acciones de la política que deseas borrar y haz clic en Borrar política de implementación.Para confirmar la eliminación, escribe el nombre de la política de implementación y haz clic en Confirmar.
La política se borró y ahora puedes realizar cualquiera de las acciones que esta restringía.
gcloud CLI
Para borrar una política de implementación con gcloud CLI, ejecuta el siguiente comando:
gcloud deploy deploy-policies delete \
--project=[PROJECT] \
--region=[REGION] \
[POLICY_NAME]
Reemplaza lo siguiente:
[POLICY_NAME]
Es el nombre de la política como se define en el archivo de configuración de la política.
[PROJECT]
El ID del proyecto de Google Cloud en el que creaste la política de implementación.
[REGION]
La región en la que creaste la política de implementación.
Después de borrar el recurso de la política de implementación, las canalizaciones de publicación y los objetivos afectados ya no estarán sujetos a la política y no se restringirán, a menos que se vean afectados por otra política de implementación.
Registro de la política de implementación
Cuando se evalúa una política de implementación, se crean entradas del registro de la plataforma para las siguientes acciones:
Evaluación de política
Los registros de la plataforma se escriben cuando se evalúa una solicitud y se incumple la política. También se escribe un registro cuando una solicitud incumple la política, pero esta se permite porque está suspendida o se anuló. No se escribe ningún registro cuando se otorga la solicitud porque no se incumple la política.
Falla de notificación de Pub/Sub cuando se cambia un recurso de política de implementación
¿Qué sigue?
Consulta el esquema del archivo de configuración para obtener detalles sobre la configuración de las políticas de implementación.
Obtén información sobre la automatización de implementaciones de Cloud Deploy.