Use uma política de implementação para restringir implementações
Este início rápido mostra como impedir implementações do Cloud Deploy num destino durante um período especificado e como substituir essa restrição.
Neste início rápido, vai fazer o seguinte:
Crie uma configuração do Skaffold e um manifesto do Kubernetes ou uma definição do serviço do Cloud Run para especificar a imagem do contentor (pré-criada) a implementar.
Defina o pipeline de entrega do Cloud Deploy e um destino de implementação, que aponta para um cluster do GKE ou um serviço do Cloud Run.
Este pipeline inclui apenas uma fase para o único objetivo.
Configure uma política de implementação para um alvo.
A política define um intervalo de datas durante o qual as implementações para esse destino são proibidas.
Crie um lançamento.
Normalmente, quando cria um lançamento, o Cloud Deploy cria uma implementação para o primeiro destino na progressão do pipeline de entrega. Neste caso, uma vez que existe uma política que impede a implementação no destino, a implementação para esse destino não é criada.
Veja os resultados na Google Cloud consola.
Devido à política, não vai ver uma implementação para o lançamento e não existe nenhuma ação pendente na visualização do pipeline de entrega.
Substitua a política de implementação.
Esta substituição faz com que o Cloud Deploy crie agora a implementação para o destino.
Veja os resultados na Google Cloud consola.
Uma vez que a política foi substituída, pode ver que existe uma implementação em curso (ou concluída, se tiver passado tempo suficiente).
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Deploy, Cloud Build, GKE, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Deploy, Cloud Build, GKE, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init - Certifique-se de que a conta de serviço predefinida do Compute Engine tem autorizações suficientes.
A conta de serviço pode já ter as autorizações necessárias. Estes passos são incluídos para projetos que desativam as concessões de funções automáticas para contas de serviço predefinidas.
- Primeiro, adicione a função
clouddeploy.jobRunner:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/clouddeploy.jobRunner" - Adicione a função de programador para o seu tempo de execução específico.
- Para o GKE:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/container.developer" - Para o Cloud Run:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/run.developer" -
Adicione a função
iam.serviceAccountUser, que inclui a autorizaçãoactAspara implementar no tempo de execução:gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/iam.serviceAccountUser" \ --project=PROJECT_ID Abra uma janela de terminal.
Crie um novo diretório e navegue para o mesmo.
mkdir deploy-policy-quickstart cd deploy-policy-quickstartCrie um ficheiro denominado
skaffold.yamlcom o seguinte conteúdo:GKE
apiVersion: skaffold/v4beta1 kind: Config manifests: rawYaml: - k8s-pod.yaml deploy: kubectl:
Se já tiver a CLI Google Cloud instalada, certifique-se de que está a executar a versão mais recente:
gcloud components update
Crie o seu ambiente de tempo de execução
Se estiver a implementar no Cloud Run, pode ignorar este comando.
Para o GKE, crie um cluster: quickstart-cluster-qsprod.
O ponto final da API Kubernetes do cluster tem de ser acessível através da rede a partir da Internet pública. Os clusters do GKE são acessíveis externamente por predefinição.
gcloud container clusters create-auto quickstart-cluster-qsprod \
--project=PROJECT_ID \
--region=us-central1
Prepare a configuração do Skaffold e o manifesto da aplicação
O Cloud Deploy usa o Skaffold para fornecer os detalhes do que implementar e como o implementar no seu destino.
Neste início rápido, cria um ficheiro skaffold.yaml, que identifica o manifesto do Kubernetes a usar para implementar a app de exemplo.