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).
  • aks-preview Extensão da CLI do Azure da versão 0.5.171 ou posterior instalada

Limitações

  • O complemento de roteamento de aplicativo oferece suporte a até cinco zonas DNS do Azure.
  • 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 -g <ResourceGroupName> -n <ClusterName> -l <Location> --enable-app-routing

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 -g <ResourceGroupName> -n <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 -g <ResourceGroupName> -n <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 hello-web-app-routing para executar os pods de exemplo usando o kubectl create namespace comando.

    kubectl create namespace hello-web-app-routing
    
  2. Crie a implantação copiando o seguinte manifesto YAML em um novo arquivo chamado deployment.yaml e salve o arquivo em seu computador local.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: aks-helloworld  
      namespace: hello-web-app-routing
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: aks-helloworld
      template:
        metadata:
          labels:
            app: aks-helloworld
        spec:
          containers:
          - name: aks-helloworld
            image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
            ports:
            - containerPort: 80
            env:
            - name: TITLE
              value: "Welcome to Azure Kubernetes Service (AKS)"
    
  3. Crie o serviço copiando o seguinte manifesto YAML em um novo arquivo chamado service.yaml e salve o arquivo em seu computador local.

    apiVersion: v1
    kind: Service
    metadata:
      name: aks-helloworld
      namespace: hello-web-app-routing
    spec:
      type: ClusterIP
      ports:
      - port: 80
      selector:
        app: aks-helloworld
    

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: aks-helloworld
      namespace: hello-web-app-routing
    spec:
      ingressClassName: webapprouting.kubernetes.azure.com
      rules:
      - host: <Hostname>
        http:
          paths:
          - backend:
              service:
                name: aks-helloworld
                port:
                  number: 80
            path: /
            pathType: Prefix
    
  2. Crie os recursos de cluster usando o kubectl apply comando.

    kubectl apply -f deployment.yaml -n hello-web-app-routing
    

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

    deployment.apps/aks-helloworld created
    
    kubectl apply -f service.yaml -n hello-web-app-routing
    

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

    service/aks-helloworld created
    
    kubectl apply -f ingress.yaml -n hello-web-app-routing
    

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

    ingress.networking.k8s.io/aks-helloworld 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 hello-web-app-routing

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

NAME             CLASS                                HOSTS               ADDRESS       PORTS     AGE
aks-helloworld   webapprouting.kubernetes.azure.com   myapp.contoso.com   20.51.92.19   80, 443   4m

Remover o complemento de roteamento de aplicativos

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

kubectl delete namespace hello-web-app-routing

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

az aks approuting disable --name myAKSCluster --resource-group myResourceGroup 

Quando o complemento de roteamento de aplicativo está desabilitado, alguns recursos do Kubernetes podem permanecer no cluster. Esses recursos incluem configMaps e secrets e são criados no namespace app-routing-system . Você pode remover esses recursos, se desejar.

Próximos passos