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:
- Configuração fácil de controladores de entrada NGINX gerenciados com base no controlador de entrada NGINX do Kubernetes.
- Integração ao DNS do Azure para gerenciamento de zona pública e privada
- Terminação SSL com certificados armazenados no Azure Key Vault.
Para outras configurações, confira:
- Configuração de DNS e SSL
- Configurações do complemento de roteamento de aplicativos
- Configure o controlador de entrada do NGIX interno para a zona DNS privada do Azure.
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.
Limitações
- O complemento de roteamento de aplicativos dá suporte a até cinco zonas DNS do Azure.
- O complemento de roteamento de aplicativos só pode ser habilitado em clusters do AKS com identidade gerenciada.
- 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 namespaceapp-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 \
--resource-group <ResourceGroupName> \
--name <ClusterName> \
--location <Location> \
--enable-app-routing \
--generate-ssh-keys
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 --resource-group <ResourceGroupName> --name <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 --resource-group <ResourceGroupName> --name <ClusterName>
Implantar um aplicativo
O complemento de roteamento de aplicativos usa anotações em objetos Ingress do Kubernetes para criar os recursos apropriados.
Crie o namespace de aplicativo chamado
aks-store
para executar os pods de exemplo usando o comandokubectl create namespace
.kubectl create namespace aks-store
Implante o aplicativo de repositório do 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
Esse manifesto criará as implantações e os serviços necessários para o aplicativo de repositório do AKS.
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.
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: 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 seguinte exemplo de saída mostra o recurso criado:
ingress.networking.k8s.io/store-front 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 aks-store
O seguinte exemplo de saída mostra a entrada gerenciada criada:
NAME CLASS HOSTS ADDRESS PORTS AGE
store-front webapprouting.kubernetes.azure.com * 51.8.10.109 80 110s
Verifique se o repositório do AKS funciona apontando o navegador para o endereço IP público do controlador de entrada. Localize o endereço IP com o kubectl:
kubectl get service -n app-routing-system nginx -o jsonpath="{.status.loadBalancer.ingress[0].ip}"
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 aks-store
Para remover o complemento de roteamento de aplicativos do cluster, use o comando az aks approuting disable
.
az aks approuting disable --name <ClusterName> --resource-group <ResourceGroupName>
Observação
Para evitar possíveis interrupções de tráfego no cluster quando o complemento de roteamento de aplicativos estiver desabilitado, 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ê poderá remover esses recursos se eles não forem mais necessários excluindo o namespace com kubectl delete ns app-routing-system
.
Próximas etapas
Definir configurações de entrada personalizadas mostra como criar uma configuração avançada de entrada e configurar um domínio personalizado usando o DNS do Azure para gerenciar zonas DNS e configurar uma entrada segura.
Para se integrar com um balanceador de carga interno do Azure e configurar uma zona DNS privada do Azure para habilitar a resolução de DNS para os pontos de extremidade privados e resolver domínios específicos, confira Configurar o controlador de entrada do NGINX interno para a 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 (versão prévia) como parte da análise do desempenho e do uso do aplicativo.
Azure Kubernetes Service