Implantando Cargas de Trabalho no AKS
Crie um cluster do AKS, implante uma aplicação com vários contêineres usando kubectl e gráficos do Helm e disponibilize-a externamente com um serviço do Azure Load Balancer.
Implantando Cargas de Trabalho no AKS é uma aula grátis de Cloud & IT Cert Prep no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cloud & IT Cert Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.
O que é o Azure Kubernetes Service?
O Azure Kubernetes Service (AKS) é uma oferta gerenciada do Kubernetes na qual a Microsoft opera e mantém o plano de controle (servidor de API, etcd, agendador) sem custo. Você paga apenas pelos nós de trabalho (VMs). O AKS gerencia atualizações de versão do Kubernetes, aplicação de patches no sistema operacional dos nós, escalabilidade do plano de controle e integração com a rede, o armazenamento e a identidade do Azure. Isso reduz drasticamente a sobrecarga operacional de executar o Kubernetes em produção.
Criação de um cluster do AKS
Crie um cluster do AKS com az aks create, especificando a quantidade de nós, o tamanho das VMs e as opções de rede. O AKS cria automaticamente um grupo de recursos de nós que contém as VMs, os discos gerenciados, as NICs e os balanceadores de carga. O modo de rede recomendado é o Azure CNI — cada pod recebe um endereço IP real da VNet, permitindo a conectividade direta com outros serviços do Azure sem NAT.
# Create an AKS cluster with 3 nodes
az aks create \
--name myAKSCluster \
--resource-group MyRG \
--location eastus \
--node-count 3 \
--node-vm-size Standard_D2s_v3 \
--enable-managed-identity \
--attach-acr mycontainerregistry \
--network-plugin azure \
--generate-ssh-keys
# Get kubectl credentials
az aks get-credentials --name myAKSCluster --resource-group MyRGPools de nós
Os clusters do AKS podem ter vários pools de nós — grupos de VMs com a mesma configuração. O pool de nós do sistema executa componentes essenciais do sistema Kubernetes (pods kube-system). Os pools de nós de usuário executam as cargas de trabalho dos seus aplicativos. Pools separados permitem combinar SKUs de VM — um pool de uso geral para aplicativos Web e um pool com GPU para cargas de trabalho de aprendizado de máquina — e escalar cada um de forma independente.
# Add a GPU node pool for ML workloads
az aks nodepool add \
--cluster-name myAKSCluster \
--resource-group MyRG \
--name gpupool \
--node-count 2 \
--node-vm-size Standard_NC6s_v3 \
--node-taints sku=gpu:NoSchedule
# List node pools
az aks nodepool list \
--cluster-name myAKSCluster \
--resource-group MyRG \
-o tableImplantação de um aplicativo com vários contêineres
Implante um aplicativo de várias camadas no AKS escrevendo arquivos de manifesto separados do Kubernetes para cada camada e aplicando-os com kubectl apply. Uma implantação típica inclui um Deployment para a camada Web, um Deployment para a camada de API, Services para conectá-las, um ConfigMap para a configuração do ambiente e um recurso Ingress para expor o aplicativo externamente por meio de um único nome de host.
# Apply all manifests in a directory
kubectl apply -f k8s/
# Or apply individual files
kubectl apply -f frontend-deployment.yaml
kubectl apply -f frontend-service.yaml
kubectl apply -f api-deployment.yaml
kubectl apply -f api-service.yaml
kubectl apply -f ingress.yaml
# Watch rollout status
kubectl rollout status deployment/frontend
kubectl rollout status deployment/apiIngress e Application Gateway
Um recurso Ingress define regras de roteamento HTTP que mapeiam nomes de host e caminhos de URL para serviços de back-end. Ao contrário de um serviço LoadBalancer (um IP externo por serviço), um único controlador Ingress gerencia todo o tráfego HTTP externo e o roteia com base nas regras. No AKS, use o NGINX Ingress Controller ou o Application Gateway Ingress Controller (AGIC) para encerrar o TLS e encaminhar o tráfego para vários serviços.
# Ingress routing traffic to two services by path
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
tls:
- hosts: [myapp.contoso.com]
secretName: myapp-tls
rules:
- host: myapp.contoso.com
http:
paths:
- path: /api
pathType: Prefix
backend:
service: {name: api-svc, port: {number: 80}}
- path: /
pathType: Prefix
backend:
service: {name: frontend-svc, port: {number: 80}}Gráficos do Helm para empacotamento de aplicativos
O Helm é o gerenciador de pacotes do Kubernetes. Um gráfico reúne todos os manifestos do Kubernetes de um aplicativo (Deployments, Services, Ingress, ConfigMaps) em um único pacote versionado e parametrizável. helm install implanta um gráfico com valores específicos do ambiente. O repositório do Helm no Artifact Hub hospeda milhares de gráficos pré-criados para infraestruturas comuns (NGINX, cert-manager, Prometheus, Redis).
# Add the NGINX Ingress Controller chart repo
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
# Install NGINX Ingress Controller
helm install ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx \
--create-namespace \
--set controller.replicaCount=2
# Install your own app chart with custom values
helm install myapp ./charts/myapp -f values-prod.yamlAtualizações graduais e reversões
Atualize um Deployment alterando a etiqueta da imagem do contêiner — o Kubernetes executa uma atualização gradual, criando novos pods com a imagem atualizada e encerrando os antigos progressivamente, mantendo o aplicativo disponível durante todo o processo. Se a nova versão apresentar problemas, reverta instantaneamente para a revisão anterior usando kubectl rollout undo. O Kubernetes mantém um histórico configurável de revisões para cada Deployment.
# Update the image to a new version
kubectl set image deployment/myapp \
myapp=mycontainerregistry.azurecr.io/myapp:v2.0
# Watch the rollout progress
kubectl rollout status deployment/myapp
# View rollout history
kubectl rollout history deployment/myapp
# Rollback to the previous version
kubectl rollout undo deployment/myapp
# Rollback to a specific revision
kubectl rollout undo deployment/myapp --to-revision=2Cluster Autoscaler
O Cluster Autoscaler adiciona ou remove automaticamente nós de trabalho de um pool de nós do AKS com base no agendamento de pods pendentes e na utilização dos nós. Quando não é possível agendar pods porque todos os nós estão lotados, o Cluster Autoscaler provisiona novos nós. Quando os nós estão subutilizados e os pods podem ser consolidados, ele drena e remove os nós. Isso complementa o Horizontal Pod Autoscaler — o HPA escala pods, enquanto o Cluster Autoscaler escala nós.
# Enable Cluster Autoscaler on the default node pool
az aks update \
--name myAKSCluster \
--resource-group MyRG \
--enable-cluster-autoscaler \
--min-count 2 \
--max-count 10
# Update autoscaler bounds on a specific node pool
az aks nodepool update \
--cluster-name myAKSCluster \
--resource-group MyRG \
--name nodepool1 \
--enable-cluster-autoscaler \
--min-count 3 \
--max-count 20Monitoramento do AKS com o Azure Monitor
Habilite o Azure Monitor Container Insights para coletar registros e métricas do seu cluster do AKS sem implantar ferramentas de monitoramento de terceiros. O Container Insights fornece painéis pré-criados para a integridade do cluster, a CPU e a memória dos nós e pods, os registros dos contêineres e a transmissão ao vivo de pods. Ele se integra ao Prometheus para a coleta de métricas personalizadas e permite consultar todos os dados usando KQL no Log Analytics.
# Enable Azure Monitor Container Insights on AKS
az aks enable-addons \
--addons monitoring \
--name myAKSCluster \
--resource-group MyRG \
--workspace-resource-id /subscriptions/.../workspaces/MyLogAnalytics
# Stream live logs from a running pod
kubectl logs -f deployment/myapp -c myapp
# Query pod resource usage
kubectl top pods --namespace defaultRBAC do AKS e Azure Active Directory
Integre o AKS ao Microsoft Entra ID para usar usuários e grupos do Azure AD no RBAC do Kubernetes. Em vez de gerenciar contas de usuário separadas do Kubernetes, atribua ClusterRole ou vinculações de função a IDs de objeto do Entra ID. Quando um desenvolvedor executa kubectl, o AKS valida o token do Entra ID. Isso fornece gerenciamento centralizado de identidades e integração com o acesso condicional e as políticas de MFA.
# Enable Entra ID RBAC on an AKS cluster
az aks update \
--name myAKSCluster \
--resource-group MyRG \
--enable-azure-rbac
# Assign a built-in AKS role to an Entra group
az role assignment create \
--role 'Azure Kubernetes Service RBAC Reader' \
--assignee '<Entra-Group-Object-ID>' \
--scope /subscriptions/.../resourceGroups/MyRG/providers/Microsoft.ContainerService/managedClusters/myAKSClusterPolíticas de rede para segurança no nível dos pods
As políticas de rede são recursos do Kubernetes que controlam quais pods podem se comunicar entre si. Por padrão, todos os pods de um cluster podem alcançar todos os outros pods — as políticas de rede fornecem um firewall no nível dos pods. No AKS, habilite a política de rede do Azure ou o Calico para aplicar essas políticas. Um padrão comum é uma política de negação padrão que bloqueia todo o tráfego entre pods e, em seguida, políticas explícitas de permissão para os caminhos específicos de que o aplicativo precisa.
# Default deny all ingress to pods in namespace
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-ingress
namespace: production
spec:
podSelector: {} # Matches all pods
policyTypes:
- Ingress
# Allow API pods to receive from frontend pods only
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: api-allow-frontend
spec:
podSelector: {matchLabels: {app: api}}
ingress:
- from:
- podSelector: {matchLabels: {app: frontend}}Verificação rápida
Teste sua compreensão dos conceitos do Microsoft Azure Fundamentals (AZ-900) apresentados nesta lição.
Recapitulação da lição
Nesta lição, você aprendeu que: o AKS é um serviço gerenciado do Kubernetes no qual a Microsoft opera o plano de controle; os gráficos do Helm empacotam aplicativos Kubernetes com vários recursos para permitir implantações repetíveis; e o Cluster Autoscaler adiciona e remove nós dinamicamente com base na demanda de agendamento dos pods. A seguir, exploraremos os gatilhos e as associações do Azure Functions.
Perguntas Frequentes
A aula “Implantando Cargas de Trabalho no AKS” é grátis?
Sim — o texto completo de “Implantando Cargas de Trabalho no AKS” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cloud & IT Cert Prep, atualize para CoddyKit PRO. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.
O que vou aprender em “Implantando Cargas de Trabalho no AKS”?
Crie um cluster do AKS, implante uma aplicação com vários contêineres usando kubectl e gráficos do Helm e disponibilize-a externamente com um serviço do Azure Load Balancer. Você pratica Cloud & IT Cert Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cloud & IT Cert Prep?
Nenhuma experiência prévia é necessária. Cloud & IT Cert Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Implantando Cargas de Trabalho no AKS”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cloud & IT Cert Prep?
Sim. Cada aula de Cloud & IT Cert Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Registro de Contêineres do Azure
- Instâncias de Contêineres do Azure
- Conceitos de Kubernetes para o Azure
- Implantando Cargas de Trabalho no AKS