Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo articolo, si effettuano il provisioning delle risorse Azure principali che servono per una distribuzione AKS pronta per la produzione. Questo articolo convalida l'accesso ad Azure, crea un gruppo di risorse, stabilisce un Registro Azure Container(ACR), distribuisce un cluster del servizio Azure Kubernetes di base, aggiunge facoltativamente un pool di nodi aggiuntivo per i carichi di lavoro utente e concede al cluster l'autorizzazione per il pull da Registro Azure Container. Tutti i comandi si basano su variabili di ambiente con parametri, in modo che il flusso di lavoro rimanga ripetibile tra aree e sottoscrizioni.
Prerequisiti
Prima di eseguire la guida, sono necessari gli strumenti e l'accesso all'account seguenti. Assicurarsi di essere autenticati in Azure usando az login e avere autorizzazioni sufficienti per creare gruppi di risorse, registri contenitori e cluster del servizio Azure Kubernetes.
- Sottoscrizione di Azure con quota per l'area selezionata
- Azure CLI (
az) con autorizzazioni di proprietario o collaboratore - kubectl configurato in locale per l'accesso al cluster
- jq (facoltativo) per l'analisi dell'output JSON durante la verifica
Eseguire i comandi seguenti per verificare di avere tutti gli strumenti necessari per l'interfaccia della riga di comando e l'accesso ad 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)"
Configurare l'ambiente
In questo caso si definiscono tutte le variabili di ambiente usate durante i passaggi di provisioning. Il HASH timestamp mantiene univoci i nomi delle risorse durante le esecuzioni ripetute. Le impostazioni predefinite del cluster e del registro sono destinate a un ingombro minimo per una prova di concetto, ma è possibile modificarle in base alle esigenze.
I comandi seguenti stabiliscono l'ambito di Azure, il dimensionamento del servizio Azure Kubernetes e le convenzioni di denominazione del Registro Azure Container per la sequenza di provisioning, a prescindere dai carichi di lavoro a valle.
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}"
Verificare i valori delle variabili di ambiente
Esaminare la configurazione effettiva prima di creare risorse. Eseguire di nuovo il blocco dopo eventuali modifiche per assicurarsi che i valori attivi siano corretti per la sottoscrizione e l'area di destinazione.
Usare i comandi seguenti per aggiungere i parametri attivi per convalidare le scelte di denominazione, ridimensionamento e area.
: "${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
Eseguire ogni passaggio in sequenza. Ogni sottosezione include scopo, comandi e un riepilogo per confermare i risultati previsti.
Controllare il contesto della sottoscrizione di Azure
Verificare la sottoscrizione Azure attiva ed assicurarsi che i provider di risorse necessari per le operazioni del Servizio Azure Kubernetes (AKS) e dell'Azure Container Registry (ACR) siano registrati.
az account show --query id -o tsv
az provider register --namespace Microsoft.ContainerService
az provider register --namespace Microsoft.ContainerRegistry
Creare un gruppo di risorse
Effettuare il provisioning di un gruppo di risorse dedicato per isolare il cluster del servizio Azure Kubernetes, il registro e l'infrastruttura di supporto per i carichi di lavoro.
az group create \
--name "${RESOURCE_GROUP}" \
--location "${LOCATION}" \
--output table
Configurare il Registro dei Contenitori di Azure
Creare un Registro Azure Container per archiviare le immagini del contenitore e autenticare il daemon Docker locale per eseguire il push delle immagini.
az acr create \
--name "${ACR_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--location "${LOCATION}" \
--sku Basic \
--output table
az acr login --name "${ACR_NAME}"
Creare il cluster servizio Azure Kubernetes
Distribuire il cluster AKS per ospitare i carichi di lavoro. Proteggersi dal riutilizzo di un nome del cluster esistente controllando prima della creazione.
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
Aggiungere un pool di nodi utente facoltativo
Effettuare il provisioning di un pool di nodi aggiuntivo quando richiesto. Il comando add viene eseguito in modo asincrono per evitare timeout dell'interfaccia della riga di comando; Il comando wait tiene traccia dello stato di avanzamento di Azure. Lo script controlla innanzitutto se il pool esiste già per evitare errori di nome duplicati.
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
Recuperare le credenziali del cluster
Integrare la configurazione Kubeconfig di AKS nel contesto locale e verificare che tutti i nodi siano raggiungibili.
az aks get-credentials \
--name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--overwrite-existing
kubectl get nodes -o wide
Collegare ACR al cluster AKS
Concedere al cluster del servizio Azure Kubernetes l'autorizzazione per eseguire il pull delle immagini dall'ACR di cui è stato eseguito il provisioning affinché le distribuzioni future possano accedere alle immagini del contenitore.
az aks update \
--name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--attach-acr "${ACR_NAME}" \
--output table
Verifica
Verificare che il cluster AKS esista e risponda alle query di base kubectl prima di continuare con i passaggi di distribuzione downstream. Per iniziare, assicurarsi che il cluster AKS esista.
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 il cluster Azure Kubernetes Service (AKS) è stato creato, vedrai qualcosa del genere:
AKS cluster ${AKS_CLUSTER_NAME} exists in resource group ${RESOURCE_GROUP}.
Verificare quindi che kubectl sia configurato correttamente:
kubectl cluster-info
Questo comando restituirà lo stato del cluster corrente, simile al seguente:
Kubernetes control plane is running at ...
CoreDNS is running at https://...
Metrics-server is running at https://...
Assicurarsi infine che siano disponibili sia nodi di sistema che di utente:
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.labels.agentpool}{"\n"}{end}' |
sort |
uniq -c
Verrà restituito un conteggio dei nodi, simile al seguente:
1 system
1 user
Riepilogo: Convalidato che il cluster AKS sia presente, integro e raggiungibile tramite kubectl nel contesto corrente.
Riassunto
Il gruppo di risorse, il registro dei container, il cluster AKS (Azure Kubernetes Service), il pool di nodi facoltativo e l'allegato del registro vengono convalidati, lasciando il cluster pronto per tutti i carichi di lavoro containerizzati.
Passaggi successivi
- Procedere con
docs/OpenWebSearch_On_AKS.mdper distribuire KMCP e il server MCP - Configurare le assegnazioni di ruolo o i criteri di rete in base alla postura di sicurezza
- Integrare Monitoraggio di Azure o Log Analytics per la visibilità operativa
- Eseguire i comandi di pulizia dell'infrastruttura dopo la sperimentazione per gestire i costi