En este documento, se describe cómo usar las políticas de implementación para restringir las acciones manuales o automatizadas de la canalización de entrega.
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 una cuenta de IAM adecuada permisos, no se realiza la acción y no es necesario evaluar la implementación y políticas de seguridad.
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 regla 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 cómo usar bloques horarias.
No puedes tener más de 1,000 políticas de implementación por proyecto o ubicación.
Se requieren roles y permisos de Identity and Access Management
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 la 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 lo siguiente:
.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 un implementar política.
name
es obligatorio.apiVersion: deploy.cloud.google.com/v1 kind: DeployPolicy metadata: name: description:
Agrega una referencia a las canalizaciones y los destinos de entrega a los que se aplica la política se aplica (las
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 de manera forzosa. 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 la 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
Selectores, definidos en la política de implementación configuraciones, determinan qué canalizaciones y destinos de entrega se ven afectados por una regla determinada.
Se define un selector en una estrofa selectors
en la política de implementación
de Terraform 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. Puedes
usar etiquetas para que coincidan
con las canalizaciones de entrega, los destinos o ambos.
Dentro de un selector determinado, los elementos se combinan con el operador Y. Múltiples selectores usan OR. Es decir, para que una solicitud determinada esté restringida por la política, debe aplicarse a al menos un selector. Pero dentro de ese selector, la solicitud debe coincidir elementos.
Implementa reglas de políticas
Cada política de implementación incluye una o más reglas de política, que definen qué acción está restringido en la canalización de entrega o destino seleccionado. 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
se realiza en destinos seleccionados que usan las canalizaciones de entrega seleccionadas. Esta regla
usa un período que define cuándo no se puede crear un lanzamiento para la
canalización de entrega y destino 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.
Las siguientes acciones se pueden restringir mientras la regla esté vigente:
ADVANCE
Las fases de lanzamiento no pueden ser avanzadas.
APPROVE
No se puede aprobar la promoción del 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 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 la fecha y bloques de tiempo para especificar períodos recurrentes y no repetitivos durante los cuales la política de implementación está vigente.
Los siguientes son los requisitos para expresar la fecha y la hora:
Las fechas se expresan como
yyyy-mm-dd
.Al expresar la hora del día, el inicio del día es
00:00
y el final de la día es24:00
.En
oneTimeWindows
, las fechas deben incluir la hora. DuranteweeklyWindows
, puedes omitir la hora del día. Pero 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 esto:
- daysOfWeek: [SUNDAY] startTime: "00:00"
Debes incluir una zona horaria en la estrofa
timeWindows
.Por ejemplo:
timeZone: America/New_York
.
Ventanas de tiempo no repetidas
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 repetitivas se configuran con una estrofa oneTimeWindows
.
Ventanas de tiempo de repetición
Un período de tiempo repetido describe un bloque de tiempo repetido durante el cual quieren restringir lanzamientos. Por ejemplo, puedes usar esta función para restringir los lanzamientos durante los fines de semana.
Las ventanas de tiempo de repetición 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 quieres detener los lanzamientos en algún momento del año, puedes
configura un bloque oneTimeWindows
para hacerlo. Si las fechas son predecibles, desde
año a año, aún debes 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"
En este YAML, se describe un período desde el 22 de diciembre de 2024 a las 5 p.m. hasta enero de 2025 a las 9 a.m.
Congelación de fin de semana repetida
En el siguiente YAML, se muestra un período 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"
Actualizar 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 localmente y editarlo ahí.
Aplica ese archivo, con
gcloud deploy apply --filename=
.Esto actualiza el recurso de política de implementación con la nueva configuración.
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 bloque restrictRollouts
durante todo el mes del
de diciembre y el 14 de diciembre, actualizas la política para que la restricción finalice
del 15 de diciembre, se dejan de bloquear los lanzamientos 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 las
clouddeploy.deployPolicies.override
.
Puedes anular la política desde la CLI de gcloud 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 bloqueando 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 sea
evitado por esa política. 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.
Abrir la página Implementa políticas
La página incluye una lista de las políticas de implementación disponibles en tu proyecto actual, si corresponde.
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.
Ahora se borrará la política, y podrás realizar cualquiera de las acciones que se la política restringida.
gcloud CLI
Para borrar una política de implementación con la CLI de gcloud, 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, tal 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, el registro de la plataforma se crean entradas para las siguientes acciones:
Evaluación de política
Los registros de plataforma se escriben cuando se evalúa una solicitud y esta infringe la política. También se escribe un registro cuando una solicitud infringe la política, pero se permite porque la política se suspendió o se anuló. Ningún registro es se escribe cuando se otorga la solicitud porque la política no está infringida.
Falla de la notificación de Pub/Sub cuando se cambia una política de implementación recurso.
¿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 más información sobre la automatización de implementaciones de Cloud Deploy.