Implantar um app no Cloud Run usando o Cloud Deploy

Nesta página, mostramos como usar o Cloud Deploy para enviar uma imagem de aplicativo de amostra chamada hello para uma sequência de dois serviços do Cloud Run, dois jobs do Cloud Run ou dois pools de workers do Cloud Run.

Neste guia de início rápido, você fará o seguinte:

  1. Criar uma configuração do Skaffold

  2. Criar arquivos de configuração para dois serviços do Cloud Run, dois jobs ou dois pools de workers.

    Esses arquivos definem os serviços ou jobs e especificam as imagens de contêiner (pré-criadas) a serem implantadas.

  3. Definir o pipeline de entrega e os destinos de implantação do Cloud Deploy, que apontam para os dois serviços, os dois jobs ou os dois pools de workers.

  4. Instanciar o pipeline de entrega criando uma versão, que implanta automaticamente no primeiro destino.

  5. Promover a versão para a segunda segmentação.

  6. Visualizar os dois lançamentos no Google Cloud console.

Antes de começar

  1. Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloudagora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
  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. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

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

  5. Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  6. Instale a Google Cloud CLI.

  7. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

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

    gcloud init
  9. 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

  10. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

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

  12. Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  13. Instale a Google Cloud CLI.

  14. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

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

    gcloud init

Funções exigidas

Para garantir que a conta de serviço do Cloud Deploy tenha as permissões necessárias para executar operações do Cloud Deploy e implantar no Cloud Run, peça ao administrador para conceder os seguintes papéis do IAM à conta de serviço do Cloud Deploy no seu projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

O administrador também pode conceder à conta de serviço do Cloud Deploy as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Preparar a configuração do Skaffold

O Cloud Deploy usa Skaffold para fornecer detalhes sobre o que implantar e como implantá-lo corretamente para seus destinos separados.

Para este guia de início rápido, você cria um arquivo skaffold.yaml, que identifica a definição de serviço ou job do Cloud Run a ser usada para implantar o app de exemplo.

  1. Abra uma janela do terminal.

  2. Crie um novo diretório chamado deploy-run-quickstart e navegue até ele.

    mkdir deploy-run-quickstart
    cd deploy-run-quickstart
    
  3. Crie um arquivo chamado skaffold.yaml com o seguinte conteúdo:

    Serviços

    apiVersion: skaffold/v4beta7
    kind: Config
    metadata: 
      name: deploy-run-quickstart
    profiles:
    - name: dev
      manifests:
        rawYaml:
        - run-service-dev.yaml
    - name: prod
      manifests:
        rawYaml:
        - run-service-prod.yaml
    deploy:
      cloudrun: {}
    

    Jobs

    apiVersion: skaffold/v4beta7
    kind: Config
    metadata: 
      name: deploy-run-quickstart
    profiles:
    - name: dev
      manifests:
        rawYaml:
        - run-job-dev.yaml
    - name: prod
      manifests:
        rawYaml:
        - run-job-prod.yaml
    deploy:
      cloudrun: {}
    

    Pools de workers

    apiVersion: skaffold/v4beta7
    kind: Config
    metadata:
      name: deploy-run-quickstart
    profiles:
    - name: dev
      manifests:
        rawYaml:
        - run-worker-pool-dev.yaml
    - name: prod
      manifests:
        rawYaml:
        - run-worker-pool-prod.yaml
    deploy:
      cloudrun: {}
    

    Esse arquivo é uma configuração mínima do Skaffold, que identifica seus serviços, jobs ou pools de workers do Cloud Run. Consulte a skaffold.yaml referência para mais informações sobre esse arquivo.

Preparar os serviços, jobs ou pools de workers do Cloud Run

Para este guia de início rápido, você vai criar dois serviços do Cloud Run, dois jobs do Cloud Run ou dois pools de workers do Cloud Run diferentes no mesmo projeto. O Cloud Deploy também oferece suporte à implantação em vários projetos. Além disso, usamos perfis do Skaffold para permitir que dois serviços, jobs ou pools de workers estejam no mesmo projeto. Ao usar projetos diferentes, talvez não seja necessário usar perfis do Skaffold.

Serviços

  1. Crie um arquivo chamado run-service-dev.yaml com o seguinte conteúdo:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: deploy-run-service-dev
    spec:
      template:
        spec:
          containers:
          - image: my-app-image
    

    Esse arquivo define um serviço do Cloud Run. Como o nome deploy-run-service-dev implica, esse é o serviço dev e corresponde ao primeiro destino na progressão do pipeline de entrega.

  2. Crie um arquivo chamado run-service-prod.yaml com o seguinte conteúdo:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: deploy-run-service-prod
    spec:
      template:
        spec:
          containers:
          - image: my-app-image
    

    Esse arquivo define outro serviço do Cloud Run e, como o nome deploy-run-service-prod implica, esse é o serviço prod e corresponde ao segundo destino na progressão do pipeline de entrega.

Esses arquivos são definições de serviço do Cloud Run, que são usadas para implantar o aplicativo. A imagem do contêiner a ser implantada é definida aqui como um marcador de posição, my-app-image, que é substituído pela imagem específica quando você cria a versão.

Jobs

  1. Crie um arquivo chamado run-job-dev.yaml com o seguinte conteúdo:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: deploy-run-job-dev
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: my-app-image
    

    Esse arquivo define um job do Cloud Run. Como o nome deploy-run-job-dev implica, esse é o job dev e corresponde a o primeiro destino na progressão do pipeline de entrega.

  2. Crie um arquivo chamado run-job-prod.yaml com o seguinte conteúdo:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: deploy-run-job-prod
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: my-app-image
    

    Esse arquivo define outro job do Cloud Run. Como o nome deploy-run-job-prod implica, esse é o job prod e corresponde ao segundo destino na progressão do pipeline de entrega.