Esta página descreve como implantar novos serviços e novas revisões no Knative serving.
Antes de começar
Para usar a Google Cloud CLI, primeiro é preciso configurar as ferramentas de linha de comando.
Como se conectar a clusters do GKE
Antes de implantar serviços no Knative serving, você precisa fazer login para se conectar ao cluster do GKE.
Para mais informações sobre como se conectar aos clusters do GKE, incluindo outras opções, consulte:
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 de gerenciamento de identidade e acesso:
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:
Acesse a veiculação do Knative no console do Google Cloud:
Clique em Criar serviço para exibir a página Criar serviço.
No formulário, siga estas etapas:
No menu suspenso, selecione um dos clusters do GKE disponíveis para o serviço.
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.
Em Conectividade:
- Selecione Interno se quiser restringir o acesso apenas a outros serviços de do Knative serving 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.
Clique em Avançar para acessar a segunda página do formulário de criação de serviço:
No formulário, siga estas etapas:
Na caixa de texto URL da imagem do contêiner, forneça o URL de uma imagem de um registro compatível, por exemplo:
us-docker.pkg.dev/cloudrun/container/hello:latest
Opcionalmente, clique em Mostrar configurações avançadas e nas guias subsequentes a serem definidas:
Clique em Criar para implantar a imagem no Knative serving e aguarde até que a implantação seja concluída.
Você acabou de implantar um serviço em um cluster ativado do Knative serving.
Linha de comando
Para implantar uma imagem de contêiner, realize as etapas a seguir:
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/cloudrun/hello
;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 alocation
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 Knative serving no VMware, você precisa incluir o parâmetro
--kubeconfig
e especificar o arquivo de configuração:gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE
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.
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
Substituir
- SERVICE pelo nome do serviço do Knative serving
- IMAGE pelo URL da imagem de contêiner.
Também é possível especificar mais configurações, como variáveis de ambiente ou limites de memória.
Implante o novo serviço usando o seguinte comando:
gcloud run services replace service.yaml
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:
Acesse a veiculação do Knative no console do Google Cloud:
Localize o serviço que você quer atualizar na lista de serviços e clique nele para abrir os detalhes.
Clique em EDITAR E IMPLANTAR NOVA REVISÃO. Isso exibe o formulário de implantação de revisão:
Se necessário, forneça o URL para a nova imagem do contêiner que você quer implantar.
Opcionalmente, defina:
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.
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:
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/cloudrun/hello
;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 alocation
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 Knative serving no VMware, você precisa incluir o parâmetro
--kubeconfig
e especificar o arquivo de configuração:gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE
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 run services replace
.
Modifique apenas os atributos especificados.
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.
No seu arquivo local, atualize as configurações de revisão em qualquer atributo filho de
spec.template
.Implante a nova revisão:
gcloud run services replace service.yaml
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:
No console do Google Cloud, abra o projeto do serviço do Knative serving.
Consiga as informações da sua conta de serviço:
Para clusters no Google Cloud, copie o e-mail da conta de serviço padrão do Compute Engine. Ele tem o sufixo @developer.gserviceaccount.com
Para outros clusters, crie uma conta de serviço do Google Cloud e faça o download das credenciais. Adicione essas credenciais como
imagePullSecrets
padrão da conta de serviço do Kubernetes.
Abra o projeto proprietário do registro do contêiner que você quer usar.
Clique em Adicionar para adicionar um novo principal.
Na caixa de texto Novos principais, cole o e-mail da conta de serviço que você copiou anteriormente.
Na lista suspensa Selecionar um papel, escolha o papel a ser lido no registro:
- Artifact Registry, incluindo repositórios gcr.io no Artifact Registry: Artifact Registry -> Leitor do Artifact Registry
- Container Registry: Armazenamento -> Leitor de objetos do Storage
Implante a imagem do contêiner no projeto que contém o serviço do Knative serving.
Para aumentar a segurança, é possível limitar o acesso a permissões:
- Artifact Registry: conceda o papel no repositório que armazena suas imagens de contêiner.
- Container Registry: conceda o papel no bucket do Cloud Storage que armazena as imagens do contêiner.
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 Knative serving. 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 (descontinuado) 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:
Crie um secret
imagePullSecret
chamadocontainer-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.
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 Knative serving.Adicione o secret
imagePullSecret
recém-criado à sua 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 ativada
Para implantar o serviço com a injeção de arquivo secundário do Istio ativada, consulte a injeção automática de arquivo secundário ativada na documentação do Cloud Service Mesh.
Como implantar serviços em uma rede interna
Para implantar serviços em uma rede interna, é necessário configurar uma rede privada e interna.
A seguir
Depois de implantar um novo serviço, é possível realizar estas ações:
- Reversões, lançamentos graduais e migração de tráfego
- Visualizar registros de serviço
- Monitorar o desempenho do serviço
- Configure seus serviços. Por exemplo, defina limites de memória, defina variáveis de ambiente ou altere a simultaneidade.
- Gerenciar:
É possível automatizar os builds e implantações de serviços do Knative serving usando os gatilhos do Cloud Build: