Service Mesh (ASM) integra-se estreitamente aos recursos do componente Knative Serving implantado em um cluster Container Service for Kubernetes (ACK) ou ACK Serverless. Essa integração simplifica a implantação e o gerenciamento de aplicações serverless em diversos ambientes de cluster. O Knative no ASM oferece uma solução completa para construir, implantar e gerenciar rapidamente aplicações baseadas em contêineres, especialmente quando há necessidade de dimensionamento automático e faturamento conforme o uso. Essa solução acelera a implantação e o dimensionamento de aplicações serverless, aumentando a eficiência do desenvolvimento e a elasticidade dos serviços. Este tópico descreve como usar o Knative no ASM para implantar um Knative Service.
Pré-requisitos
-
Uma instância do ASM versão 1.16.3.50 ou posterior deve estar criada, com um cluster ACK ou ACK Serverless cluster adicionado a ela. Para mais informações, consulte Criar uma instância do ASM e Adicionar um cluster a uma instância do ASM.
ImportanteAo criar uma instância do ASM, certifique-se de que a opção Allow data plane cluster KubeAPI to access Istio CR esteja selecionada na seção Resource configuration. Essa caixa de seleção vem marcada por padrão, permitindo o acesso aos recursos do Istio por meio da API Kubernetes dos clusters no plano de dados.
O acesso ao servidor de API do cluster ACK ou ACK Serverless cluster deve estar habilitado para suportar acesso rápido.
A instância do ASM e o cluster ACK ou ACK Serverless cluster precisam estar na mesma virtual private cloud (VPC), na mesma região e utilizar o mesmo vSwitch.
-
Um gateway de entrada deve estar criado para o cluster. O exemplo a seguir utiliza um gateway de entrada do ASM. Para mais informações, consulte Criar um gateway de entrada.
NotaNão é mais necessário criar gateways de entrada manualmente para instâncias do ASM versão V1.21.6.84 ou posterior.
O gateway do ASM permite dividir o tráfego entre diferentes Knative Revisions, acessar serviços Google Remote Procedure Call (gRPC), definir configurações de timeout e nova tentativa, montar certificados Transport Layer Security (TLS) e realizar autenticação e autorização externas. Para mais informações, consulte Gateways do ASM.
Etapa 1: Instalar o Knative
Para uma instância do ASM com versão anterior a 1.18.2.104
-
Implante o componente Knative Serving no cluster ACK ou ACK Serverless. Selecione Kourier para o parâmetro Gateway.
Para mais informações sobre como implantar o Knative em um cluster ACK, consulte Implantar e gerenciar componentes do Knative.
-
Para mais informações sobre como implantar o Knative em um cluster ACK Serverless, consulte Implantar o Knative.
ImportanteApós a instalação do componente Knative Serving, clique em Components. Na seção Add-on Component, desinstale o componente Kourier.
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em Mesh Management. No painel de navegação à esquerda, escolha .
Na página Knative on ASM, clique em Enable Knative on ASM.
Para uma instância do ASM com versão entre 1.18.2.104 e 1.21.6.83
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em Mesh Management. No painel de navegação à esquerda, escolha .
Na página Knative on ASM, selecione uma versão do Knative conforme suas necessidades de negócio e clique em Enable Knative on ASM.
-
Implante o Knative no cluster ACK ou ACK Serverless. Selecione ASM para o parâmetro Gateway.
Para mais informações sobre como implantar o Knative em um cluster ACK, consulte Implantar e gerenciar componentes do Knative.
Para mais informações sobre como implantar o Knative em um cluster ACK Serverless, consulte Implantar o Knative.
Para uma instância do ASM com versão 1.21.6.84 ou posterior
Se a versão da sua instância do ASM for 1.21.6.84 ou posterior, não é mais necessário ativar o recurso Knative on ASM no console do ASM.
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em Clusters. Em seguida, no painel de navegação à esquerda, escolha .
-
Na aba Components da página Knative, clique em Deploy Knative. Na seção Gateway, clique em ASM e depois clique em Deploy.
Após a instalação do Knative, você poderá utilizá-lo com o ASM.
NotaQuando aparecer uma mensagem indicando que o Knative foi instalado, verifique se o gateway de entrada está criado e funcionando corretamente antes de prosseguir com a implantação de um Knative Service.
Etapa 2: Implantar um Knative Service
O Knative no ASM permite implantar um Knative Service pelo console do ACK ou por meio de um arquivo de configuração YAML. Escolha o método de implantação mais adequado às suas necessidades.
Método 1: Implantar um Knative Service pelo console do ACK
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em Clusters. No painel de navegação à esquerda, clique em .
-
Na página Knative, clique em Services. No canto superior direito, clique em Create Service, defina os parâmetros necessários e clique em Create.
Para mais informações sobre os parâmetros, consulte Início rápido: Implantar um serviço Knative.
Parâmetro
Descrição
Exemplo
Namespace
Selecione o namespace ao qual o Service pertence.
default
Service Name
Insira um nome para o Service.
helloworld-go
Image Name
Para selecionar uma imagem, clique em Select Image. Na caixa de diálogo Select Image, escolha uma imagem e clique em OK. É possível especificar uma imagem em um registro privado. O endereço da imagem deve seguir o formato domainname/namespace/imagename:tag.
registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go
Image Version
Para selecionar uma versão da imagem, clique em Select Image Version. Na caixa de diálogo Image Version, escolha a versão desejada e clique em OK.
73fbdd56
Access Protocol
Os protocolos HTTP e gRPC são suportados.
HTTP
Container Port
Especifique a porta do contêiner que deseja expor. O número da porta deve estar no intervalo de 1 a 65535.
8080
Environment Variables
Clique em Advanced. Na seção Environment Variables, clique em Add para configurar variáveis de ambiente em pares chave-valor.
Type: Selecione Custom.
Variable Key: Defina como TARGET.
Value/ValueFrom: Defina como Knative.
Método 2: Implantar um Knative Service usando um arquivo de configuração YAML
-
Salve o conteúdo abaixo em um arquivo chamado helloworld-go.yaml.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go annotations: knative.k8s.alibabacloud/tls: "false" spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/acs/helloworld-go:160e4dc8 ports: - containerPort: 8080 env: - name: TARGET value: "Knative" -
Conecte-se ao cluster ACK usando kubectl. Execute o comando a seguir para criar um Knative Service e aguarde a conclusão da criação.
kubectl apply -f helloworld-go.yaml -
Execute o comando a seguir para visualizar a lista de Knative Services:
kubectl get ksvcO sistema exibirá informações semelhantes à saída abaixo:
NAME URL LATESTCREATED LATESTREADY READY REASON helloworld-go http://helloworld-go.default.example.com helloworld-go-00001 helloworld-go-00001 True
Método 3: Criar um Knative Service usando um modelo
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em Clusters. Em seguida, no painel de navegação à esquerda, escolha .
-
Na aba Services da página Knative, selecione default na lista suspensa Namespace, clique em Create from Template, copie o conteúdo YAML abaixo para o editor de código e clique em Create para criar um Service chamado helloworld-go.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73 fbdd56 # Replace {REGION-ID} with the region where your cluster resides. env: - name: TARGET value: "Knative"
Etapa 3: Consultar o endereço do gateway
Método 1: Consultar o endereço do gateway pelo console do ACK
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em Clusters. No painel de navegação à esquerda, clique em .
Clique em Services. Na lista de Services, clique em Services cujo endereço de gateway você deseja consultar para ver seus detalhes. Na seção Basic Information, visualize e obtenha as informações de Gateway e Default Domain.
Método 2: Consultar o endereço do gateway pelo console do ASM
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em Mesh Management. No painel de navegação à esquerda, escolha .
Na seção Service address da página Ingress Gateway, visualize e anote o endereço do gateway.
Etapa 4: Acessar o Knative Service
Após a implantação do Knative Service, aponte seu nome de domínio para o endereço IP de um gateway para associar o Service a ele. Isso permite acessar o Knative Service por meio de sua URL.
Na página Services, obtenha o endereço do gateway do serviço helloworld-go na coluna Gateway.
-
Execute o comando a seguir para acessar o serviço helloworld-go:
curl -H "host: helloworld-go.default.example.com" http://39.XX.XX.XX # Replace the IP address and domain name with the actual values.Saída esperada:
Hello Knative!Essa saída indica que o acesso ao serviço foi bem-sucedido.
Referências
O nome de domínio padrão de um Knative Service é example.com. O Knative no ASM permite configurar um nome de domínio personalizado como padrão. Para mais informações, consulte Definir um nome de domínio personalizado no Knative on ASM.
Um gateway do ASM suporta HTTPS e permite carregar certificados dinamicamente. Ao usar o Knative no ASM, utilize um gateway do ASM para acessar o Knative Service via HTTPS. Para mais informações, consulte Acessar serviço Knative via HTTPS com um gateway do ASM.
O Knative no ASM possibilita realizar uma canary release baseada em divisão de tráfego para um Knative Service. Ao criar um Knative Service, o Knative gera automaticamente a primeira Revision. Sempre que a configuração do serviço muda, uma nova Revision é criada e a porcentagem de tráfego distribuída entre as Revisions é ajustada para implementar a canary release. Para mais informações, consulte Realizar uma canary release baseada em divisão de tráfego para um Knative Service usando o Knative on ASM.
O Knative Serving adiciona o contêiner Queue Proxy a cada pod. Esse contêiner envia as métricas de concorrência dos contêineres de aplicação para o Knative Pod Autoscaler (KPA). Ao receber essas métricas, o KPA ajusta automaticamente o número de pods provisionados para um Deployment com base na quantidade de requisições simultâneas e nos algoritmos de dimensionamento automático correspondentes. Para mais informações, consulte Dimensionar serviços automaticamente com base no tráfego.