Como implantar imagens de contêineres

Nesta página, descrevemos como implantar novos serviços e novas revisões no Cloud Run for Anthos.

Pré-requisitos

Para usar a Google Cloud CLI, você precisa da Google Cloud CLI instalada e configurada.

Permissões necessárias para implantar

Você precisa de permissões para criar, atualizar e excluir no apiGroup serving.knative.dev e no tipo Service, além de ter um dos seguintes papéis:

  • Proprietário
  • Editor
  • Administrador do GKE
  • Desenvolvedor do GKE

Imagens que podem ser implantadas

Não há limite de tamanho que se aplique à imagem de contêiner que é possível implantar.

É possível usar contêineres de qualquer registro de contêiner, como o Docker Hub. Para informações sobre como implantar imagens particulares de registros diferentes do Container Registry ou do Artifact Registry, consulte Como implantar imagens de contêiner particulares de outros registros de contêiner.

Como implantar um novo serviço

É possível especificar uma imagem de contêiner com uma tag (por exemplo, gcr.io/my-project/my-image:latest) ou com um resumo exato (por exemplo, gcr.io/my-project/my-image@sha256:41f34ab970ee...).

A implantação de um serviço pela primeira vez cria a primeira revisão dele. Observe que as revisões são imutáveis. Se você implantar a partir de uma tag de imagem de contêiner, ela será resolvida para um resumo, e a revisão sempre exibirá esse resumo específico.

É possível implantar um contêiner usando o Console do Google Cloud, a Google Cloud CLI ou um arquivo de configuração YAML.

Clique na guia para ver instruções usando a ferramenta de sua preferência.

Configuração de local padrão do gcloud

Se você tiver configurado anteriormente um local na configuração default do Google Cloud CLI, os comandos gcloud usarão esses valores por padrão, incluindo:

  • compute/region
  • compute/zone
  • run/cluster
  • run/cluster_location
  • run/platform
  • run/region

Execute o comando gcloud config a seguir para ver as definições da configuração default:

gcloud config configurations describe default

Console

Para implantar uma imagem de contêiner, realize as etapas a seguir:

  1. Acesse o Cloud Run for Anthos no Console do Google Cloud:

    Acessar o Cloud Run for Anthos

  2. Clique em Criar serviço para exibir a página Criar serviço.

    No formulário, siga estas etapas:

    1. Selecione a plataforma do Cloud Run para Anthos em que você está implantando:

      • Cloud Run for Anthos para implantar em um cluster GKE ou clusters do Anthos no VMware com o Cloud Run for Anthos ativado.
    2. No menu suspenso, selecione um dos clusters do GKE disponíveis para o serviço.

    3. Digite o nome do serviço desejado. Os nomes de serviço precisam ser exclusivos por região e projeto ou por cluster. Não é possível alterar um nome de serviço posteriormente.

    4. Em Conectividade:

      • Selecione Interno se quiser restringir o acesso somente a outros serviços do Cloud Run for Anthos ou serviços no cluster que usam o Istio.
      • Selecione Externo para permitir acesso externo ao serviço.

      Observe que é possível alterar a opção de conectividade a qualquer momento, conforme descrito em Como alterar configurações de conectividade de serviço.

    5. Clique em Avançar para acessar a segunda página do formulário de criação de serviço:

      imagem

      No formulário, siga estas etapas:

      1. Na caixa de texto URL da imagem do contêiner, forneça o URL de uma imagem de um registro compatível, por exemplo: gcr.io/myproject/my-image:latest

        Para usar o Artifact Registry com imagens de contêiner particulares, use o resumo de imagem. Se você quiser usar a tag de imagem das imagens de contêiner particulares, será necessário criar e usar um imagePullSecret até que o problema conhecido seja resolvido.

      2. Opcionalmente, clique em Mostrar configurações avançadas e nas guias subsequentes a serem definidas:

      3. Clique em Criar para implantar a imagem no Cloud Run for Anthos e aguarde a conclusão da implantação.

    Você acabou de implantar um serviço em um cluster ativado do Cloud Run for Anthos.

Linha de comando

