Como configurar contêineres

Saiba como configurar a porta do contêiner e o comando e os argumentos do ponto de entrada do contêiner.

Quando o serviço Knative inicia um contêiner, ele executa o comando de ponto de entrada padrão e os argumentos de comando padrão da imagem. Se você quiser modificar os argumentos de comando e o ponto de entrada 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 transmitidos para esse comando.

Como configurar a porta do contêiner

Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.

O contêiner precisa detectar a porta definida pela variável de ambiente PORT em vez de uma porta codificada específica. No entanto, se isso não for possível, configure quais solicitações de porta serão enviadas para o contêiner:

Console

  1. Acesse o Knative serving no console do Google Cloud:

    Acessar o Knative serving

  2. Clique em Criar serviço se estiver configurando um novo serviço em que fará uma implantação. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar uma nova revisão.

  3. Em Configurações avançadas, clique em Contêiner.

  4. Especifique a porta em que você quer que as solicitações sejam enviadas, se não for o valor padrão de 8080. Isso também define a variável de ambiente PORT.

  5. Clique em Avançar para acessar a próxima seção.

  6. Na seção Configurar como este serviço é acionado, selecione qual conectividade você quer usar para invocar o serviço.

  7. Clique em Criar para implantar a imagem no Knative serving e aguarde até que a implantação seja concluída.

Linha de comando

  • Para serviços existentes, atualize uma configuração de porta executando o comando gcloud run services update com os parâmetros a seguir:

    gcloud run services update SERVICE --port PORT
    

    Substitua:

    • SERVICE pelo nome do serviço;
    • PORT pela porta para enviar solicitações. Observe que a porta padrão é 8080.
  • Para novos serviços, defina a porta executando o comando gcloud run deploy com o parâmetro --port:

    gcloud run deploy SERVICE --image=IMAGE_URL --port PORT
    

    Substitua:

    • SERVICE pelo nome do serviço;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, gcr.io/cloudrun/hello;
    • PORT pela porta para a qual você quer enviar solicitações. A porta padrão é 8080.

YAML

Faça o download da configuração de um serviço existente para um arquivo YAML com o comando gcloud run services describe usando a sinalização --format=export. Em seguida, modifique o arquivo YAML e implante essas alterações com o comando gcloud run services replace. Modifique apenas os atributos especificados.

  1. Faça o download da configuração do serviço em um arquivo chamado service.yaml no espaço de trabalho local:

    gcloud run services describe SERVICE --format export > service.yaml

    Substitua SERVICE pelo nome do seu serviço do Knative serving.

  2. No seu arquivo local, atualize o atributo containerPort::

    apiVersion: serving.knative.dev/v1
    kind: Service
    spec:
      template:
        spec:
          containers:
          - image: IMAGE_URL
            ports:
            - containerPort: PORT
    

    Substituir

    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, gcr.io/cloudrun/hello;
    • PORT pela porta para a qual você quer enviar solicitações.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud run services replace service.yaml

Como configurar o comando e os argumentos do ponto de entrada do contêiner

Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.

Quando o Knative serving inicia um contêiner, ele executa o comando de ponto de entrada padrão da imagem. Para especificar ou substituir o comando e os argumentos de ponto de entrada atuais que são definido na imagem do contêiner, é possível configurar command e args nas configurações do contêiner do Knative serving.

É possível configurar comandos de ponto de entrada, argumentos ou ambos. O comando especificado no Knative serving substitui qualquer comando de ponto de entrada definido na imagem do contêiner. Se você optar por especificar apenas os argumentos, esses argumentos serão transmitidos e executados pelo comando entrypoint definido na imagem do contêiner.

No fornecimento do Knative, é possível configurar comandos e argumentos de ponto de entrada usando o console do Google Cloud, a CLI do Google Cloud ou um arquivo YAML ao implantar um novo serviço, atualizar um serviço atual ou implantar uma revisão:

Console

  1. Acesse o Knative serving no console do Google Cloud:

    Acessar o Knative serving

  2. Clique em Criar serviço se estiver configurando um novo serviço em que fará uma implantação. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar uma nova revisão.

  3. Em Configurações avançadas, clique em Contêiner.

  4. Especifique o comando entrypoint e os argumentos que você quer que o contêiner execute durante a inicialização.

  5. Clique em Avançar para acessar a próxima seção.

  6. Na seção Configurar como este serviço é acionado, selecione qual conectividade você quer usar para invocar o serviço.

  7. Clique em Criar para implantar a imagem no Knative serving e aguarde até que a implantação seja concluída.

Linha de comando

Opções de parâmetros de comando

  • Para especificar um argumento que contenha uma vírgula (,), escape cada ARG com um delimitador diferente. Por exemplo, se você usar @:
    --args "^@^arg,with,commas@anotherarg@ARG3..."
    
  • Para especificar vários conjuntos de pares de chave-valor, é possível especificar vários parâmetros de legibilidade. Exemplo:
    [...]
    --args "ARG1" \
    --args "ARG2" \
    --args "ARG3"
    
  • Para usar sinais de igual (=) nos argumentos, é preciso especificar cada argumento usando o seguinte formato:
    gcloud run services ...  \
      --args "--repo-allowlist=github.com/example/example_demo" \
      --args "--gh-webhook-secret=XX"
    

  • Para serviços atuais, atualize o comando entrypoint executando o comando gcloud run services update com os seguintes parâmetros:

    gcloud run services update SERVICE --command COMMAND --args ARG1,ARG2,ARG-N
    

    Substitua:

    • SERVICE pelo nome do serviço;
    • Opcional: COMMAND com o comando que você quer que o contêiner seja executado durante a inicialização.
    • Opcional: ARG1 com um ou mais argumentos para o comando que é executado durante a inicialização. Use uma lista delimitada por vírgulas para vários argumentos. Como formatar seus argumentos.
  • Para novos serviços, defina o comando entrypoint executando o comando gcloud run deploy com o parâmetro --command:

    gcloud run deploy SERVICE --image=IMAGE_URL --command COMMAND --args ARG1,ARG2,ARG-N
    

    Substitua:

    • SERVICE pelo nome do serviço;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, gcr.io/cloudrun/hello;
    • Opcional: COMMAND com o comando que você quer que o contêiner seja executado durante a inicialização.
    • Opcional: ARG1 com um ou mais argumentos para o comando que é executado durante a inicialização. Use uma lista delimitada por vírgulas para vários argumentos. Como formatar seus argumentos.

YAML

Faça o download da configuração de um serviço existente para um arquivo YAML com o comando gcloud run services describe usando a sinalização --format=export. Em seguida, modifique o arquivo YAML e implante essas alterações com o comando gcloud run services replace. Modifique apenas os atributos especificados.

  1. Faça o download da configuração do serviço em um arquivo chamado service.yaml no espaço de trabalho local:

    gcloud run services describe SERVICE --format export > service.yaml

    Substitua SERVICE pelo nome do seu serviço Knative serving.

  2. No seu arquivo local, atualize os atributos command e args:

    apiVersion: serving.knative.dev/v1
    kind: Service
    spec:
      template:
        spec:
          containers:
          - image: IMAGE_URL
            command:
            - COMMAND
            args:
            - "ARG1"
            - "ARG-N"
    

    Substitua:

    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, gcr.io/cloudrun/hello;
    • Opcional: COMMAND com o comando que você quer que o contêiner seja executado durante a inicialização.
    • Opcional: ARG1 com um ou mais argumentos para o comando que é executado durante a inicialização. Use uma lista delimitada por vírgulas para mais de um argumento.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud run services replace service.yaml