Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Use MSE Ingresses to access applications in ACK clusters

Última atualização: Jun 27, 2026

O NGINX Ingress Controller padrão não oferece suporte a roteamento de tráfego complexo, múltiplos protocolos da camada de aplicação (como Dubbo e QUIC) ou balanceamento de tráfego na Camada 7. O MSE Ingress é uma implementação de Ingress baseada nos gateways nativos da nuvem do Alibaba Cloud Microservices Engine (MSE). Ele mantém compatibilidade com NGINX Ingresses e anotações do NGINX Ingress, preenchendo essas lacunas com os seguintes recursos:

  • Suporte a protocolos: Gerencia Dubbo, QUIC e outros protocolos da camada de aplicação, além de HTTP/HTTPS.

  • Governança de tráfego: Oferece canary releases para várias versões de serviço e regras flexíveis de roteamento de tráfego.

  • Proteção de segurança: Inclui recursos de segurança integrados no nível do gateway.

  • Alta disponibilidade: Executa como um gateway totalmente gerenciado e com múltiplas réplicas.

Este tópico descreve como configurar um MSE Ingress para rotear tráfego externo para aplicações em um cluster Container Service for Kubernetes (ACK). Para obter mais informações sobre MSE Ingresses e seu funcionamento, consulte Gerenciamento de MSE Ingress.

Pré-requisitos

Antes de começar, verifique se:

Etapa 1: Criar um gateway nativo da nuvem MSE

Um MseIngressConfig é um CustomResourceDefinition (CRD) fornecido pelo MSE Ingress Controller. Ele gerencia o ciclo de vida e as configurações globais de um gateway nativo da nuvem MSE.

Importante

Um MseIngressConfig mapeia para um único gateway nativo da nuvem. Se você precisar de vários gateways, crie múltiplos MseIngressConfigs. Excluir um MseIngressConfig também exclui o gateway nativo da nuvem mapeado, exceto no cenário de reutilização.

Execute o comando a seguir para criar um gateway chamado mse-ingress com três réplicas. Cada réplica usa 2 vCPUs e 4 GB de memória.

cat << EOF | kubectl apply -f -
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
  name: test
spec:
  name: mse-ingress                # Name of the cloud-native gateway
  common:
    instance:
      spec: 2c4g                   # 2 vCPUs, 4 GB memory per replica (default: 4c8g)
      replicas: 3                  # Number of gateway replicas (default: 3)
EOF
Nota

Quando você omite configurações opcionais, o sistema aplica os padrões:

  1. vSwitch: Seleciona automaticamente o vSwitch do nó Kubernetes agendado pelo MSE Ingress Controller. Apenas um vSwitch é configurado. Para ambientes de produção, configure manualmente dois vSwitches.

  2. SLB: Cria automaticamente uma instância de Server Load Balancer (SLB) voltada para a Internet com especificações slb.s2.small.

  3. Grupo de segurança: Cria automaticamente um grupo de segurança básico.

A tabela a seguir descreve os parâmetros em spec.

Parâmetro

Obrigatório

Padrão

Descrição

spec.name

Não

-

O nome do gateway nativo da nuvem.

spec.common.instance.spec

Não

4c8g

As especificações por réplica. Por exemplo, 2c4g significa 2 vCPUs e 4 GB de memória.

spec.common.instance.replicas

Não

3

O número de réplicas do gateway.

Para a referência completa de parâmetros, consulte Configurar um MseIngressConfig.

Etapa 2: Criar um recurso IngressClass

Um recurso IngressClass declara qual controlador de Ingress gerencia um conjunto de recursos Ingress. Associe o IngressClass ao MseIngressConfig criado na Etapa 1 para que o gateway nativo da nuvem processe as regras de Ingress correspondentes.

Escolha um dos métodos a seguir com base no seu cenário.

Método 1: Usar um recurso Kubernetes IngressClass (recomendado)

Utilize este método para novos serviços que acessam o MSE Ingress. Execute um dos comandos a seguir com base na versão do Kubernetes do seu cluster.

Clusters executando versões do Kubernetes anteriores à v1.19

cat << EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
  name: mse
spec:
  controller: mse.alibabacloud.com/ingress
  parameters:
    apiGroup: mse.alibabacloud.com       # API group of MseIngressConfig
    kind: MseIngressConfig               # Resource kind
    name: test                           # Name of the MseIngressConfig from Step 1
EOF

Clusters executando Kubernetes v1.19 ou posterior

cat << EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: mse
spec:
  controller: mse.alibabacloud.com/ingress
  parameters:
    apiGroup: mse.alibabacloud.com       # API group of MseIngressConfig
    kind: MseIngressConfig               # Resource kind
    name: test                           # Name of the MseIngressConfig from Step 1
EOF

Método 2: Usar recursos MseIngressConfig (para migração)

Adote este método ao migrar do NGINX Ingress para o MSE Ingress, ou em cenários onde não é possível criar recursos IngressClass. Durante a migração, tanto o NGINX Ingress quanto o MSE Ingress devem escutar o mesmo recurso IngressClass. Este método permite configurar o IngressClass diretamente dentro do MseIngressConfig, evitando conflitos de nomes de IngressClass.

Adicione o campo ingressClass ao MseIngressConfig criado na Etapa 1:

apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
  name: test
spec:
  name: mse-ingress
  common:
    instance:
      spec: 2c4g
      replicas: 3
  ingress:
    local:
      ingressClass: mse                  # IngressClass name to listen on

A tabela a seguir descreve os valores de ingress.local.ingressClass.

Valor

Comportamento

Não configurado

O gateway não escuta nenhum recurso Ingress.

mse

O gateway escuta recursos Ingress associados ao IngressClass chamado mse.

"" (string vazia)

O gateway escuta todos os recursos Ingress.

nginx

O gateway escuta recursos Ingress associados ao IngressClass chamado nginx, bem como recursos Ingress não associados a nenhum IngressClass.

Outros valores

O gateway escuta recursos Ingress associados ao IngressClass especificado.

Nota

Se tanto um recurso Kubernetes IngressClass (Método 1) quanto este parâmetro estiverem configurados, o recurso Kubernetes IngressClass terá precedência.

Verificar o status do gateway

Execute o comando a seguir para verificar o status do MseIngressConfig:

kubectl get MseIngressConfig test

Saída esperada:

NAME   STATUS      AGE
test   Listening   3m15s

O status Listening confirma que o gateway nativo da nuvem está em execução e monitorando recursos Ingress associados ao IngressClass mse.

As transições de status ocorrem na seguinte ordem:

Status

Descrição

Pending

O gateway está sendo criado. Esse processo leva cerca de 3 minutos.

Running

O gateway foi criado e está em execução.

Listening

O gateway está em execução e escutando recursos Ingress no cluster.

Failed

O gateway é inválido. Execute kubectl describe MseIngressConfig test e verifique o campo Message em Status para identificar a causa.

Etapa 3: Roteamento de tráfego para uma aplicação

Implantar um serviço de backend de exemplo

Execute o comando a seguir para implantar o serviço go-httpbin:

cat << EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
  name: go-httpbin
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: go-httpbin
  template:
    metadata:
      labels:
        app: go-httpbin
        version: v1
    spec:
      containers:
        - image: specialyang/go-httpbin:v3
          args:
            - "--port=8090"            # Application listens on port 8090
            - "--version=v1"           # Reports version v1
          imagePullPolicy: Always
          name: go-httpbin
          ports:
            - containerPort: 8090
---
apiVersion: v1
kind: Service
metadata:
  name: go-httpbin
  namespace: default
spec:
  ports:
    - port: 80                         # Service port exposed to Ingress
      targetPort: 8090                 # Forwards to container port 8090
      protocol: TCP
  selector:
    app: go-httpbin
EOF

Criar um recurso Ingress

Execute um dos comandos a seguir para criar um recurso Ingress. O Ingress roteia solicitações para example.com/version para o serviço go-httpbin.

Clusters executando versões do Kubernetes anteriores à v1.19

cat << EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress
  namespace: default
spec:
  ingressClassName: mse                  # Associates with the MSE IngressClass
  rules:
   - host: example.com
     http:
      paths:
      - path: /version
        backend:
          serviceName: go-httpbin
          servicePort: 80
EOF

Clusters executando Kubernetes v1.19 ou posterior

cat << EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress
  namespace: default
spec:
  ingressClassName: mse                  # Associates with the MSE IngressClass
  rules:
  - host: example.com
    http:
      paths:
      - backend:
          service:
            name: go-httpbin
            port:
              number: 80
        path: /version
        pathType: Prefix
EOF

Verificar o resultado

  1. Obtenha o endereço atribuído ao Ingress. Saída esperada:

       kubectl get ingress ingress
       NAME      CLASS   HOSTS            ADDRESS         PORTS   AGE
       ingress   mse     example.com      114.55.XX.XX   80      12m
  2. Envie uma solicitação de teste usando o endereço do Ingress. Saída esperada: A resposta version:v1 confirma que o tráfego foi roteado através do MSE Ingress para o serviço de backend go-httpbin.

       curl -H "host: example.com" <ADDRESS>/version
       version:v1
Nota

Se o campo ADDRESS estiver vazio, o gateway nativo da nuvem ainda pode estar provisionando. Aguarde alguns minutos e execute kubectl get ingress ingress novamente. Se o problema persistir, verifique o status do MseIngressConfig com kubectl describe MseIngressConfig test.

Limpar recursos

Para remover os recursos de exemplo criados neste tutorial, execute os seguintes comandos:

kubectl delete ingress ingress
kubectl delete service go-httpbin
kubectl delete deployment go-httpbin
Aviso

Excluir o MseIngressConfig também exclui o gateway nativo da nuvem MSE associado. Exclua-o apenas se não precisar mais do gateway:

kubectl delete MseIngressConfig test

Próximos passos