Para implantar uma imagem de contêiner, realize as etapas a seguir:

  1. Execute o comando gcloud run deploy:

    gcloud run deploy SERVICE --image IMAGE_URL

    • Substitua SERVICE pelo nome do serviço no qual você quer implantar. Se o serviço especificado não existir, um novo serviço será criado.

    • IMAGE_URL por uma referência à imagem de contêiner, por exemplo, gcr.io/myproject/my-image:latest;

    • Outras opções de implantação:

      • Para implantar em um namespace diferente do padrão, especifique o namespace usando o parâmetro --namespace.

      • Para implantar em um local diferente da configuração padrão, especifique o name e a location do cluster com os parâmetros --cluster e --cluster-location:

        gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
      • Defina opções de conectividade com a sinalização --connectivity, conforme descrito em Como alterar as configurações de conectividade do serviço para especificar o acesso interno ou externo.

      • Para o Cloud Run for Anthos no local, inclua o parâmetro --kubeconfig e especifique o arquivo de configuração:

        gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE

  2. Aguarde a conclusão da implantação. Após a conclusão bem-sucedida, uma mensagem de sucesso é exibida com o URL do serviço implantado.

YAML

É possível armazenar a especificação do serviço em um arquivo YAML e implantá-la usando a Google Cloud CLI.

  1. Crie um novo arquivo service.yaml com este conteúdo:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE

    Substitua:

    • SERVICE pelo nome do serviço do Cloud Run for Anthos;
    • IMAGE pelo URL da imagem de contêiner. Para usar o Artifact Registry com imagens de contêiner particulares, use o resumo de imagem. Se você quiser usar a tag de imagem das imagens de contêiner particulares, será necessário criar e usar um imagePullSecret até que o problema conhecido seja resolvido.

    Também é possível especificar mais configurações, como variáveis de ambiente ou limites de memória.

  2. Implante o novo serviço usando o seguinte comando:

    gcloud beta run services replace service.yaml

Cloud Code

Para implantar com o Cloud Code, leia os guias do IntelliJ e do Visual Studio Code.

Como implantar uma nova revisão de um serviço atual

É possível implantar uma nova revisão usando o Console do Google Cloud, a linha de comando gcloud ou um arquivo de configuração YAML.

A alteração de qualquer configuração resulta na criação de uma nova revisão, mesmo que não haja alterações na imagem do contêiner. Cada revisão criada é imutável.

Clique na guia para ver instruções usando a ferramenta de sua preferência.

Console

Para implantar uma nova revisão de um serviço atual, realize as etapas a seguir:

  1. Acesse o Cloud Run for Anthos no Console do Google Cloud:

    Acessar o Cloud Run for Anthos

  2. Localize o serviço que você quer atualizar na lista de serviços e clique nele para abrir os detalhes.

  3. Clique em EDITAR E IMPLANTAR NOVA REVISÃO. Isso exibe o formulário de implantação de revisão:

    imagem

  4. Se necessário, forneça o URL para a nova imagem do contêiner que você quer implantar.

  5. Opcionalmente, defina:

  6. Para enviar todo o tráfego para a nova revisão, marque a caixa de seleção identificada como Veicular esta revisão imediatamente. Para lançar uma nova revisão gradualmente, desmarque essa caixa de seleção: isso resultará em uma implantação em que nenhum tráfego será enviado para a nova revisão. Siga as instruções de lançamentos graduais após a implantação.

  7. Clique em IMPLANTAR e aguarde a conclusão da implantação.

Linha de comando

Para implantar uma imagem de contêiner, realize as etapas a seguir:

  1. Execute o comando gcloud run services update:

    gcloud run services update SERVICE --image IMAGE_URL
    • Um sufixo de revisão é atribuído automaticamente a cada revisão. Se você quiser especificar seu próprio sufixo de revisão, adicione o parâmetro --revision-suffix.

    • Substitua SERVICE pelo nome do serviço no qual você quer implantar. Se o serviço especificado não existir, um novo serviço será criado.

    • IMAGE_URL por uma referência à imagem de contêiner, por exemplo, gcr.io/myproject/my-image:latest;

    • Outras opções de implantação:

      • Para implantar em um namespace diferente do padrão, especifique o namespace usando o parâmetro --namespace.

      • Para implantar em um local diferente da configuração padrão, especifique o name e a location do cluster com os parâmetros --cluster e --cluster-location:

        gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
      • Defina opções de conectividade com a sinalização --connectivity, conforme descrito em Como alterar as configurações de conectividade do serviço para especificar o acesso interno ou externo.

      • Para o Cloud Run for Anthos no local, inclua o parâmetro --kubeconfig e especifique o arquivo de configuração:

        gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE

  2. Aguarde a conclusão da implantação. Após a conclusão bem-sucedida, uma mensagem de sucesso é exibida com o URL do serviço implantado.

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 beta 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 serviço do Cloud Run for Anthos.

    1. No seu arquivo local, atualize as configurações de revisão em qualquer atributo filho de spec.template.

    2. Implante a nova revisão:

      gcloud beta run services replace service.yaml

