O gateway serverless do Service Mesh (ASM) é um novo tipo de gateway fornecido pelo ASM. Esses gateways ajudam a lidar com picos de tráfego, melhoram a estabilidade do sistema e mantêm os custos de computação baixos. Em comparação aos gateways do ASM executados em clusters do Container Service for Kubernetes (ACK) no plano de dados, os gateways serverless do ASM oferecem alta estabilidade, alta elasticidade e baixo custo. Além disso, como o ASM os implanta e gerencia de forma serverless, esses gateways têm alta disponibilidade por não dependerem de clusters ACK. Este tópico descreve como usar gateways serverless do ASM e apresenta logs e métricas relacionados.
Pré-requisitos
Um cluster ACK foi adicionado à sua instância do ASM com versão 1.18.0.147 ou posterior.
Uma aplicação foi implantada no cluster adicionado à instância do ASM.
Cenários
Os gateways serverless do ASM ajudam a lidar com picos de tráfego, melhoram a estabilidade do sistema e mantêm os custos de computação baixos. Eles são comuns nos seguintes cenários:
Serviços online com flutuações evidentes de tráfego, como educação online e e-commerce, podem usar gateways serverless do ASM para lidar com picos de tráfego. A arquitetura serverless reduz significativamente a quantidade de recursos fixos e diminui os custos de computação.
Quando vários clusters são adicionados a uma instância do ASM (por exemplo, dois clusters ACK), os gateways serverless do ASM são implantados independentemente de um cluster ACK específico. Isso proporciona alta disponibilidade.
Etapa 1: Criar um gateway de entrada serverless do ASM
Atualmente, você só pode criar um gateway serverless do ASM por meio de um arquivo YAML. Comparado a um gateway padrão do ASM executado em um cluster ACK do plano de dados, o gateway serverless do ASM exige a anotação asm.alibabacloud.com/managed-by-asm: 'true' e não requer um ID de cluster ACK. Para coletar métricas, use a anotação asm.alibabacloud.com/export-metrics para exportar as métricas do gateway para um cluster ACK de destino no plano de dados.
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha .
-
Na página Ingress Gateway, clique em Create from YAML. Insira um nome para o gateway, use a configuração YAML abaixo e clique em Create.
apiVersion: istio.alibabacloud.com/v1beta1 kind: IstioGateway metadata: annotations: asm.alibabacloud.com/managed-by-asm: 'true' asm.alibabacloud.com/export-metrics: 'ack-cluster-id' name: ingressgateway namespace: istio-system spec: gatewayType: ingress dnsPolicy: ClusterFirst externalTrafficPolicy: Local hostNetwork: false ports: - name: http port: 80 protocol: TCP targetPort: 80 - name: https port: 443 protocol: TCP targetPort: 443 replicaCount: 1 resources: limits: cpu: '2' memory: 2G requests: cpu: 200m memory: 256Mi rollingMaxSurge: 100% rollingMaxUnavailable: 25% runAsRoot: true serviceType: LoadBalancerNota: O gateway serverless do ASM criado oferece suporte a serviços LoadBalancer e ClusterIP. Se você definir o parâmetro serviceType como ClusterIP, certifique-se de que os pods do cliente e do gateway estejam interconectados. Por exemplo, por padrão, pods na mesma virtual private cloud (VPC) podem acessar uns aos outros usando o plug-in Terway.
Etapa 2: Criar uma regra de tráfego
-
Crie um nome de domínio HTTP.
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha .
Na página Ingress Gateway, clique em gateway de destino. No painel de navegação à esquerda do gateway, clique em Domain/Certificate. Na aba Domain, clique em Create.
No painel Add domain, defina Domain como *, Protocol como HTTP, Port Name como http e port como 80. Em seguida, clique em Create.
-
Importe o serviço productpage.
No painel de navegação à esquerda do gateway, clique em Upstream Service e depois em Import service.
No painel Import service, selecione o namespace default, selecione productpage, clique em ícone
e clique em Submit.
-
Crie uma regra de roteamento.
No painel de navegação à esquerda do gateway, clique em Route management e depois em Create.
Na etapa set route detail, defina route type como http, Namespaces como default e Route Name como productpage. Na seção Matching Rules, defina matchRules como Prefix e Content como /. Em seguida, clique em Next.
Na etapa set route destination, defina select upstream service como productpage e clique em Next.
Na etapa Advanced Options, clique em Create.
Etapa 3: Acessar o serviço productpage pelo gateway serverless do ASM
Na barra de endereços do navegador, insira {Gateway IP address}/productpage para visualizar a interface da aplicação. Para obter o endereço IP do gateway, consulte Obter o endereço IP de um gateway de entrada.
Etapa 4: Configurar o recurso de coleta de logs de acesso do gateway serverless do ASM
A configuração do recurso de coleta de logs de acesso do gateway serverless do ASM reinicia o gateway. Recomendamos realizar essa operação fora dos horários de pico.
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha .
-
Na página Ingress Gateway, localize o gateway de destino e clique em View YAML na coluna Actions. No editor YAML, adicione a anotação
asm.alibabacloud.com/aliyun-logs-project: k8s-log-****para especificar um projeto do Log Service.Neste exemplo, os logs de acesso do gateway serverless do ASM são coletados no projeto mesh-log-c4e1bbed247634d0482000d94e947****. O bloco de código a seguir fornece as configurações de amostra:
Clique em OK para atualizar o gateway serverless.
Etapa 5: Configurar acesso via HTTPS
-
Execute os comandos a seguir para gerar um certificado de Autoridade Certificadora (CA).
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=myexample Inc./CN=aliyun.com' -keyout aliyun.root.key -out aliyun.root.crt openssl req -out aliyun.com.csr -newkey rsa:2048 -nodes -keyout aliyun.com.key -subj "/CN=aliyun.com/O=myexample organization" openssl x509 -req -days 365 -CA aliyun.root.crt -CAkey aliyun.root.key -set_serial 0 -in aliyun.com.csr -out aliyun.com.crt -
Configure o certificado.
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha .
-
Na página Certificate Management, clique em Create. No painel Certificate Information, configure os parâmetros e clique em OK.
Parâmetro
Descrição
Name
Nome do certificado. Para este exemplo, insira myexample-credential.
Public Key Certificate
Documento eletrônico usado para provar a validade da chave pública. Para este exemplo, insira o conteúdo do arquivo aliyun.com.crt gerado na subetapa 1 da Etapa 5.
Private Key
Chave privada. Para este exemplo, insira o conteúdo do arquivo aliyun.com.key gerado na subetapa 1 da Etapa 5.
-
Crie um nome de domínio HTTPS.
No painel de navegação à esquerda, clique em Ingress Gateway. Clique em gateway de destino. No painel de navegação à esquerda do gateway, clique em Domain/Certificate. Na aba Domain, clique em Create.
No painel Add domain, defina Domain como *, Protocol como HTTPS, Port Name como https e port como 443. Para Certificate, selecione myexample-credential. Selecione Secure connections with standard TLS semantics. e clique em Create.
-
Execute o comando a seguir para acessar o gateway serverless do ASM via HTTPS:
curl -k -H Host:aliyun.com --resolve aliyun.com:443:{IP address of the desired ASM serverless gateway} https://aliyun.com/productpage -I
Etapa 6: Visualizar os logs de acesso do gateway serverless do ASM
Faça login no console do Simple Log Service.
-
Na área Projects, clique em nome do log de destino (o nome do log configurado na Etapa 4.1). Na barra de navegação à esquerda, clique em ícone
(Log Storage). Na lista Logstore, clique em mesh-ingress-log. Na caixa de pesquisa, insira productpage e clique em Search & Analyze.Os resultados da consulta mostram os logs de acesso do
istio-ingressgateway. No campocontentde uma entrada de log, umroute_nameigual aproductpagee umresponse_codeigual a503indicam que o gateway retornou uma resposta 503 para essa rota.
Perguntas frequentes
Como exportar as métricas de um gateway serverless do ASM?
Certifique-se de que a geração e a coleta de métricas estejam ativadas para o ASM. Isso permite visualizar o painel de métricas na página . Para mais informações, consulte Coletar métricas para o Managed Service for Prometheus.
-
No arquivo YAML do gateway serverless, adicione a anotação
asm.alibabacloud.com/export-metrics: ${ack-cluster-id}para exportar métricas.Este recurso está disponível apenas para instâncias do ASM com versão 1.18.0.147 ou posterior. Para mais informações sobre como atualizar uma instância do ASM, consulte Atualizar uma instância do ASM.
Após adicionar a anotação asm.alibabacloud.com/export-metrics: ${ack-cluster-id}, os serviços e endpoints do gateway serverless do ASM são sincronizados com o cluster ACK especificado. Em seguida, basta configurar o endpoint para coleta de dados no Managed Service for Prometheus.
-
No console do Application Real-Time Monitoring Service (ARMS), configure o endpoint para coleta de dados.
Faça login no console do ARMS.
No painel de navegação à esquerda, escolha . No canto superior esquerdo, selecione a região de destino.
Na página Instances, clique em nome da instância do Prometheus. No painel de navegação à esquerda, clique em Settings.
-
Na aba Settings da página Settings, clique em Edit Prometheus.yaml, adicione a configuração a seguir e clique em Save.
O que fazer se não for possível acessar uma aplicação backend usando um gateway serverless do ASM?
-
Verifique se o grupo de segurança do cluster de destino no plano de dados não bloqueia o tráfego proveniente do gateway serverless do ASM.
-
Visualize o bloco CIDR do vSwitch da sua instância do ASM.
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha .
Na página Basic Information, clique em link à direita de vSwitch. Na página de detalhes do vSwitch, localize o bloco CIDR do vSwitch.
-
Visualize o grupo de segurança do cluster de destino no plano de dados.
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em nome do seu cluster. No painel de navegação à esquerda, clique em Cluster Information.
Na página Cluster Information, clique em aba Cluster Resources e clique em link à direita de Security Group.
Na página de detalhes do grupo de segurança, visualize as regras de entrada. Certifique-se de que o bloco CIDR do vSwitch da sua instância do ASM e a porta do pod da aplicação backend estejam dentro do intervalo especificado pelas regras.
-
Se códigos de status como 404 e 503 forem retornados, verifique se as regras de tráfego estão configuradas corretamente e se a aplicação backend está sendo executada conforme esperado.