Este documento descreve como usar políticas de implantação para restringir ações manuais ou automatizadas do pipeline de entrega.
Uma política de implantação é um recurso do Cloud Deploy que pode ser usado para restringir ações manuais ou automáticas contra um pipeline de entrega ou destino selecionado (ou todos os pipelines ou destinos).
Qual comportamento pode ser restrito?
É possível criar políticas de implantação para restringir ou impedir o Cloud Deploy de executar certas ações em lançamentos. Por exemplo, uma política pode impedir criação de lançamento para um determinado pipeline de entrega durante um período especificado. Você pode usar isso, por exemplo, para restrições sazonais.
Como as políticas são avaliadas e aplicadas
Para qualquer ação manual ou automatizada, o Cloud Deploy faz o seguinte:
Verifica as permissões do Identity and Access Management.
Se o usuário ou a conta de serviço não tiver IAM adequado permissões, a ação não é realizada e não há necessidade de avaliar políticas.
Verifica se há uma política aplicável ao destino ou à exibição pipeline e, se houver, a política é avaliada.
O Cloud Deploy avalia a ação que está sendo realizada para saber se essa regra é aplicável.
Ou seja, o tipo de ação e o invocador correspondem à política?
O Cloud Deploy verifica os intervalos de data e hora definidos para a política e verifica se ela está em vigor no momento da solicitação.
Se a política estiver em vigor e a regra se aplicar ao pipeline de envio ou ao destino e à ação, essa regra será aplicada e a ação será bloqueada.
Requisitos e limitações
Cada política precisa ter pelo menos um seletor.
Cada política precisa ter pelo menos uma regra.
Todos os IDs de regras precisam ser exclusivos em uma política de implantação.
Cada regra precisa ter pelo menos um
timeWindows
e, dentro dele, umoneTimeWindows
ou umweeklyWindows
.Consulte Datas e horas para mais detalhes sobre o uso de blocos de tempo.
Não é possível ter mais de 1.000 políticas de implantação por projeto/local.
Permissões e papéis do Identity and Access Management necessários
Além das permissões necessárias para executar qualquer pipeline de entrega do Cloud Deploy e realizar as tarefas que seriam restritas pela política, há várias permissões necessárias para realizar determinadas operações no recurso da política:
clouddeploy.deployPolicies.create
clouddeploy.deployPolicies.delete
clouddeploy.deployPolicies.get
clouddeploy.deployPolicies.list
clouddeploy.deployPolicies.update
clouddeploy.deployPolicies.override
Essas permissões estão incluídas no papel roles/clouddeploy.policyAdmin
.
Além disso, o papel roles/clouddeploy.policyOverrider
inclui o
.override
.
Criar uma política de implantação
A criação de um recurso de política de implantação consiste nas seguintes etapas:
Crie um arquivo YAML com a configuração da política de implantação.
A configuração inclui um cabeçalho, que identifica o recurso como uma política de implantação. O
name
é obrigatório.apiVersion: deploy.cloud.google.com/v1 kind: DeployPolicy metadata: name: description:
Adiciona uma referência aos pipelines e destinos de entrega aos quais a política se aplicar (a
selectors
).Consulte Implantar seletores de política e as Referência do esquema de configuração para mais informações sobre seletores de política e como configurá-los.
Adicione uma ou mais políticas
rules
.Cada regra descreve uma restrição e as circunstâncias em que ela é aplicada. Consulte Implantar regras de política e as Referência do esquema de configuração para mais informações sobre regras de política e como configurá-las.
Aplique esse arquivo usando
gcloud deploy apply --filename=
para criar o recurso.
Os pipelines ou destinos de entrega referenciados agora são restritos de acordo com as regras no recurso de política de implantação.
Implantar seletores de política
Seletores, definidos na política de implantação configurações, determinam quais pipelines e destinos de entrega são afetados por uma regra.
Um seletor é definido em uma estrofe selectors
na política de implantação.
do Terraform, como uma propriedade de nível superior:
selectors:
- deliveryPipeline:
id:
labels:
target:
id:
labels:
Neste YAML de configuração, deliveryPipeline.id
recebe o nome do
pipeline de entrega e target.id
recebe o nome do destino (em ambos os casos,
metadata.name
).
É possível usar id: *
para selecionar todos os pipelines de entrega ou todos os destinos. Você pode
use rótulos para corresponder a pipelines de entrega, destinos ou ambos.
Em um determinado seletor, os itens são combinados com AND. Múltiplos seletores são OR. Ou seja, para que uma solicitação seja restrita pela política, ela precisa ser aplicada a pelo menos um seletor. Mas, dentro desse seletor, a solicitação deve corresponder a todas itens.
Implantar regras de políticas
Cada política de implantação inclui uma ou mais regras, que definem quais ações está restrita no pipeline de entrega ou no destino selecionado. A regra também define sob quais circunstâncias a regra é aplicada.
As seguintes regras estão disponíveis:
rolloutRestriction
A regra rolloutRestriction
impede que as ações de lançamento especificadas sejam
realizadas nos destinos selecionados usados pelos pipelines de envio selecionados. Essa regra
usa uma janela de tempo que define quando não é possível criar um lançamento para o
pipeline de entrega e o destino selecionado. Consulte Datas e horários para uma
descrição de como as datas e os horários são especificados nas regras de políticas de implantação.
As seguintes ações podem ser restritas enquanto a regra estiver em vigor:
ADVANCE
As fases de lançamento não podem ser avançadas.
APPROVE
Não é possível aprovar a promoção de lançamento.
CANCEL
Não é possível cancelar os lançamentos.
CREATE
Não é possível criar lançamentos. Você pode criar uma versão se uma política está impedindo essa ação, mas a versão não vai gerar um lançamento.
IGNORE_JOB
Os jobs não podem ser ignorados.
RETRY_JOB
Os jobs não podem ser retentativas.
ROLLBACK
Não é possível reverter as implantações.
TERMINATE_JOBRUN
As execuções de jobs não podem ser encerradas
Consulte a Referência do esquema de configuração para conferir a estrutura YAML dessa regra.
Datas e horários em uma regra rolloutRestriction
Você configura a data e blocos de tempo para especificar janelas de tempo repetidas e não repetidas durante as quais política de implantação está em vigor.
Confira a seguir os requisitos para expressar datas e horários:
As datas são expressas como
yyyy-mm-dd
.Ao expressar o horário do dia, o início do dia é
00:00
, e o fim do dia é24:00
.No campo
oneTimeWindows
, as datas precisam incluir o horário. ParaweeklyWindows
, você pode omitir a hora do dia. Mas se você incluirstartTime
, deverá incluirendTime
e vice-versa.Por exemplo, uma pausa apenas aos domingos seria assim:
- daysOfWeek: [SUNDAY] startTime: "00:00" endTime: "24:00"
Você também pode fazer o seguinte:
- daysOfWeek: [SUNDAY]
Mas não isto:
- daysOfWeek: [SUNDAY] startTime: "00:00"
É necessário incluir um fuso horário na estrofe
timeWindows
.Por exemplo,
timeZone: America/New_York
.
Janelas de tempo sem repetição
Uma janela de tempo sem repetição começa e termina em um dia e horário específicos. Você usaria isso para qualquer período em que queira restringir os lançamentos.
Janelas de tempo sem repetição são configuradas usando uma estrofe de oneTimeWindows
.
Janelas de tempo recorrentes
Uma janela de tempo recorrente descreve um bloco de tempo recorrente em que você quer restringir os lançamentos. Por exemplo, você pode usar isso para restringir as implantações nos fins de semana.
As janelas de tempo de repetição são configuradas usando uma estrofe weeklyWindows
.
Exemplos
Esta seção contém alguns exemplos de como usar datas e horas para configurar quando um política de implantação for aplicada.
Pausa anual
Se houver uma época do ano em que você deseja congelar lançamentos, é possível
configure um bloco oneTimeWindows
para fazer isso. Se as datas forem previsíveis, a partir de
ano para ano, ainda será necessário usar vários blocos de oneTimeWindow
.
O YAML a seguir mostra uma janela de tempo única (não recorrente) para aplicar uma política de implantação durante um período de congelamento anual:
timeWindows:
timeZone: "America/New_York"
oneTimeWindows:
- start: "2024-12-22 17:00"
end: "2025-01-02 09:00"
Este YAML descreve uma janela de tempo de 22 de dezembro de 2024, às 17h, até 2 de janeiro de 2025, às 9h.
Congelamento recorrente do fim de semana
O YAML a seguir mostra uma janela de tempo recorrente para aplicar uma política de implantação que restringe os lançamentos nos fins de semana, de sexta-feira às 17h até segunda-feira de manhã às 9h:
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"
Atualizar uma política de implantação
A atualização de uma política de implantação consiste nas seguintes etapas:
Edite o YAML de configuração da política.
Se você criou a política usando o console do Google Cloud, é possível a configuração do YAML selecionando a guia YAML na política de implantação página de detalhes. Em seguida, você pode copiar esse texto em um arquivo local e editá-lo nele.
Aplique esse arquivo usando
gcloud deploy apply --filename=
.Isso atualiza o recurso de política de implantação com a nova configuração.
Como as políticas de implantação são avaliadas quando a ação restrita é tentada,
todas as ações contra todos os recursos do Cloud Deploy estão sujeitas à
política atualizada. Ou seja, não há remanescentes das restrições anteriores.
Por exemplo, se você tiver um bloqueio restrictRollouts
para todo o mês de
dezembro e, em 14 de dezembro, atualizar a política para que a restrição termine
em 15 de dezembro, os lançamentos não serão mais bloqueados após essa data.
Substituir uma política de implantação
Você pode substituir uma política de implantação, se necessário. Por exemplo, se houver um problema com uma implantação em produção e você precisar revertê-la, mas houver uma política de implantação impedindo qualquer implantação, você poderá substituir essa política para reverter a implantação incorreta.
Para substituir uma política de implantação, você precisa ter a
permissão clouddeploy.deployPolicies.override
do IAM.
É possível substituir a política na CLI gcloud ou usando o console do Google Cloud:
Console
No console do Google Cloud, tente realizar uma ação bloqueada por um política.
Uma caixa de diálogo é exibida indicando que a ação está bloqueada por uma política de implantação. Essa caixa de diálogo inclui um link para a política específica que o bloqueio dessa ação.
No campo de texto fornecido, digite o nome da política e clique em Tentar substituir políticas.
Se você tiver permissão para substituir a política, o Cloud Deploy vai executar a ação.
CLI da gcloud
Para substituir uma política de implantação usando a CLI gcloud, adicione o
--override-deploy-policies
ao comando para qualquer ação que seria
impedida por essa política. Por exemplo, o comando a seguir promove uma
lançamento, substituindo uma política de implantação específica que poderia impedir
a promoção:
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
Excluir uma política de implantação
Para excluir uma política de implantação:
Console
No console do Google Cloud, acesse a página Deploy policies do Cloud Deploy.
Abrir a página "Implantar políticas"
A página inclui uma lista das políticas de implantação disponíveis no seu projeto atual, se houver.
Selecione as
Ações. da política que deseja excluir e clique no botão Excluir política de implantação.Digite o nome da política de implantação para confirmar a exclusão e clique em Confirmar.
A política foi excluída, e agora você pode realizar qualquer uma das ações que ela restringia.
CLI da gcloud
Para excluir uma política de implantação usando a CLI gcloud, execute o seguinte comando:
gcloud deploy deploy-policies delete \
--project=[PROJECT] \
--region=[REGION] \
[POLICY_NAME]
Substitua:
[POLICY_NAME]
O nome da política, conforme definido no arquivo de configuração de política.
[PROJECT]
O ID do projeto do Google Cloud em que você criou o política de implantação.
[REGION]
A região em que você criou a política de implantação.
Depois de excluir o recurso da política de implantação, os pipelines de entrega e os destinos afetados não estão mais sujeitos à política e não serão restritos, a menos que sejam afetados por outra política de implantação.
Geração de registros da política de implantação
Quando uma política de implantação é avaliada, as entradas do registro da plataforma são criadas para as seguintes ações:
Avaliação da política
Os registros de plataforma são gravados quando uma solicitação é avaliada e viola a política. Um registro também é gravado quando a política é violada por uma solicitação, mas ela é permitido porque a política está suspensa ou foi substituída. Nenhum registro é escritos quando a solicitação é concedida porque a política não foi violada.
Falha na notificação do Pub/Sub ao mudar um recurso de política de implantação.
A seguir
Consulte a Esquema do arquivo de configuração para detalhes sobre como configurar políticas de implantação.
Saiba mais sobre a automação de implantação do Cloud Deploy.