Cloud Code

Para implantar uma nova revisão de um serviço existente com o Cloud Code, leia os guias do IntelliJ e do Visual Studio Code.

Como implantar imagens de outros projetos do Google Cloud

É possível implantar imagens de contêiner de outros projetos do Google Cloud se você definir as permissões corretas do IAM:

  1. No Console do Google Cloud Console, abra o projeto do seu serviço do Cloud Run for Anthos.

  2. Acessar a página do IAM

  3. Se você implantar para:

  4. Abra o projeto proprietário do registro do contêiner que você quer usar.

  5. Acessar a página do IAM

  6. Clique em Adicionar para adicionar um novo principal.

  7. Na caixa de texto Novos participantes, cole o e-mail da conta de serviço que você copiou antes.

  8. Na lista suspensa Selecionar um papel, selecione o papel Armazenamento -> Visualizador de objeto do armazenamento.

  9. Implante a imagem de contêiner no projeto que contém o serviço do Cloud Run for Anthos.

Como implantar imagens de contêiner particulares de outros registros de contêiner

Esta seção descreve a configuração de permissões corretas para implantar imagens de contêiner de um registro particular arbitrário no Cloud Run for Anthos. Um registro de contêiner particular requer credenciais para acessar a imagem do contêiner. Não é necessário seguir estas etapas para implantar imagens de contêiner particulares do Container Registry ou do Artifact Registry no mesmo projeto do cluster.

Para implantar uma imagem de contêiner particular, você precisa criar um secret do Kubernetes do tipo imagePullSecret e associá-lo a uma conta de serviço:

  1. Crie um secret imagePullSecret chamado container-registry:

    kubectl create secret docker-registry container-registry \
      --docker-server=DOCKER_REGISTRY_SERVER \
      --docker-email=REGISTRY_EMAIL \
      --docker-username=REGISTRY_USER \
      --docker-password=REGISTRY_PASSWORD
    • Substitua DOCKER_REGISTRY_SERVER pelo FQDN de registro particular (por exemplo: https://gcr.io/ para o Container Registry ou https://hub.docker.com (em inglês) para o DockerHub).
    • Substitua REGISTRY_EMAIL pelo e-mail que você está usando.
    • Substitua REGISTRY_USER pelo nome de usuário do Container Registry que você está usando.

      Se você estiver usando o Container Registry ou o Artifact Registry e quiser armazenar e receber credenciais de longa duração em vez de transmitir tokens de acesso de curta duração, consulte Métodos de autenticação: arquivo de chave JSON.

    • Substitua REGISTRY_PASSWORD pela senha do Container Registry.

  2. Abra sua conta de serviço padrão:

    kubectl edit serviceaccount default --namespace default

    Cada namespace no cluster do Kubernetes tem uma conta de serviço padrão chamada default. Essa conta de serviço padrão é usada para receber a imagem de contêiner, a menos que haja outras especificações ao implantar o serviço do Cloud Run for Anthos.

  3. Adicione o secret imagePullSecret recém-criado à conta de serviço padrão:

    imagePullSecrets:
    - name: container-registry
    

    Sua conta de serviço agora terá esta aparência:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: default
      namespace: default
      ...
    secrets:
    - name: default-token-zd84v
    # The secret we just created:
    imagePullSecrets:
    - name: container-registry
    

Agora, todos os novos pods criados no namespace default atual terão o secret imagePullSecret definido.

Como implantar com a injeção automática de arquivo secundário do Istio ativada

Para implantar o serviço no namespace com a injeção automática de arquivos secundários do Istio ativada (em inglês), é necessário usar uma instalação separada do Istio.

Como implantar serviços em uma rede interna

A implantação de serviços em uma rede interna é útil para empresas que fornecem apps internos para a equipe. Ela também é importante para os serviços usados por clientes executados fora do cluster do Cloud Run for Anthos.

Para implantar serviços em uma rede interna, consulte Como configurar uma rede particular e interna.

A seguir

Depois de implantar um novo serviço, é possível realizar estas ações:

É possível automatizar os builds e implantações dos serviços do Cloud Run for Anthos usando os gatilhos do Cloud Build: