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). 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
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 -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.
- Complemento de roteamento de aplicativos
- Open Service Mesh (desativado)
- Anotações de serviço (desativado)
Crie o namespace do aplicativo chamado
hello-web-app-routing
para executar os pods de exemplo usando okubectl create namespace
comando.kubectl create namespace hello-web-app-routing
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)"
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.
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
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
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.