Configurar contêineres para jobs

Nesta página, descrevemos como configurar o comando e os argumentos do ponto de entrada para um job do Cloud Run.

Quando o Cloud Run inicia um contêiner, ele executa o comando entrypoint padrão e os argumentos de comando padrão da imagem. Se você quiser modificar os argumentos de ponto de entrada e comando padrão da imagem, use os campos command e args na configuração do contêiner. O campo command especifica o comando real executado pelo contêiner. O campo args especifica os argumentos passados para esse comando.

Você pode ter no máximo 1.000 argumentos por contêiner para cada job.

Nesta página, mostramos como configurar o comando, os argumentos e a ordem de inicialização dos contêineres nos jobs do Cloud Run.

Funções exigidas

Para receber as permissões necessárias para configurar jobs do Cloud Run, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o job do Cloud Run interagir com APIs doGoogle Cloud , como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.

Configurar ponto de entrada e argumentos

É possível configurar o ponto de entrada de comando e os argumentos para jobs usando o consoleGoogle Cloud , a CLI gcloud, o YAML ou o Terraform:

Console

  1. No console Google Cloud , acesse a página do Cloud Run:

    Acessar o Cloud Run

  2. Selecione Jobs no menu de navegação do Cloud Run:

    1. Se você estiver criando um job, clique em Implantar contêiner para preencher a página inicial de configurações do job.

    2. Se você estiver configurando um job, selecione-o e clique em Ler e editar a configuração do job.

  3. Clique em Contêineres, conexões, segurança para expandir a página de propriedades do job.

  4. Especifique o comando que você quer que o contêiner execute, se não for o definido no contêiner.

  5. Opcional: especifique os argumentos para o comando de ponto de entrada.

  6. Clique em Criar ou Atualizar.

gcloud

  • Para definir o comando inicial e os argumentos de um novo job, execute o seguinte comando:

    gcloud run jobs create JOB --image IMAGE_URL --command COMMAND --args ARG1,ARG_N

    Substitua:

    • JOB: o nome do seu job do Cloud Run;
    • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
    • COMMAND: o comando com que o contêiner será iniciado se você não estiver usando o comando padrão.
    • ARG1: o argumento que você está enviando para o comando do contêiner. Para mais de um argumento, use uma lista separada por vírgulas, por exemplo, --args="arg1", "arg2", "arg3". Se os argumentos contiverem vírgulas ou caracteres especiais, consulte Usar sinais de igual ou vírgulas em argumentos.
  • Para atualizar o comando e os argumentos de um job, execute o seguinte comando:

    gcloud run jobs update JOB --command COMMAND --args ARG1,ARG_N 
  • Para limpar os comandos e argumentos do ponto de entrada, execute o seguinte comando:

    gcloud run jobs update JOB --command "" --args "" 

YAML

  1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:

    gcloud run jobs describe JOB --format export > job.yaml
  2. Atualize os atributos args: e command:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE_URL
                args:
                - ARG1'
                - ARG_N
                command:
                - COMMAND
                

    Substitua:

    • JOB: o nome do seu job do Cloud Run;
    • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
    • ARG1: o argumento que você está enviando para o comando do contêiner. Se quiser, especifique outros argumentos, cada um em uma linha separada. Se os argumentos contiverem vírgulas ou caracteres especiais, consulte Usar sinais de igual ou vírgulas em argumentos.
    • COMMAND: o comando com que o contêiner será iniciado se você não estiver usando o comando padrão.
  3. Atualize a configuração do job que já existe:

    gcloud run jobs replace job.yaml

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Adicione o seguinte a um recurso google_cloud_run_v2_job na configuração do Terraform:
resource "google_cloud_run_v2_job" "default" {
 name     = "JOB"
 location = "REGION"

 template {
   template {
     containers {
       image = "us-docker.pkg.dev/cloudrun/container/job"
       command = ["COMMAND"]
       args = ["ARG1", "ARG_N"]
     }
   }
 }
}

