Implemente uma app no Cloud Run através do Cloud Deploy

Esta página mostra como usar o Cloud Deploy para entregar uma imagem de aplicação de exemplo denominada hello a uma sequência de dois serviços do Cloud Run ou dois trabalhos do Cloud Run.

Neste início rápido, vai fazer o seguinte:

  1. Crie uma configuração do Skaffold

  2. Crie ficheiros de configuração para dois serviços do Cloud Run ou dois trabalhos.

    Estes ficheiros definem os serviços ou as tarefas e especificam as imagens de contentores (pré-criadas) a implementar.

  3. Defina o pipeline de entrega e os destinos de implementação do Cloud Deploy, que apontam para os dois serviços ou os dois trabalhos.

  4. Instancie a sua pipeline de entrega criando um lançamento, que é implementado automaticamente no primeiro destino.

  5. Promova o lançamento para o segundo destino.

  6. Veja ambas as implementações na Google Cloud consola.

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.

    Go to project selector

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

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

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem 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.

    Go to project selector

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

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

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem 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 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 estão incluídos para projetos que desativam as concessões de funções automáticas para contas de serviço predefinidas.

    1. 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. Conceda à conta de serviço de execução predefinida a actAs autorização para implementar cargas de trabalho no Cloud Run:

      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
      

    3. Adicione as autorizações de programador do 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"
      

      Se tiver problemas em adicionar qualquer uma destas funções, contacte o administrador do projeto.

    Prepare a configuração do Skaffold

    O Cloud Deploy usa o Skaffold para fornecer os detalhes sobre o que implementar e como o implementar corretamente para os seus alvos separados.

    Para este início rápido, cria um ficheiro skaffold.yaml, que identifica o serviço ou a definição de tarefa do Cloud Run a usar para implementar a app de exemplo.

    1. Abra uma janela de terminal.

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

      mkdir deploy-run-quickstart
      cd deploy-run-quickstart
      
    3. Crie um ficheiro denominado 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: {}
      

      Empregos

      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: {}
      

      Este ficheiro é uma configuração mínima do Skaffold que identifica os seus serviços ou tarefas do Cloud Run. Consulte a skaffold.yaml referência para mais informações sobre este ficheiro.

    Prepare os seus serviços ou trabalhos do Cloud Run

    Para este início rápido, vai criar dois serviços do Cloud Run ou dois trabalhos do Cloud Run diferentes no mesmo projeto. O Cloud Deploy também suporta a implementação em vários projetos. Além disso, usamos perfis do Skaffold para tornar possível ter dois serviços ou tarefas no mesmo projeto. Quando usa diferentes projetos, pode não precisar de usar perfis do Skaffold.

    Serviços

    1. Crie um ficheiro denominado 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
      

      Este ficheiro define um serviço do Cloud Run. Como o nome deploy-run-service-dev implica, este é o seu serviço dev e corresponde ao primeiro alvo na progressão da sua pipeline de entrega.

    2. Crie um ficheiro denominado 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
      

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

    Estes ficheiros são definições simples do serviço Cloud Run, que são usadas para implementar a aplicação. A imagem do contentor a implementar é definida aqui como um marcador de posição, my-app-image, que é substituído pela imagem específica quando cria a versão.

    Empregos

    1. Crie um ficheiro denominado 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
      

      Este ficheiro define uma tarefa do Cloud Run. Como o nome deploy-run-job-dev sugere, este é o seu trabalho dev e corresponde ao primeiro destino na progressão da sua pipeline de fornecimento.

    2. Crie um ficheiro denominado 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
      

      Este ficheiro define outra tarefa do Cloud Run. Como o nome deploy-run-job-prod implica, este é o seu trabalho prod e corresponde ao segundo alvo na progressão da sua pipeline de entrega.

    Estes ficheiros são definições de tarefas do Cloud Run simples, que são usadas para implementar a aplicação. A imagem do contentor a implementar é definida aqui como um marcador de posição, my-app-image, que é substituído pela imagem específica quando cria a versão.

    Crie o seu pipeline de entrega e segmentações

    Pode definir o seu pipeline e alvos num ficheiro ou em ficheiros separados. Neste início rápido, vai criar um único ficheiro.

    1. No diretório deploy-run-quickstart, crie um novo ficheiro: clouddeploy.yaml, com o seguinte conteúdo:

      apiVersion: deploy.cloud.google.com/v1
      kind: DeliveryPipeline
      metadata:
        name: my-run-demo-app-1
      description: main application pipeline
      serialPipeline:
        stages:
        - targetId: run-qsdev
          profiles: [dev]
        - targetId: run-qsprod
          profiles: [prod]
      ---
      
      apiVersion: deploy.cloud.google.com/v1
      kind: Target
      metadata:
        name: run-qsdev
      description: Cloud Run development service
      run:
        location: projects/PROJECT_ID/locations/us-central1
      ---
      
      apiVersion: deploy.cloud.google.com/v1
      kind: Target
      metadata:
        name: run-qsprod
      description: Cloud Run production service
      run:
        location: projects/PROJECT_ID/locations/us-central1
      
    2. Registe o pipeline e os destinos no serviço Cloud Deploy:

      gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
      

      Agora, tem um pipeline com alvos pronto para implementar a sua aplicação no primeiro alvo.

    3. Confirme o seu pipeline e alvos:

      Na Google Cloud consola, navegue para a página Cloud Deploy Pipelines de entrega para ver uma lista dos pipelines de entrega disponíveis.

      Abra a página Pipelines de fornecimento

      É apresentada a pipeline de fornecimento que acabou de criar e os dois alvos são apresentados na coluna Alvos.

      Pipeline de entrega apresentado na consola Google Cloud

    Crie um lançamento

    Um lançamento é o recurso central do Cloud Deploy que representa as alterações que estão a ser implementadas. O pipeline de fornecimento define o ciclo de vida dessa versão. Consulte a secção Arquitetura do serviço Cloud Deploy para ver detalhes sobre esse ciclo de vida.

    Execute o seguinte comando a partir do diretório deploy-run-quickstart para criar um recurso release que represente a imagem do contentor a implementar:

    Serviços

     gcloud deploy releases create test-release-001 \
       --project=PROJECT_ID \
       --region=us-central1 \
       --delivery-pipeline=my-run-demo-app-1 \
       --images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
    

    Empregos

     gcloud deploy releases create test-release-001 \
       --project=PROJECT_ID \
       --region=us-central1 \
       --delivery-pipeline=my-run-demo-app-1 \
       --images=my-app-image=us-docker.pkg.dev/cloudrun/container/job@sha256:8eb3f5e72586de6375abe95aa67511c57c61d35fb37d5670e4d68624a68ef916
    

    Repare na flag --images=, que usa para substituir o marcador de posição (my-app-image) na definição de serviço ou tarefa pela imagem específica qualificada por SHA. A Google recomenda que crie modelos para as definições de serviços e tarefas desta forma e que use nomes de imagens qualificados por SHA na criação de lançamentos.

    Tal como acontece com todos os lançamentos (a menos que incluam --disable-initial-rollout), o Cloud Deploy também cria automaticamente um recurso de implementação. A aplicação é implementada automaticamente no primeiro alvo na progressão.

    Promova o lançamento

    1. Na página Caminhos de fornecimento, clique no caminho my-run-demo-app-1.

      Abra a página Pipelines de fornecimento

      A página de detalhes do pipeline de fornecimento mostra uma representação gráfica do progresso do pipeline de fornecimento. Neste caso, mostra que o lançamento foi implementado no destino run-qsdev.

      visualização do pipeline de entrega na consola Google Cloud

    2. No primeiro alvo na visualização do pipeline de fornecimento, clique em Promover.

      É apresentada a caixa de diálogo Promover lançamento. Mostra os detalhes do destino que está a promover.

    3. Clique em Promover.

      O lançamento está agora na fila para implementação no run-qsprod. Quando a implementação estiver concluída, a visualização do pipeline de entrega mostra que foi implementada:

      Visualização do pipeline de fornecimento na consola Google Cloud , que mostra o lançamento implementado na produção.

    Veja os resultados na Google Cloud consola

    1. Na Google Cloud consola, navegue para a página Cloud Deploy Pipelines de fornecimento para ver o pipeline de fornecimento my-run-demo-app-1.

      Abra a página Pipelines de fornecimento

    2. Clique no nome do pipeline de fornecimento "my-run-demo-app-1".

      A visualização do pipeline mostra o progresso da app no pipeline.

      Visualização do pipeline de entrega na consola Google Cloud

      O lançamento é apresentado no separador Lançamentos em Detalhes do pipeline de envio.

    3. Clique no nome do lançamento, test-release-001.

      As implementações são apresentadas em Implementações. Pode clicar numa implementação para ver os respetivos detalhes, incluindo o registo de implementação.

      Implementações na consola Google Cloud

    Aceder ao seu serviço do Cloud Run

    Por predefinição, tem de ter autenticação para aceder aos serviços do Cloud Run criados recentemente. Consulte a vista geral da autenticação do Cloud Run para saber como fornecer credenciais e que configuração da gestão de identidade e de acesso é necessária para aceder ao serviço sem autenticação. Isto não se aplica a tarefas do Cloud Run.

    Limpar

    Para evitar incorrer em cobranças na sua Google Cloud conta pelos recursos usados nesta página, siga estes passos.

    1. Elimine o serviço ou a tarefa do deploy-qs-dev Cloud Run:

      Serviços

      gcloud run services delete deploy-run-service-dev --region=us-central1 --project=PROJECT_ID
      

      Empregos

      gcloud run jobs delete deploy-run-job-dev --region=us-central1 --project=PROJECT_ID
      
    2. Elimine o serviço deploy-qs-prod:

      Serviços

      gcloud run services delete deploy-run-service-prod --region=us-central1 --project=PROJECT_ID
      

      Empregos

      gcloud run jobs delete deploy-run-job-prod --region=us-central1 --project=PROJECT_ID
      
    3. Elimine o pipeline de envio, os destinos, o lançamento e as implementações:

      gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_ID
      
    4. Elimine os contentores do Cloud Storage que o Cloud Deploy criou.

      Uma termina com _clouddeploy e a outra é [region].deploy-artifacts.[project].appspot.com.

      Abra a página do navegador do Cloud Storage

    É tudo. Concluiu este início rápido!

    O que se segue?