Um gateway serverless do Service Mesh (ASM) é um novo tipo de gateway fornecido pelo ASM. Os gateways serverless ajudam você a lidar com picos de tráfego, melhorando a estabilidade do seu sistema e mantendo os custos de computação baixos. Em comparação com os gateways do ASM executados em clusters do Container Service for Kubernetes (ACK) no plano de dados, os gateways serverless do ASM oferecem as vantagens de alta estabilidade, alta elasticidade e baixo custo. Além disso, eles são implantados de forma serverless e gerenciados pelo ASM. Portanto, os gateways serverless do ASM têm alta disponibilidade, pois não dependem de clusters do ACK. Este tópico descreve como usar os gateways serverless do ASM e apresenta os logs e as métricas relacionados a eles.
Pré-requisitos
{{XREF_0}} Uma instância do ASM com versão 1.18.0.147 ou posterior.
Cenários
Os gateways serverless do ASM ajudam a lidar com picos de tráfego para melhorar a estabilidade do seu sistema, mantendo os custos de computação baixos. Eles são comumente usados nos seguintes cenários:
Para serviços online com flutuações óbvias de tráfego, como educação online e e-commerce, você pode usar gateways serverless do ASM para lidar com picos de tráfego. Com a arquitetura serverless, é possível reduzir significativamente a quantidade de recursos fixos, ajudando a diminuir os custos de computação.
Quando vários clusters são adicionados a uma instância do ASM (por exemplo, dois clusters do ACK adicionados a uma instância do ASM), os gateways serverless do ASM são implantados de forma independente de um cluster do ACK específico. Isso proporciona alta disponibilidade.
Etapa 1: Crie um gateway de entrada serverless do ASM
Atualmente, você só pode criar um gateway serverless do ASM usando um arquivo YAML. Em comparação com um gateway padrão do ASM executado em um cluster do ACK no plano de dados, um gateway serverless do ASM requer a anotação asm.alibabacloud.com/managed-by-asm: 'true' e não exige um ID de cluster do ACK. Para coletar métricas, use a anotação asm.alibabacloud.com/export-metrics para exportar as métricas do gateway para um cluster do 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 no 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 seguinte configuração YAML e, em seguida, 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 é compatível com os Services 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, os pods na mesma virtual private cloud (VPC) podem acessar uns aos outros usando o plug-in Terway.
Etapa 2: Crie 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 no nome da instância do ASM. No painel de navegação à esquerda, escolha .
Na página Ingress Gateway, clique no 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 service productpage.
No painel de navegação à esquerda do gateway, clique em Upstream Service e, em seguida, clique em Import service.
No painel Import service, selecione o namespace default, selecione productpage, clique no ícone
e, em seguida, clique em Submit.
-
Crie uma regra de roteamento.
No painel de navegação à esquerda do gateway, clique em Route management e, em seguida, clique 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, em seguida, clique em Next.
Na etapa Advanced Options, clique em Create.
Etapa 3: Acesse o service productpage por meio do gateway serverless do ASM
Na barra de endereços do seu navegador, insira {Gateway IP address}/productpage para visualizar a interface de usuário da aplicação. Para obter o endereço IP do gateway, consulte {{XREF_2}}.
Etapa 4: Configure o recurso de coleta de logs de acesso do gateway serverless do ASM
Se você configurar o recurso de coleta de logs de acesso do gateway serverless do ASM, o gateway será reiniciado. Recomendamos que você execute esta 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 no 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 exemplo:
Clique em OK para atualizar o gateway serverless.
Etapa 5: Configure o acesso via HTTPS
-
Execute os seguintes comandos para gerar um certificado de Certificate Authority (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 no 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.
Parameter
Description
Name
O nome do certificado. Para este exemplo, insira myexample-credential.
Public Key Certificate
O documento eletrônico usado para comprovar a validade da chave pública. Para este exemplo, insira o conteúdo do arquivo aliyun.com.crt gerado em {{XREF_3}}.
Private Key
A chave privada. Para este exemplo, insira o conteúdo do arquivo aliyun.com.key gerado em {{XREF_4}}.
-
Crie um nome de domínio HTTPS.
No painel de navegação à esquerda, clique em Ingress Gateway. Clique no 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, em seguida, clique em Create.
-
Execute o seguinte comando 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: Visualize os logs de acesso do gateway serverless do ASM
Faça login no console do Simple Log Service.
-
Na área Projects, clique no nome do log de destino (o nome do log que você configurou em {{XREF_5}}). Na barra de navegação à esquerda, clique no ícone
(Log Storage). Na lista Logstore, clique em mesh-ingress-log. Na caixa de pesquisa, insira productpage e, em seguida, clique em Search & Analyze.Os resultados da consulta mostram os logs de acesso do
istio-ingressgateway. No campocontentde uma entrada de log, umroute_namecom valorproductpagee umresponse_codecom valor503indicam 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, permitindo que você visualize o painel de métricas na página . Para mais informações, consulte {{XREF_6}}.
-
No arquivo YAML do gateway serverless, adicione a anotação
asm.alibabacloud.com/export-metrics: ${ack-cluster-id}para exportar as métricas.Este recurso está disponível apenas para instâncias do ASM com versões 1.18.0.147 ou posteriores. Para mais informações sobre como atualizar uma instância do ASM, consulte {{XREF_7}}.
Após a adição da anotação asm.alibabacloud.com/export-metrics: ${ack-cluster-id}, os services e endpoints do gateway serverless do ASM são sincronizados com o cluster do 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 no 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 seguinte configuração e, em seguida, clique em Save.
O que fazer se eu não conseguir acessar uma aplicação de backend usando um gateway serverless do ASM?
-
Certifique-se de que o grupo de segurança do cluster desejado no plano de dados não bloqueie o tráfego 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 no nome da instância do ASM. No painel de navegação à esquerda, escolha .
Na página Basic Information, clique no 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 desejado 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 no nome do seu cluster. No painel de navegação à esquerda, clique em Cluster Information.
Na página Cluster Information, clique na aba Cluster Resources e, em seguida, clique no link à direita de Security Group.
Na página de detalhes do grupo de segurança, visualize as regras de entrada do grupo de segurança. Certifique-se de que o bloco CIDR do vSwitch da sua instância do ASM e a porta do pod da aplicação de 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 de backend está executando conforme o esperado.