Substitua:

  • JOB: o nome do seu job do Cloud Run;
  • REGION: a Google Cloud região. Por exemplo, europe-west1.
  • COMMAND: o comando com que o contêiner será iniciado se você não estiver usando o comando padrão.
  • ARG1: o argumento que você está enviando para o comando do contêiner. Se quiser, especifique outros argumentos. Se os argumentos contiverem vírgulas ou caracteres especiais, consulte Usar sinais de igual ou vírgulas em argumentos.

Usar sinais de igual ou vírgulas em argumentos

Se você usar sinais de igual nos argumentos, insira-os usando o seguinte formato:

gcloud run deploy  \
  --args="--repo-allowlist=github.com/example/example_demo"

Se os argumentos usarem vírgulas, consulte Como configurar variáveis de ambiente para mais detalhes sobre como fazer escape.

Definir um diretório de trabalho

O diretório de trabalho é onde o contêiner executa comandos e argumentos. É possível especificar um diretório de trabalho personalizado para o processo do contêiner durante a implantação de um serviço novo ou atual. Se não for especificado, o diretório de trabalho padrão da imagem do contêiner será usado. Para redefinir esse campo para o padrão, transmita uma string vazia ou remova o campo.

É possível definir um diretório de trabalho usando a CLI gcloud, o YAML ou o Terraform:

gcloud

Para atualizar o diretório de trabalho de um job atual, execute o seguinte comando:

gcloud run jobs update JOB --workdir WORKING_DIR

Substitua:

  • JOB: o nome do seu job do Cloud Run;
  • WORKING_DIR: diretório de trabalho do contêiner. Se não for especificado, o padrão da imagem do contêiner será usado. Para redefinir esse campo para o valor padrão, transmita uma string vazia "".

Para especificar o diretório de trabalho ao criar um job, execute o seguinte comando:

gcloud run jobs create JOB --image IMAGE_URL --workdir WORKING_DIR

Substitua:

  • JOB: o nome do seu job do Cloud Run;
  • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
  • WORKING_DIR: diretório de trabalho do contêiner. Se não for especificado, o padrão da imagem do contêiner será usado. Para redefinir esse campo para o padrão, transmita uma string vazia "".

YAML

  1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:

    gcloud run jobs describe JOB --format export > job.yaml
  2. Atualize o atributo workingDir::

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
     name: JOB
    spec:
     template:
       spec:
         template:
           spec:
             containers:
             - image: IMAGE_URL
               workingDir: WORKING_DIR
               

    Substitua:

    • JOB: o nome do seu job do Cloud Run;
    • IMAGE_URL: uma referência à imagem do contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
    • WORKING_DIR (opcional): diretório de trabalho do contêiner. Se não for especificado, o padrão do tempo de execução do contêiner será usado, o que pode ser configurado na imagem do contêiner.
  3. Atualize a configuração do job que já existe:

    gcloud run jobs replace job.yaml

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Adicione o seguinte a um recurso google_cloud_run_v2_job na configuração do Terraform:
resource "google_cloud_run_v2_job" "default" {
 name     = "JOB"
 location = "REGION"

 template {
   template {
     containers {
       image = "us-docker.pkg.dev/cloudrun/container/job"
       working_dir = WORKING_DIR
     }
   }
 }
}

Substitua:

  • JOB: o nome do seu job do Cloud Run;
  • REGION: a Google Cloud região. Por exemplo, europe-west1.
  • WORKING_DIR (opcional): diretório de trabalho do contêiner. Se não for especificado, o padrão do tempo de execução do contêiner será usado, o que pode ser configurado na imagem do contêiner.

Configurar a ordem de inicialização do contêiner para implantações sidecar

