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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. Substitua a política de implementação.

    Esta substituição faz com que o Cloud Deploy crie agora a implementação para o destino.

  7. 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

  1. 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.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  7. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  8. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  13. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  14. Se já tiver a CLI Google Cloud instalada, certifique-se de que está a executar a versão mais recente:

    gcloud components update
    
  15. 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.

    1. 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"
      
    2. 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"
        

    3. Adicione a função iam.serviceAccountUser, que inclui a autorização actAspara 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
      

    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.

    1. Abra uma janela de terminal.

    2. Crie um novo diretório e navegue para o mesmo.

      mkdir deploy-policy-quickstart
      cd deploy-policy-quickstart
      
    3. Crie um ficheiro denominado skaffold.yaml com o seguinte conteúdo:

      GKE

      apiVersion: skaffold/v4beta1
      kind: Config
      manifests:
        rawYaml:
        - k8s-pod.yaml
      deploy:
        kubectl: