Entrada NGINX gerenciada com o complemento de roteamento de aplicativos

Uma maneira de rotear o tráfego HTTP (Hypertext Transfer Protocol) e seguro (HTTPS) para aplicativos em execução em um cluster do Serviço Kubernetes (AKS) do Azure é usar o objeto Kubernetes Ingress. Quando você cria um objeto Ingress que usa as classes NGINX Ingress do complemento de roteamento de aplicativo, o complemento cria, configura e gerencia um ou mais controladores Ingress em seu cluster AKS.

Este artigo mostra como implantar e configurar um controlador de entrada básico em seu cluster AKS.

Complemento de roteamento de aplicativos com recursos NGINX

O complemento de roteamento de aplicativos com NGINX oferece o seguinte:

  • Fácil configuração de controladores NGINX Ingress gerenciados baseados no controlador Kubernetes NGINX Ingress.
  • Integração com o DNS do Azure para gerenciamento de zona pública e privada
  • Terminação SSL com certificados armazenados no Cofre da Chave do Azure.

Para outras configurações, consulte:

Com a desativação do Open Service Mesh (OSM) pela Cloud Native Computing Foundation (CNCF), o uso do complemento de roteamento de aplicativos com OSM não é recomendado.

Pré-requisitos

  • Uma subscrição do Azure. Se não tiver uma subscrição do Azure, pode criar uma conta gratuita.
  • Azure CLI versão 2.54.0 ou posterior instalada e configurada. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).

Limitações

  • O complemento de roteamento de aplicativo oferece suporte a até cinco zonas DNS do Azure.
  • O complemento de roteamento de aplicativos só pode ser habilitado em clusters AKS com identidade gerenciada.
  • Todas as zonas DNS globais do Azure integradas com o complemento devem estar no mesmo grupo de recursos.
  • Todas as zonas DNS privadas do Azure integradas com o complemento devem estar no mesmo grupo de recursos.
  • Não há suporte para a edição do ingress-nginx ConfigMap no app-routing-system namespace.
  • As seguintes anotações de snippet são bloqueadas e impedirão que um Ingress seja configurado: load_module, lua_package, _by_lua, location, root, proxy_passserviceaccount, {}'.

Habilitar o roteamento de aplicativos usando a CLI do Azure

Habilitar em um novo cluster

Para habilitar o roteamento de aplicativos em um novo cluster, use o az aks create comando, especificando o --enable-app-routing sinalizador.

az aks create \
    --resource-group <ResourceGroupName> \
    --name <ClusterName> \
    --location <Location> \
    --enable-app-routing \
    --generate-ssh-keys

Habilitar em um cluster existente

Para habilitar o roteamento de aplicativos em um cluster existente, use o az aks approuting enable comando.

az aks approuting enable --resource-group <ResourceGroupName> --name <ClusterName>

Conecte-se ao cluster AKS

Para ligar ao cluster de Kubernetes a partir do computador local, utilize kubectl, o cliente de linha de comandos do Kubernetes. Você pode instalá-lo localmente usando o az aks install-cli comando. Se utilizar o Azure Cloud Shell, o kubectl já está instalado.

Configure kubectl para se conectar ao cluster do Kubernetes usando o comando az aks get-credentials .

az aks get-credentials --resource-group <ResourceGroupName> --name <ClusterName>

Implementar uma aplicação

O complemento de roteamento de aplicativo usa anotações em objetos Kubernetes Ingress para criar os recursos apropriados.

  1. Crie o namespace do aplicativo chamado aks-store para executar os pods de exemplo usando o kubectl create namespace comando.

    kubectl create namespace aks-store
    
  2. Implante o aplicativo de armazenamento AKS usando o seguinte arquivo de manifesto YAML:

    kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/sample-manifests/docs/app-routing/aks-store-deployments-and-services.yaml -n aks-store
    

Este manifesto criará as implantações e serviços necessários para o aplicativo de armazenamento AKS.

Criar o objeto Ingress

O complemento de roteamento de aplicativo cria uma classe Ingress no cluster chamada webapprouting.kubernetes.azure.com. Quando você cria um objeto Ingress com essa classe, ele ativa o complemento.

  1. Copie o seguinte manifesto YAML em um novo arquivo chamado ingress.yaml e salve o arquivo em seu computador local.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: store-front
      namespace: aks-store
    spec:
      ingressClassName: webapprouting.kubernetes.azure.com
      rules:
      - http:
          paths:
          - backend:
              service:
                name: store-front
                port:
                  number: 80
            path: /
            pathType: Prefix
    
  2. Crie o recurso de entrada usando o kubectl apply comando.

    kubectl apply -f ingress.yaml -n aks-store
    

    O exemplo de saída a seguir mostra o recurso criado:

    ingress.networking.k8s.io/store-front created
    

Verifique se o Ingress gerenciado foi criado

Você pode verificar se o Ingress gerenciado foi criado usando o kubectl get ingress comando.

kubectl get ingress -n aks-store

A saída de exemplo a seguir mostra o Ingresso gerenciado criado:

NAME          CLASS                                HOSTS   ADDRESS       PORTS   AGE
store-front   webapprouting.kubernetes.azure.com   *       51.8.10.109   80      110s

Você pode verificar se a loja AKS funciona apontando seu navegador para o endereço IP público do controlador Ingress. Encontre o endereço IP com kubectl:

kubectl get service -n app-routing-system nginx -o jsonpath="{.status.loadBalancer.ingress[0].ip}"

Remover o complemento de roteamento de aplicativos

Para remover o namespace associado, use o kubectl delete namespace comando.

kubectl delete namespace aks-store

Para remover o complemento de roteamento de aplicativos do cluster, use o az aks approuting disable comando.

az aks approuting disable --name <ClusterName> --resource-group <ResourceGroupName>

Nota

Para evitar possíveis interrupções do tráfego no cluster quando o complemento de roteamento de aplicativos estiver desativado, alguns recursos do Kubernetes, incluindo configMaps, segredos e a implantação que executa o controlador, permanecerão no cluster. Esses recursos estão no namespace app-routing-system . Você pode remover esses recursos se eles não forem mais necessários, excluindo o namespace com kubectl delete ns app-routing-system.

Próximos passos