Entrada NGINX gerenciada com o complemento de roteamento de aplicativo

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

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

Complemento de roteamento de aplicativo com recursos do NGINX

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

Para outras configurações, confira:

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

Pré-requisitos

  • Uma assinatura do Azure. Caso não tenha uma assinatura do Azure, é possível criar uma conta gratuita.
  • CLI do Azure versão 2.54.0 ou posterior instalada e configurada. Execute az --version para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.
  • A extensão da CLI do Azure aks-preview da versão 0.5.171 ou posterior instalada

Limitações

  • O complemento de roteamento de aplicativos dá suporte a até cinco zonas DNS do Azure.
  • Todas as zonas DNS globais do Azure integradas ao complemento precisam estar no mesmo grupo de recursos.
  • Todas as zonas DNS privadas do Azure integradas ao complemento precisam estar no mesmo grupo de recursos.
  • Não há suporte para a edição do ConfigMap ingress-nginx no namespace app-routing-system.
  • As anotações de snippet de código a seguir são bloqueadas e impedirão que uma entrada seja configurada: load_module, lua_package, _by_lua, location, root, proxy_pass, serviceaccount, {, }, '.

Habilitação do roteamento de aplicativos usando a CLI do Azure

Habilitação em um novo cluster

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

az aks create -g <ResourceGroupName> -n <ClusterName> -l <Location> --enable-app-routing

Habilitação em um cluster existente

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

az aks approuting enable -g <ResourceGroupName> -n <ClusterName>

Conectar-se ao cluster do AKS

Para se conectar ao cluster Kubernetes no computador local, use o kubectl, o cliente de linha de comando do Kubernetes. Se você quiser instalá-lo localmente, use o comando az aks install-cli. Se você usa o Azure Cloud Shell, o kubectl já estará instalado.

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

az aks get-credentials -g <ResourceGroupName> -n <ClusterName>

Implantar um aplicativo

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

  1. Crie o namespace de aplicativo chamado hello-web-app-routing para executar os pods de exemplo usando o comando kubectl create namespace.

    kubectl create namespace hello-web-app-routing
    
  2. Crie a implantação copiando o manifesto YAML a seguir em um novo arquivo chamado deployment.yaml e salve o arquivo no 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 manifesto YAML a seguir em um novo arquivo chamado service.yaml e salve o arquivo no 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 De entrada

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

  1. Copie o manifesto YAML a seguir em um novo arquivo chamado ingress.yaml e salve o arquivo no 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 comando kubectl apply.

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

    O seguinte exemplo de saída mostra o recurso criado:

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

    O seguinte exemplo de saída mostra o recurso criado:

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

    O seguinte exemplo de saída mostra o recurso criado:

    ingress.networking.k8s.io/aks-helloworld created
    

Verificar se a entrada gerenciada foi criada

Verifique se a entrada gerenciada foi criada usando o comando kubectl get ingress.

kubectl get ingress -n hello-web-app-routing

O seguinte exemplo de saída mostra a entrada gerenciada criada:

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

Remova a visão geral do complemento de roteamento de aplicativos

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

kubectl delete namespace hello-web-app-routing

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

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

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

Próximas etapas