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:
- Configuração de DNS e SSL
- Configuração do complemento de roteamento de aplicativos
- Configure o controlador de ingresso NGIX interno para a zona DNS privada do Azure.
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
noapp-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_pass
serviceaccount
,{
}
'
.
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.
Crie o namespace do aplicativo chamado
aks-store
para executar os pods de exemplo usando okubectl create namespace
comando.kubectl create namespace aks-store
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.
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
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
Configurar configurações de entrada personalizadas mostra como criar uma configuração de entrada avançada e configurar um domínio personalizado usando o DNS do Azure para gerenciar zonas DNS e configurar uma entrada segura.
Para integrar com um balanceador de carga interno do Azure e configurar uma zona DNS privada do Azure para habilitar a resolução DNS para os pontos de extremidade privados para resolver domínios específicos, consulte Configurar controlador de entrada NGINX interno para zona DNS privada do Azure.
Saiba mais sobre como monitorar as métricas do controlador ingress-nginx incluídas no complemento de roteamento de aplicativos com o Prometheus no Grafana (visualização) como parte da análise do desempenho e do uso do seu aplicativo.
Azure Kubernetes Service