Configurar contêineres para instâncias

Nesta página, descrevemos como configurar o comando de ponto de entrada e os argumentos para uma instância 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.

É possível ter no máximo mil argumentos por contêiner para cada instância.

Funções exigidas

Para receber as permissões necessárias para configurar e implantar instâncias 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 a instância do Cloud Run interagir com as 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

Para modificar as configurações padrão de imagem ENTRYPOINT e CMD, defina o comando e os argumentos de ponto de entrada para uma instância do Cloud Run usando a Google Cloud CLI ou YAML:

gcloud

Para atualizar o comando e os argumentos de inicialização de uma instância, faça o seguinte:

gcloud beta run instances update INSTANCE --command COMMAND --args ARG1,ARG-N

Substitua:

  • INSTANCE: o nome da instância.
  • COMMAND: o comando com que o contêiner é iniciado, se você não estiver usando o comando padrão.
  • ARG1: o argumento que você está enviando para o comando do contêiner. Use uma lista delimitada por vírgulas para mais de um argumento.

Para especificar o ponto de entrada e os argumentos durante a implantação de uma instância nova ou atual:

gcloud beta run instances deploy INSTANCE --image IMAGE_URL --command COMMAND --args ARG1,ARG-N

Substitua IMAGE_URL por uma referência à imagem do contêiner, como us-docker.pkg.dev/cloudrun/container/hello:latest.

Se você quiser restaurar os padrões do contêiner para os comandos e argumentos do ponto de entrada, forneça strings vazias da seguinte maneira:

gcloud beta run instances update INSTANCE --command "" --args ""

YAML

  1. Se você estiver criando uma nova instância, pule esta etapa. Se você estiver atualizando uma instância, faça o download da configuração YAML correspondente:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. O exemplo a seguir contém a configuração YAML:

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - name: CONTAINER_NAME
        image: IMAGE_URL
        command:
        - COMMAND
        args:
        - ARG1
        - ARG-N

    Substitua:

    • INSTANCE: o nome da instância do Cloud Run.
    • CONTAINER_NAME: o nome do contêiner.
    • IMAGE_URL: uma referência à imagem do contêiner, como us-docker.pkg.dev/cloudrun/container/hello: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. Se você usar vários argumentos, especifique cada um em uma linha própria, por exemplo, ARG-N, como mostrado abaixo.
  3. Crie ou atualize a instância usando o seguinte comando:

    gcloud beta run instances replace instance.yaml

Configurar 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, para que eles sejam iniciados primeiro. Os contêineres sem dependências são sempre iniciados primeiro e simultaneamente.

Para usar esse recurso com êxito, use sondagens de verificação de integridade de inicialização. A sondagem de inicialização permite que o Cloud Run inspecione a integridade de um contêiner dependente, garantindo que ele seja aprovado antes de iniciar o próximo contêiner. Se você não usar verificações de integridade, os contêineres serão iniciados na ordem especificada, mesmo que os contêineres de que eles dependem não sejam iniciados.

Use a Google Cloud CLI ou o YAML para especificar a ordem de inicialização:

gcloud

Antes de usar a Google Cloud CLI para especificar a ordem de inicialização, configure uma verificação de integridade de inicialização para qualquer contêiner secundário de que outro contêiner dependa. O contêiner de entrada (o contêiner com uma porta exposta) tem uma verificação de integridade de inicialização TCP padrão.

  1. No console do Google Cloud , ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do console do Google Cloud , uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  2. Para implantar vários contêineres em uma instância com uma ordem de inicialização especificada, execute o comando:

gcloud beta run instances deploy INSTANCE \
     --container CONTAINER_1_NAME --image='IMAGE_URL' --port='CONTAINER_PORT' \
     --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \
     --startup-probe=tcpSocket.port=SIDECAR_PORT \
     --container CONTAINER_3_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME,CONTAINER_2_NAME

Substitua:

  • INSTANCE: o nome da instância.
  • IMAGE_URL: uma referência à imagem do contêiner, como us-docker.pkg.dev/cloudrun/container/hello:latest.
  • CONTAINER_PORT: a porta em que o contêiner de entrada detecta solicitações recebidas. Para uma instância com vários contêineres, é necessário configurar explicitamente a porta do contêiner de entrada.
  • SIDECAR_IMAGE: uma referência à imagem do contêiner secundário.
  • SIDECAR_PORT: a porta no contêiner secundário verificada pela sondagem de inicialização TCP. Todo contêiner secundário de que outro contêiner depende precisa configurar uma sondagem de inicialização.

    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 uma nova instância, pule esta etapa. Se você estiver atualizando uma instância, faça o download da configuração YAML correspondente:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. O exemplo a seguir contém a configuração YAML:

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'

    Substitua:

    • INSTANCE: o nome da instância do Cloud Run.
    • CONTAINER1: o nome do primeiro contêiner que depende de um ou mais contêineres. É possível definir o nome do contêiner no YAML. O Cloud Run gera 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 a instância usando o seguinte comando:

    gcloud beta run instances replace instance.yaml