O Service Mesh (ASM) se integra aos recursos do Knative Serving do Service Mesh e aos Service Mesh s para simplificar a implantação e o gerenciamento de Service Mesh s em diversos ambientes de Service Mesh. Isso melhora a eficiência do desenvolvimento e aumenta a resiliência dos negócios, permitindo que você implante e escale Service Mesh s de forma rápida e flexível. Este tópico descreve como criar um Knative Service usando o Knative no ASM.
Pré-requisitos
-
Crie uma instância do ASM da versão 1.16.3.50 ou posterior e adicione um cluster ACK ou um ACK Serverless cluster à instância. Para mais informações, consulte {{XREF_0}} e {{XREF_1}}.
ImportanteAo criar uma instância do ASM, selecione Allow data plane cluster KubeAPI to access Istio CR na seção Resource configuration. Essa opção, selecionada por padrão, permite acessar os recursos do Istio por meio da API do Kubernetes dos clusters no plano de dados.
Ative o servidor de API público no cluster ACK ou ACK Serverless cluster de destino para garantir um acesso rápido.
A instância do ASM e o cluster ACK ou ACK Serverless cluster devem estar na mesma VPC e região, além de usar o mesmo vSwitch.
-
Adicione um gateway de entrada ao cluster. Este exemplo usa um gateway de entrada do ASM. Para mais informações, consulte {{XREF_2}}.
NotaPara instâncias do ASM da versão 1.21.6.84 ou posterior, não é necessário criar manualmente um gateway de entrada.
O gateway do ASM oferece suporte à distribuição de tráfego para Knative Revisions, gRPC services, tempos limite e tentativas, certificados TLS, além de autenticação e autorização externas. Para mais informações, consulte {{XREF_3}}.
Etapa 1: Instalar o Knative
Versões anteriores à 1.18.2.104
-
Implante o componente Knative Serving no seu cluster ACK ou ACK Serverless. Para o Gateway, selecione Kourier.
Para mais informações sobre como instalar o Knative no ACK, consulte {{XREF_4}}.
-
Para mais informações sobre como instalar o Knative no ACK Serverless, consulte {{XREF_5}}.
ImportanteApós a instalação do componente, clique em Components. Na seção Add-on Component, desinstale o componente Kourier.
Acesse o console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha .
Na página Knative on ASM, clique em Enable Knative on ASM.
Versões da 1.18.2.104 à 1.21.6.83
Acesse o console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha .
Na página Knative on ASM, selecione a versão necessária do Knative e clique em Enable Knative on ASM.
-
Implante o Knative no seu cluster ACK ou ACK Serverless. Para o Gateway, selecione ASM.
Para mais informações sobre como instalar o Knative no ACK, consulte {{XREF_6}}.
Para mais informações sobre como instalar o Knative no ACK Serverless, consulte {{XREF_7}}.
Versões 1.21.6.84 e posteriores
Para instâncias do ASM da versão 1.21.6.84 ou posterior, não é necessário ativar o Knative no ASM pelo console do ASM.
Acesse o console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Na página Knative, acesse a aba Components e clique em Deploy Knative. Selecione ASM para o Gateway e clique em Deploy.
Após a conclusão bem-sucedida da implantação, você pode usar o Service Mesh (ASM) no Knative.
NotaApós a conclusão da implantação, certifique-se de que o gateway de entrada foi criado e está em execução adequada antes de implantar um Knative Service.
Etapa 2: Implantar um Knative Service
O Knative no ASM permite implantar um Knative Service usando o console do ACK ou um arquivo de configuração YAML. Escolha o método de acordo com as suas necessidades.
Método 1: Console do ACK
Acesse o console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Na página Knative, clique em Services. No canto superior direito, clique em Create Service. Configure os parâmetros e clique em Create.
Para mais informações sobre os parâmetros, consulte {{XREF_8}}.
Parâmetro
Descrição
Exemplo
Namespace
Selecione o namespace ao qual o service pertence.
default
Service Name
Insira um nome personalizado para o service.
helloworld-go
Image Name
Clique em Select Image, selecione a imagem desejada e clique em OK. Você também pode especificar uma imagem de um registro privado usando o formato
domainname/namespace/imagename:tag.registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go
Image Version
Clique em Image Version, selecione a versão de destino e clique em OK.
73fbdd56
Access Protocol
Há suporte para HTTP e gRPC.
HTTP
Container Port
Defina a porta do contêiner a ser exposta. O número da porta deve estar entre 1 e 65535.
8080
Environment Variables
Clique em Advanced e, em seguida, clique em Add ao lado de Environment Variables para configurá-las como pares chave-valor.
Type: Custom
Variable Name: TARGET
Value/ValueFrom: Knative
Método 2: Arquivo YAML
-
Salve o seguinte conteúdo em um arquivo chamado
helloworld-go.yaml.Hello Knative! -
Conecte-se ao cluster ACK usando o kubectl. Execute o seguinte comando para criar o Knative Service.
Hello Knative! -
Execute o seguinte comando para listar os Knative services:
Hello Knative!Saída esperada:
Hello Knative!
Método 3: Modelo
Acesse o console do ACK. No painel de navegação à esquerda, escolha Cluster.
Na página Clusters, clique no nome do cluster de destino. No painel de navegação à esquerda, escolha .
-
Na página Knative, clique em Services. Defina o Namespace como default. Clique em Create from Template, cole o seguinte exemplo de YAML no editor e clique em Create. Essa ação cria um service chamado helloworld-go.
Hello Knative!
Etapa 3: Obter o endereço do gateway de acesso
Método 1: Console do ACK
Acesse o console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
Clique em Services. Na lista de services, clique no nome do service de destino para abrir sua página de detalhes. Na seção Basic Information, visualize e copie o endereço do Gateway e o Default Domain.
Método 2: Console do ASM
Acesse o console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância de destino. No painel de navegação à esquerda, escolha .
Na página Ingress Gateway, visualize e copie o endereço do gateway de acesso na seção Service address.
Etapa 4: Acessar o service
Após criar o Knative Service, acesse-o enviando uma solicitação para o endereço IP do gateway de entrada. Você deve especificar o domínio do service no cabeçalho Host da solicitação.
Na coluna Gateway da página Services, obtenha o endereço do gateway para o service helloworld-go.
-
Execute o seguinte comando para acessar o service
helloworld-go.Hello Knative!Saída esperada:
Hello Knative!A saída indica que o service foi acessado com sucesso.
Tópicos relacionados
O domínio padrão do service para o Knative é
example.com. O Knative no ASM permite usar um domínio personalizado como padrão. Para mais informações, consulte {{XREF_9}}.Como os gateways do ASM oferecem suporte a HTTPS e carregamento dinâmico de certificados, você pode usá-los para ativar o acesso HTTPS ao seu Knative Service. Para mais informações, consulte {{XREF_10}}.
O Knative no ASM fornece recursos de canary release baseados em tráfego. Ao criar um Knative Service, o Knative cria automaticamente a primeira Revision para o service. Posteriormente, sempre que a configuração do service mudar, o Knative criará uma nova Revision. Você pode implementar um canary release modificando a porcentagem de tráfego distribuído para diferentes Revisions. Para mais informações, consulte {{XREF_11}}.
O Knative Serving injeta um contêiner
queue-proxyem cada pod. Esse contêiner relata as métricas de simultaneidade do contêiner da aplicação para o autoscaler. Em seguida, o autoscaler ajusta o número de pods no Deployment com base no número de solicitações simultâneas e no algoritmo de dimensionamento para alcançar o dimensionamento automático. Para mais informações, consulte {{XREF_12}}.