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 em um pipeline ou destino de entrega selecionado (ou todos os pipelines ou destinos).
Quais comportamentos podem ser restritos?
É possível criar políticas de implantação para restringir ou impedir que o Cloud Deploy execute determinadas ações em 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. Por exemplo, você pode usar isso 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 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 a meta ou o pipeline de entrega e, em caso afirmativo, a política é avaliada.
O Cloud Deploy avalia a ação realizada para verificar 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 para saber 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 entrega ou ao destino e à ação, a 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 regra precisam ser exclusivos em uma política de implantação.
Cada regra precisa ter pelo menos um
timeWindows, e dentro dessetimeWindows, é necessário haver umoneTimeWindowsou umweeklyWindows.Consulte Datas e horários para mais detalhes sobre como usar blocos de tempo.
Você pode ter no máximo 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 de política:
clouddeploy.deployPolicies.createclouddeploy.deployPolicies.deleteclouddeploy.deployPolicies.getclouddeploy.deployPolicies.listclouddeploy.deployPolicies.updateclouddeploy.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 (o
selectors).Consulte Implantar seletores de políticas e a Referência do esquema de configuração para mais informações sobre seletores de políticas 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 para criar a política:
gcloud deploy apply --file=FILENAME \ --region=REGION \ --project=PROJECT_IDEm que
FILENAMEé o nome do arquivo YAML que contém sua definição deDeployPolicy,REGIONé a região em que você quer criar o recurso de política de implantação ePROJECT_IDé o projeto em que você quer criar o recurso.
Os pipelines ou destinos de entrega referenciados agora estão restritos de acordo com as regras no recurso "deploy-policy".
Implantar seletores de política
Os seletores, definidos nas configurações da política de implantação, determinam quais pipelines de entrega 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 (nos dois casos,
metadata.name).
É possível usar id: * para selecionar todos os pipelines de entrega ou todos os destinos. Observação: * é um valor de campo especial para selecionar tudo. Não há suporte para caracteres curinga arbitrários. 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 do tipo OR. Ou seja, para que uma determinada solicitação seja restrita pela política, ela precisa se aplicar a pelo menos um seletor. Mas, 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 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 entrega 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 selecionados. Consulte Datas e horários para uma descrição de como eles são especificados nas regras de política de implantação.
As seguintes ações podem ser restritas enquanto a regra estiver em vigor:
ADVANCENão é possível avançar as fases de lançamento.
APPROVENão é possível aprovar a promoção de lançamento.
CANCELNão é possível cancelar os lançamentos.
CREATENão é possível criar lançamentos. Você pode 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_JOBNão é possível ignorar jobs.
RETRY_JOBNão é possível tentar novamente os jobs.
ROLLBACKNão é possível reverter os lançamentos.
TERMINATE_JOBRUNNão é possível encerrar as execuções de jobs
Consulte a Referência do esquema de configuração para 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 durante as quais 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 período do dia, o início do dia é
00:00, e o fim do dia é24:00.Para
oneTimeWindows, as datas precisam incluir o horário. ParaweeklyWindows, você pode omitir o horário do dia. Mas se você incluirstartTime, também precisará incluirendTime, e vice-versa.Por exemplo, um congelamento 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"Você precisa incluir um fuso horário na estrofe
timeWindows.Por exemplo,
timeZone: America/New_York.
Janelas de tempo não recorrentes
Um período não recorrente começa e termina em um dia e horário específicos. Use isso para qualquer período em que você queira 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 repetido em que você quer restringir os lançamentos. Por exemplo, você pode usar isso para restringir implantações nos fins de semana.
Os períodos recorrentes são configurados usando uma seção weeklyWindows.
Exemplos
Esta seção contém alguns exemplos de como usar datas e horários para configurar quando uma política de implantação é aplicada.
Congelamento anual
Se houver uma época do ano em que você quer congelar os lançamentos, configure 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 recorrente) 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 um período de 22 de dezembro de 2024, às 17h, até 2 de janeiro de 2025, às 9h.
Congelamento repetido 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 rollouts nos fins de semana, de sexta-feira às 17h até segunda-feira à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 Google Cloud , acesse a configuração YAML selecionando a guia YAML na página Detalhes da política de implantação. Em seguida, copie o texto para um arquivo local e edite-o lá.
Aplique esse arquivo para atualizar a política:
gcloud deploy apply --file=FILENAME \ --region=REGION \ --project=PROJECT_IDIsso 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 essas ações em todos os recursos do Cloud Deploy estão sujeitas à política atualizada. Ou seja, não há remanescente das restrições anteriores.
Por exemplo, se você tiver um bloqueio de 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 fazer um rollback, mas houver uma política de implantação impedindo qualquer lançamento, é possível substituir essa política para reverter do lançamento incorreto.
Para substituir uma política de implantação, você precisa ter a
permissão do IAM clouddeploy.deployPolicies.override.
É possível substituir a política na CLI gcloud ou usando o consoleGoogle Cloud :
Console
No console Google Cloud , tente realizar uma ação bloqueada por uma política.
Uma caixa de diálogo aparece 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á impedindo 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 a
--override-deploy-policies ao comando de 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, de outra forma, 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 Google Cloud , acesse a página Políticas de implantação do Cloud Deploy.
Abra 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 o botão Ações da política que você quer excluir e clique em 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 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 de política de implantação, os pipelines de entrega e 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.
Registro em registros da política de implantação
Quando uma política de implantação é avaliada, entradas de 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 ela é 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 mais detalhes sobre como configurar políticas de implantação.
Saiba mais sobre a automação de implantação do Cloud Deploy.