Para especificar a ordem de inicialização do contêiner em uma implantação sidecar, use o recurso de dependências de contêiner. Especifique os contêineres que têm dependências e liste os contêineres de que dependem. Os contêineres sem dependências são sempre iniciados primeiro e simultaneamente.

É possível usar o console Google Cloud , a CLI gcloud ou o YAML para especificar a ordem de inicialização:

Console

  1. No console Google Cloud , acesse a página Jobs do Cloud Run:

    Acessar o Cloud Run

  2. Se você estiver criando um novo serviço, siga estas etapas:

    1. Clique em Implantar contêiner.
    2. Especifique o nome do job, o URL do contêiner do job, a região e o número de tarefas.
    3. Clique em Contêineres, rede, segurança para abrir a seção.
    4. Configure o contêiner de job principal.
    5. Para adicionar cada contêiner secundário que você está implantando, clique em Adicionar contêiner.
    6. Se um contêiner depender de outros, use o menu Ordem de inicialização do contêiner para selecionar os contêineres que o Cloud Run precisa iniciar antes do contêiner atual.
  3. Se você estiver configurando um job, siga estas etapas:

    1. Selecione o job que você quer atualizar.
    2. Clique em Ver e editar a configuração do job.
    3. Clique em Contêineres, conexões, segurança para expandir a seção.
    4. Se um contêiner depender de outros, use o menu Ordem de inicialização do contêiner para selecionar esses contêineres.
  4. Conclua as outras configurações necessárias e clique em Criar para um novo job ou Atualizar para um job atual. Aguarde a conclusão da implantação.

gcloud

Para implantar vários contêineres em um job com uma ordem de inicialização especificada, execute o comando:

  gcloud beta run create JOB \
      --container CONTAINER_1_NAME --image='JOB_IMAGE' \
      --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \
      --container CONTAINER_3_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAMECONTAINER_2_NAME

Substitua:

  • JOB: o nome do seu job do Cloud Run;
  • CONTAINER_1_NAME: um nome para o contêiner do job principal.
  • JOB_IMAGE: uma referência à imagem do contêiner de job principal, por exemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
  • CONTAINER_2_NAME: um nome para o contêiner de arquivo secundário, por exemplo, sidecar.
  • SIDECAR_IMAGE: uma referência à imagem do contêiner secundário.

    Se você quiser configurar cada contêiner no comando de implantação, forneça a configuração de cada contêiner após os parâmetros container.

YAML

  1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:

    gcloud run jobs describe JOB --format export > job.yaml
  2. Atualize o atributo container-dependencies:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: JOB
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'
    

    Substitua:

    • CONTAINER1: o nome do primeiro contêiner que depende de um ou mais contêineres. Observe que é possível definir o nome do contêiner no YAML. O Cloud Run gerará um nome automaticamente se nenhum for especificado.
    • CONTAINER2: o nome do contêiner que precisa ser iniciado antes de CONTAINER1.
    • CONTAINER3: o nome do segundo contêiner que depende de um ou mais contêineres.

    No exemplo do snippet YAML, CONTAINER2 é iniciado primeiro, CONTAINER1 é iniciado em seguida e CONTAINER3 é iniciado por último.

  3. Crie ou atualize o serviço usando o seguinte comando:

    gcloud run jobs replace job.yaml

    Por padrão, o comando gcloud run jobs replace usa o arquivo job.yaml, se ele estiver presente.

Ver configurações do contêiner

Para ver as configurações atuais do contêiner para o job do Cloud Run, use o console Google Cloud ou a Google Cloud CLI:

Console

  1. No console do Google Cloud , acesse a página de jobs do Cloud Run:

    Acessar jobs do Cloud Run

  2. Clique no job para abrir a página Detalhes do job.

  3. Clique em Ver e editar a configuração do job.

  4. Localize a definição do contêiner nos detalhes da configuração.

gcloud

  1. Execute este comando:

    gcloud run jobs describe JOB
  2. Localize a configuração de contêiner na configuração retornada.