Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste artigo, você provisiona os principais recursos do Azure necessários para uma implantação do AKS pronta para produção. Este artigo valida o acesso do Azure, cria um grupo de recursos, estabelece um ACR (Registro de Contêiner do Azure), implanta um cluster AKS de linha de base, adiciona opcionalmente um pool de nós adicional para cargas de trabalho do usuário e concede permissão de cluster para efetuar pull do ACR. Todos os comandos dependem de variáveis de ambiente parametrizadas para que o fluxo de trabalho permaneça repetível entre regiões e assinaturas.
Pré-requisitos
Você precisa das seguintes ferramentas e acesso à conta antes de seguir o guia. Verifique se você está autenticado no Azure usando az login e tenha permissões suficientes para criar grupos de recursos, registros de contêiner e clusters do AKS.
- Assinatura do Azure com cota para a região selecionada
- CLI do Azure (
az) com direitos de Proprietário ou Colaborador - kubectl configurado localmente para acesso ao cluster
- jq (opcional) para analisar a saída JSON durante a verificação
Execute os seguintes comandos para confirmar se você tem todas as ferramentas necessárias da CLI e o acesso ao Azure:
command -v az >/dev/null || echo "Azure CLI missing"
command -v kubectl >/dev/null || echo "kubectl missing"
command -v jq >/dev/null || echo "jq missing (optional)"
Configurar o ambiente
Aqui, você define todas as variáveis de ambiente usadas em todas as etapas de provisionamento. O carimbo de data/hora HASH mantém os nomes de recursos exclusivos durante execuções repetidas. As configurações padrão do cluster e do registro visam uma implementação mínima para fins de prova de conceito, mas você pode ajustá-las conforme necessário.
Os comandos a seguir estabelecem o escopo do Azure, o dimensionamento do AKS e as convenções de nomenclatura do ACR para a sequência de provisionamento, independentemente das cargas de trabalho downstream.
export HASH="${HASH:-$(date -u +"%y%m%d%H%M")}" # YYMMDDHHMM stamp
# Azure scope and regional placement
export LOCATION="${LOCATION:-eastus2}"
export SUBSCRIPTION_ID="${SUBSCRIPTION_ID:-$(az account show --query id -o tsv)}"
export RESOURCE_GROUP="${RESOURCE_GROUP:-rg_aks_${HASH}}"
# AKS cluster naming and version control
# Hyphen required because AKS cluster names cannot include underscores
export AKS_CLUSTER_NAME="${AKS_CLUSTER_NAME:-aks-openwebsearch-${HASH}}"
export AKS_VERSION="${AKS_VERSION:-}" # Optional Kubernetes version override
# Node pool sizing
export AKS_SYSTEM_NODE_COUNT="${AKS_SYSTEM_NODE_COUNT:-1}"
export AKS_USER_NODE_COUNT="${AKS_USER_NODE_COUNT:-1}"
export AKS_NODE_VM_SIZE="${AKS_NODE_VM_SIZE:-Standard_D4s_v5}"
export AKS_SYSTEM_NODEPOOL_NAME="${AKS_SYSTEM_NODEPOOL_NAME:-system}"
export AKS_USER_NODEPOOL_NAME="${AKS_USER_NODEPOOL_NAME:-user}"
# ACR configuration
export ACR_NAME="${ACR_NAME:-acrwebsearch${HASH}}"
export ACR_LOGIN_SERVER="${ACR_LOGIN_SERVER:-${ACR_NAME}.azurecr.io}"
Verificar valores de variável de ambiente
Examine a configuração efetiva antes de criar recursos. Execute novamente o bloco após quaisquer ajustes para garantir que os valores ativos estejam corretos para a assinatura e a região de destino.
Utilize os seguintes comandos para definir os parâmetros ativos e validar as opções de nomenclatura, tamanho e região.
: "${HASH:=$(date -u +"%y%m%d%H%M")}" # Ensure HASH exists
VARS=(
HASH
LOCATION
SUBSCRIPTION_ID
RESOURCE_GROUP
AKS_CLUSTER_NAME
AKS_VERSION
AKS_SYSTEM_NODE_COUNT
AKS_USER_NODE_COUNT
AKS_NODE_VM_SIZE
AKS_SYSTEM_NODEPOOL_NAME
AKS_USER_NODEPOOL_NAME
ACR_NAME
ACR_LOGIN_SERVER
)
for v in "${VARS[@]}"; do
printf "%s=%s\n" "$v" "${!v}"
done
Steps
Execute cada etapa sequencialmente. Cada subseção inclui finalidade, comandos e um resumo para confirmar os resultados esperados.
Verificar o contexto da assinatura do Azure
Verifique a assinatura ativa do Azure e verifique se os provedores de recursos necessários para operações do AKS e do ACR estão registrados.
az account show --query id -o tsv
az provider register --namespace Microsoft.ContainerService
az provider register --namespace Microsoft.ContainerRegistry
Criar um grupo de recursos
Provisione um grupo de recursos dedicado para isolar o cluster do AKS, o registro e a infraestrutura de suporte para suas cargas de trabalho.
az group create \
--name "${RESOURCE_GROUP}" \
--location "${LOCATION}" \
--output table
Provisionar o Registro de Contêiner do Azure
Crie um Registro de Contêiner do Azure para armazenar imagens de contêiner e autenticar o daemon local do Docker para enviar imagens por push.
az acr create \
--name "${ACR_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--location "${LOCATION}" \
--sku Basic \
--output table
az acr login --name "${ACR_NAME}"
Criar o Cluster do AKS
Implante o cluster do AKS para hospedar suas cargas de trabalho. Proteja-se contra reutilizações de um nome de cluster existente verificando antes da criação.
if az aks show \
--name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" >/dev/null 2>&1; then
echo "AKS cluster ${AKS_CLUSTER_NAME} already exists in ${RESOURCE_GROUP}";
echo "Skip creation or provide a new AKS_CLUSTER_NAME.";
else
az aks create \
--name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--location "${LOCATION}" \
--generate-ssh-keys \
--node-count "${AKS_SYSTEM_NODE_COUNT}" \
--nodepool-name "${AKS_SYSTEM_NODEPOOL_NAME}" \
--node-vm-size "${AKS_NODE_VM_SIZE}" \
${AKS_VERSION:+--kubernetes-version "${AKS_VERSION}"} \
--output table
fi
Adicionar pool de nós de usuário opcional
Provisione um pool de nós adicional quando solicitado. O comando add é executado de forma assíncrona para evitar tempos limite da CLI; o comando de espera acompanha o progresso do Azure. O script primeiro verifica se o pool já existe para evitar erros de nome duplicados.
if [ "${AKS_USER_NODE_COUNT}" -gt 0 ]; then
if az aks nodepool show \
--cluster-name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--name "${AKS_USER_NODEPOOL_NAME}" >/dev/null 2>&1; then
echo "Node pool ${AKS_USER_NODEPOOL_NAME} already exists; skipping add.";
else
az aks nodepool add \
--cluster-name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--name "${AKS_USER_NODEPOOL_NAME}" \
--node-count "${AKS_USER_NODE_COUNT}" \
--node-vm-size "${AKS_NODE_VM_SIZE}" \
--no-wait
az aks nodepool wait \
--cluster-name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--name "${AKS_USER_NODEPOOL_NAME}" \
--created
fi
fi
Recuperar credenciais de cluster
Incorpore o arquivo kubeconfig do AKS no contexto local e verifique se todos os nós estão acessíveis.
az aks get-credentials \
--name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--overwrite-existing
kubectl get nodes -o wide
Anexar o ACR ao cluster do AKS
Conceda permissão ao cluster do AKS para obter imagens do ACR provisionado, de modo que futuras implementações possam acessar suas imagens de contêiner.
az aks update \
--name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--attach-acr "${ACR_NAME}" \
--output table
Verificação
Confirme se o cluster do AKS existe e responde a consultas básicas kubectl antes de continuar com as etapas de implantação downstream. Comece garantindo que o cluster do AKS exista.
if ! az aks show \
--name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--query "{name:name,provisioningState:provisioningState,location:location}" \
--output table; then
echo "AKS cluster '${AKS_CLUSTER_NAME}' not found in resource group '${RESOURCE_GROUP}'."
else
echo "AKS cluster '${AKS_CLUSTER_NAME}' exists in resource group '${RESOURCE_GROUP}'."
fi
Se o cluster do AKS tiver sido criado, você verá algo como:
AKS cluster ${AKS_CLUSTER_NAME} exists in resource group ${RESOURCE_GROUP}.
Em seguida, verifique kubectl se está configurado corretamente:
kubectl cluster-info
Esse comando gerará o status do cluster atual, algo como:
Kubernetes control plane is running at ...
CoreDNS is running at https://...
Metrics-server is running at https://...
Por fim, verifique se há nós de sistema e de usuário disponíveis:
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.labels.agentpool}{"\n"}{end}' |
sort |
uniq -c
Isso exibirá uma contagem de nós, algo como:
1 system
1 user
Resumo: Validou que o cluster do AKS está presente, íntegro e acessível por meio do kubectl no contexto atual.
Resumo
O grupo de recursos, o registro de contêiner, o cluster AKS, o pool de nós opcional e a conexão de registro são validados, deixando o cluster pronto para quaisquer cargas de trabalho em contêineres.
Próximas etapas
- Prossiga com
docs/OpenWebSearch_On_AKS.mdpara implementar o KMCP e o servidor MCP - Configurar atribuições de função ou políticas de rede específicas à sua postura de segurança
- Integrar o Azure Monitor ou o Log Analytics para visibilidade operacional
- Executar comandos de limpeza de infraestrutura após a experimentação para gerenciar custos