Este documento descreve como usar políticas de implantação para restringir ações manuais ou automatizadas do pipeline de envio.
Uma política de implantação é um recurso do Cloud Deploy que pode ser usado para restringir ações manuais ou automáticas em um pipeline ou destino de entrega selecionado (ou em todos os pipelines ou destinos).
Qual comportamento pode ser restrito?
É possível criar políticas de implantação para restringir ou impedir que o Cloud Deploy execute determinadas ações nos lançamentos. Por exemplo, uma política pode impedir a criação de um lançamento para um determinado pipeline de entrega durante um período especificado. Você pode usar isso para restrições sazonais, por exemplo.
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 a conta de usuário ou de serviço não tiver as permissões adequadas do IAM, a ação não será realizada e não será necessário avaliar as políticas de implantação.
Verifica se há uma política aplicável para o pipeline de destino ou de entrega. Se houver, a política será 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
.timeWindows
Consulte Datas e horários 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.
Papéis e permissões 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 a
permissã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:
Adicione uma referência aos pipelines de entrega e destinos a que a política se aplica (
selectors
).Consulte Implantar seletores de política e a 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 a 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
Os seletores, definidos nas configurações da política de implantação, determinam quais pipelines de envio e destinos são afetados por uma determinada regra.
Um seletor é definido em uma estrofe selectors
na configuração da política de implantação
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. Também é possível
usar rótulos para corresponder a pipelines de entrega ou destinos ou ambos.
Em um determinado seletor, os itens são combinados com AND. Vários seletores são combinados com a operação OR. Ou seja, para que uma solicitação seja restrita pela política, ela precisa ser aplicada a pelo menos um seletor. No entanto, dentro desse seletor, a solicitação precisa corresponder a todos os itens.
Implantar regras de política
Cada política de implantação inclui uma ou mais regras, que definem qual ação é restrita no pipeline de entrega ou no destino selecionado. A regra também define em quais circunstâncias ela é 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. É possível criar uma versão se uma política estiver impedindo essa ação, mas essa 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 refeitos.
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 blocos de data e hora para especificar janelas de tempo recorrentes e não recorrentes em que a 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
.Para
oneTimeWindows
, as datas precisam incluir a hora. ParaweeklyWindows
, você pode omitir o horário. No entanto, se você incluirstartTime
, também precisará 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 este:
- daysOfWeek: [SUNDAY] startTime: "00:00"
É necessário incluir um fuso horário na estrofe
timeWindows
.Por exemplo,
timeZone: America/New_York
.
Janelas de tempo não recorrentes
Uma janela de tempo não recorrente começa e termina em um dia e horário específicos. Você usaria isso para qualquer período em que você quer restringir os lançamentos.
As janelas de tempo não recorrentes são configuradas usando uma estrofe 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 recorrentes são configuradas usando uma estrofe weeklyWindows
.
Exemplos
Esta seção contém alguns exemplos de uso de datas e horários para configurar quando uma política de implantação é aplicada.
Pausa anual
Se houver um período do ano em que você quiser congelar os lançamentos, é possível
configurar um bloco oneTimeWindows
para fazer isso. Se as datas forem previsíveis, de
ano para ano, ainda será necessário usar vários blocos oneTimeWindow
.
O YAML a seguir mostra uma janela de tempo única (não repetida) para aplicar uma política de implantação para um 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 de 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 acessar a configuração YAML selecionando a guia YAML na página Detalhes da política de implantação. 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
É possível 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 lançamento, você poderá substituir essa política para reverter o lançamento incorreto.
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 uma 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 está bloqueando essa 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
versão, substituindo uma política de implantação específica que impediria
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 "Implementar políticas"
A página inclui uma lista das políticas de implantação disponíveis no seu projeto atual, se houver.
Selecione o botão
Ações da política que você quer excluir e clique em Excluir política de implantação.Confirme a exclusão digitando o nome da política de implantaçã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 da política.
[PROJECT]
O ID do projeto do Google Cloud em que você criou a 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 estarã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 da 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 a solicitação é permitida porque a política está suspensa ou foi substituída. Nenhum registro é gravado quando a solicitação é concedida porque a política não é violada.
Falha na notificação do Pub/Sub ao mudar um recurso de política de implantação.
A seguir
Consulte o Esquema do arquivo de configuração para saber como configurar políticas de implantação.
Saiba mais sobre a automação de implantação do Cloud Deploy.