Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Improve availability and elasticity with an ASM Serverless gateway

Última atualização: Sep 21, 2026

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

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.

  1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha ASM Gateways > Ingress Gateway.

  3. 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: LoadBalancer

    Nota: 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

  1. Crie um nome de domínio HTTP.

    1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

    2. Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha ASM Gateways > Ingress Gateway.

    3. 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.

    4. No painel Add domain, defina Domain como *, Protocol como HTTP, Port Name como http e port como 80. Em seguida, clique em Create.

  2. Importe o service productpage.

    1. No painel de navegação à esquerda do gateway, clique em Upstream Service e, em seguida, clique em Import service.

    2. No painel Import service, selecione o namespace default, selecione productpage, clique no ícone Dingtalk_20230302182310.png e, em seguida, clique em Submit.

  3. Crie uma regra de roteamento.

    1. No painel de navegação à esquerda do gateway, clique em Route management e, em seguida, clique em Create.

    2. 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.

    3. Na etapa set route destination, defina select upstream service como productpage e, em seguida, clique em Next.

    4. 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

Importante

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.

  1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha ASM Gateways > Ingress Gateway.

  3. 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:

    Show the ingressgateway.yaml file

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: IstioGateway
    metadata:
      annotations:
        asm.alibabacloud.com/managed-by-asm: 'true'
        asm.alibabacloud.com/aliyun-logs-project: mesh-log-c4e1bbed247634d0482000d94e947****
      name: ingressgateway
      namespace: istio-system
    spec:
     ....
  4. Clique em OK para atualizar o gateway serverless.

Etapa 5: Configure o acesso via HTTPS

  1. 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
  2. Configure o certificado.

    1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

    2. Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha ASM Gateways > Certificate Management.

    3. 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}}.

  3. Crie um nome de domínio HTTPS.

    1. 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.

    2. 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.

  4. 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

  1. Faça login no console do Simple Log Service.

  2. 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 Dingtalk_20231122151017.png (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 campo content de uma entrada de log, um route_name com valor productpage e um response_code com valor 503 indicam que o gateway retornou uma resposta 503 para essa rota.

Perguntas frequentes

Como exportar as métricas de um gateway serverless do ASM?

  1. 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 Observability Management Center > Monitoring metrics. Para mais informações, consulte {{XREF_6}}.

  2. 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.

  3. No console do Application Real-Time Monitoring Service (ARMS), configure o endpoint para coleta de dados.

    1. Faça login no console do ARMS.

    2. No painel de navegação à esquerda, escolha Managed Service for Prometheus > Instances. No canto superior esquerdo, selecione a região de destino.

    3. Na página Instances, clique no nome da instância do Prometheus. No painel de navegação à esquerda, clique em Settings.

    4. Na aba Settings da página Settings, clique em Edit Prometheus.yaml, adicione a seguinte configuração e, em seguida, clique em Save.

      Show the YAML code

      scrape_configs:
      - job_name: istio-system/managed-envoy
        honor_timestamps: true
        honor_labels: false
        scrape_interval: 30s
        scheme: http
        metrics_path: /stats/prometheus
        relabel_configs:
        - regex: 'true'
          action: keep
          source_labels:
          - __meta_kubernetes_service_labelpresent_asm_sync_target
          replacement: $1
          separator: ;
        - regex: http-envoy-prom
          action: keep
          source_labels:
          - __meta_kubernetes_endpoint_port_name
          replacement: $1
          separator: ;
        - regex: (.*)
          action: replace
          source_labels:
          - __meta_kubernetes_namespace
          replacement: $1
          separator: ;
          target_label: namespace
        metric_relabel_configs:
        - regex: envoy_.*
          action: drop
          source_labels:
          - __name__
          replacement: $1
          separator: ;
        kubernetes_sd_configs:
        - role: endpoints
          namespaces: {}
          follow_redirects: true
        scrape_timeout: 10s

O que fazer se eu não conseguir acessar uma aplicação de backend usando um gateway serverless do ASM?

  1. 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.

    1. Visualize o bloco CIDR do vSwitch da sua instância do ASM.

      1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

      2. Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha Instance Information > Base Information.

      3. Na página Basic Information, clique no link à direita de vSwitch. Na página de detalhes do vSwitch, localize o bloco CIDR do vSwitch.

    2. Visualize o grupo de segurança do cluster desejado no plano de dados.

      1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

      2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Cluster Information.

      3. Na página Cluster Information, clique na aba Cluster Resources e, em seguida, clique no link à direita de Security Group.

      4. 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.

  2. 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.