Configurar contentores

Saiba como configurar a porta do contentor e os argumentos e o comando do ponto de entrada do contentor.

Quando o Knative Serving inicia um contentor, executa o comando de ponto de entrada predefinido da imagem e os argumentos de comando predefinidos. Se quiser substituir o ponto de entrada e os argumentos de comando predefinidos da imagem, pode usar os campos command e args na configuração do contentor. O campo command especifica o comando real executado pelo contentor. O campo args especifica os argumentos transmitidos a esse comando.

Configurar a porta do contentor

Qualquer alteração de configuração leva à criação de uma nova revisão. As revisões subsequentes também recebem automaticamente esta definição de configuração, a menos que faça atualizações explícitas para a alterar.

O contentor deve ouvir na porta definida pela variável de ambiente PORT, em vez de numa porta codificada específica. No entanto, se isto não for possível, pode configurar a porta na qual os pedidos são enviados para o contentor:

Consola

  1. Aceda ao Knative serving na Google Cloud consola:

    Aceda ao Knative Serving

  2. Clique em Criar serviço se estiver a configurar um novo serviço para o qual está a implementar. Se estiver a configurar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.

  3. Em Definições avançadas, clique em Contentor.

  4. Especifique a porta para a qual quer que os pedidos sejam enviados, se não for o valor predefinido de 8080. Esta ação também define a variável de ambiente PORT.

  5. Clique em Seguinte para continuar para a secção seguinte.

  6. Na secção Configure como este serviço é acionado, selecione a conetividade que quer usar para invocar o serviço.

  7. Clique em Criar para implementar a imagem no Knative Serving e aguarde que a implementação termine.

Linha de comandos

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

    gcloud run services update SERVICE --port PORT

    Substituição:

    • SERVICE com o nome do serviço.
    • PORT com a porta para a qual enviar pedidos. Tenha em atenção que a porta predefinida é 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

    Substituição:

    • SERVICE com o nome do serviço.
    • IMAGE_URL com uma referência à imagem do contentor, por exemplo, gcr.io/cloudrun/hello.
    • PORT com a porta para a qual quer enviar pedidos. A porta predefinida é 8080.

YAML

Pode transferir a configuração de um serviço existente para um ficheiro YAML com o comando gcloud run services describe usando a flag --format=export. Em seguida, pode modificar esse ficheiro YAML e implementar essas alterações com o comando gcloud run services replace. Tem de garantir que modifica apenas os atributos especificados.

  1. Transfira a configuração do seu serviço para um ficheiro denominado 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 de fornecimento do Knative.

  2. No ficheiro 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 com uma referência à imagem do contentor, por exemplo, gcr.io/cloudrun/hello.
    • PORT com a porta para a qual quer enviar pedidos.
  3. Substitua o serviço pela respetiva nova configuração através do seguinte comando:

    gcloud run services replace service.yaml

Configurar o comando e os argumentos do ponto de entrada do contentor

Qualquer alteração de configuração leva à criação de uma nova revisão. As revisões subsequentes também recebem automaticamente esta definição de configuração, a menos que faça atualizações explícitas para a alterar.

Quando o Knative Serving inicia um contentor, executa o comando de ponto de entrada predefinido da imagem. Para especificar ou substituir o comando e os argumentos do ponto de entrada existentes definidos na imagem do contentor, pode configurar as definições command e args na configuração do contentor do Knative Serving.

Pode optar por configurar comandos, argumentos ou ambos os pontos de entrada. O comando que especificar no Knative serving substitui qualquer comando de ponto de entrada definido na imagem do contentor. Se optar por especificar apenas argumentos, esses argumentos são transmitidos e executados pelo comando entrypoint definido na imagem do contentor.

No Knative serving, pode configurar comandos e argumentos de ponto de entrada através da Google Cloud consola, da CLI do Google Cloud ou de um ficheiro YAML quando implementa um novo serviço, atualiza um serviço existente ou implementa uma revisão:

Consola

  1. Aceda ao Knative serving na Google Cloud consola:

    Aceda ao Knative Serving

  2. Clique em Criar serviço se estiver a configurar um novo serviço para o qual está a implementar. Se estiver a configurar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.

  3. Em Definições avançadas, clique em Contentor.

  4. Especifique o comando e os argumentos do ponto de entrada que quer que o contentor execute durante o arranque.

  5. Clique em Seguinte para continuar para a secção seguinte.

  6. Na secção Configure como este serviço é acionado, selecione a conetividade que quer usar para invocar o serviço.

  7. Clique em Criar para implementar a imagem no Knative Serving e aguarde que a implementação termine.

Linha de comandos

Opções de parâmetros de comandos

  • Para especificar um argumento que contenha uma vírgula (,), tem de usar como caráter de escape cada ARG com um delimitador diferente. Por exemplo, se usar @:
    --args "^@^arg,with,commas@anotherarg@ARG3..."
  • Para especificar vários conjuntos de pares de chave-valor, pode especificar vários parâmetros para facilitar a leitura. Exemplo:
    [...]
    --args "ARG1" \
    --args "ARG2" \
    --args "ARG3"
  • Para usar sinais de igual (=) nos argumentos, tem de especificar cada argumento no seguinte formato:
    gcloud run services ...  \
      --args "--repo-allowlist=github.com/example/example_demo" \
      --args "--gh-webhook-secret=XX"

  • Para os serviços existentes, 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

    Substituição:

    • SERVICE com o nome do serviço.
    • Opcional: COMMAND com o comando que quer que o contentor seja executado durante o arranque.
    • Opcional: ARG1 com um ou mais argumentos para o comando que é executado durante o arranque. Use uma lista delimitada por vírgulas para vários argumentos. Como formatar os argumentos.
  • Para novos serviços, defina o comando de ponto de entrada 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

    Substituição:

    • SERVICE com o nome do serviço.
    • IMAGE_URL com uma referência à imagem do contentor, por exemplo, gcr.io/cloudrun/hello.
    • Opcional: COMMAND com o comando que quer que o contentor seja executado durante o arranque.
    • Opcional: ARG1 com um ou mais argumentos para o comando que é executado durante o arranque. Use uma lista delimitada por vírgulas para vários argumentos. Como formatar os argumentos.

YAML

Pode transferir a configuração de um serviço existente para um ficheiro YAML com o comando gcloud run services describe usando a flag --format=export. Em seguida, pode modificar esse ficheiro YAML e implementar essas alterações com o comando gcloud run services replace. Tem de garantir que modifica apenas os atributos especificados.

  1. Transfira a configuração do seu serviço para um ficheiro denominado 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 de fornecimento do Knative.

  2. No ficheiro 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"
    

    Substituição:

    • IMAGE_URL com uma referência à imagem do contentor, por exemplo, gcr.io/cloudrun/hello.
    • Opcional: COMMAND com o comando que quer que o contentor seja executado durante o arranque.
    • Opcional: ARG1 com um ou mais argumentos para o comando que é executado durante o arranque. Use uma lista delimitada por vírgulas para mais do que um argumento.
  3. Substitua o serviço pela respetiva nova configuração através do seguinte comando:

    gcloud run services replace service.yaml