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