Vytvoření infrastruktury Azure AKS

V tomto článku zřídíte základní prostředky Azure potřebné pro nasazení AKS připravené pro produkční prostředí. Tento článek ověří přístup k Azure, vytvoří skupinu prostředků, vytvoří službu Azure Container Registry (ACR), nasadí základní cluster AKS, volitelně přidá další fond uzlů pro uživatelské úlohy a udělí clusteru oprávnění k vyžádání z ACR. Všechny příkazy spoléhají na parametrizované proměnné prostředí, aby pracovní postup zůstal opakovatelný napříč oblastmi a předplatnými.

Požadavky

Před spuštěním průvodce potřebujete následující nástroje a přístup k účtu. Ujistěte se, že jste ověřeni v Azure pomocí az login a máte dostatečná oprávnění k vytváření skupin prostředků, registrů kontejnerů a clusterů AKS.

  • Předplatné Azure s kvótou pro vybranou oblast
  • Azure CLI (az) s právy vlastníka nebo přispěvatele
  • kubectl nakonfigurovaný místně pro přístup ke clusteru
  • jq (volitelné) pro parsování výstupu JSON během ověřování

Spuštěním následujících příkazů potvrďte, že máte všechny potřebné nástroje rozhraní příkazového řádku a přístup k 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)"

Nastavení prostředí

Tady definujete všechny proměnné prostředí použité v rámci kroků zřizování. Časové razítko HASH udržuje názvy prostředků jedinečnými během opakovaných spuštění. Výchozí nastavení clusteru a registru cílí na minimální nároky na testování konceptu, ale podle potřeby je můžete upravit.

Následující příkazy stanovují rozsah Azure, velikost AKS a zásady pojmenování ACR pro sekvenci zřizování bez ohledu na následné úlohy.

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}"

Ověření hodnot proměnných prostředí

Před vytvořením prostředků zkontrolujte efektivní konfiguraci. Znovu spusťte blok po všech úpravách, abyste zajistili správnost aktivních hodnot pro cílové předplatné a oblast.

Pomocí následujících příkazů můžete připnout aktivní parametry k ověření pojmenování, velikosti a oblastních voleb.

: "${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

Postup

Proveďte jednotlivé kroky postupně. Každá dílčí část obsahuje účel, příkazy a souhrn, který potvrzuje očekávané výsledky.

Kontrola kontextu předplatného Azure

Ověřte aktivní předplatné Azure a ujistěte se, že jsou zaregistrovaní poskytovatelé prostředků vyžadovaní pro operace AKS a ACR.

az account show --query id -o tsv
az provider register --namespace Microsoft.ContainerService
az provider register --namespace Microsoft.ContainerRegistry

Vytvoření skupiny zdrojů

Zřiďte vyhrazenou skupinu prostředků pro izolaci clusteru, registru a podpůrné infrastruktury AKS pro vaše úlohy.

az group create \
  --name "${RESOURCE_GROUP}" \
  --location "${LOCATION}" \
  --output table

Zřízení služby Azure Container Registry

Vytvořte Azure Container Registry pro ukládání obrazů kontejnerů a ověřte místního démona Docker pro odesílání obrazů.

az acr create \
  --name "${ACR_NAME}" \
  --resource-group "${RESOURCE_GROUP}" \
  --location "${LOCATION}" \
  --sku Basic \
  --output table
az acr login --name "${ACR_NAME}"

Vytvoření clusteru AKS

Nasaďte cluster AKS pro hostování úloh. Ochrana před opětovným použitím existujícího názvu clusteru kontrolou před vytvořením.

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

Přidat volitelný uživatelský fond uzlů

Na vyžádání zřiďte další fond uzlů. Příkaz add běží asynchronně, aby se zabránilo vypršení časových limitů rozhraní příkazového řádku; příkaz čekání sleduje průběh Azure. Skript nejprve zkontroluje, zda již pool existuje, aby se předešlo chybám spojeným s duplicitním názvem.

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

Načtení přihlašovacích údajů clusteru

Sloučte kubeconfig AKS do místního kontextu a ověřte, zda jsou všechny uzly dostupné.

az aks get-credentials \
  --name "${AKS_CLUSTER_NAME}" \
  --resource-group "${RESOURCE_GROUP}" \
  --overwrite-existing
kubectl get nodes -o wide

Připojení ACR ke clusteru AKS

Udělte clusteru AKS oprávnění ke stahování image ze zřízeného ACR, aby k vašim kontejnerovým image měla budoucí nasazení přístup.

az aks update \
  --name "${AKS_CLUSTER_NAME}" \
  --resource-group "${RESOURCE_GROUP}" \
  --attach-acr "${ACR_NAME}" \
  --output table

Verification

Než budete pokračovat v postupu podřízeného nasazení, ověřte, že cluster AKS existuje a reaguje na základní kubectl dotazy. Začněte tím, že zajistíte, že cluster AKS existuje.

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

Pokud byl cluster AKS vytvořen, zobrazí se něco takového:

AKS cluster ${AKS_CLUSTER_NAME} exists in resource group ${RESOURCE_GROUP}.

Dále zkontrolujte, jestli kubectl je správně nakonfigurovaný:

kubectl cluster-info

Tento příkaz zobrazí stav aktuálního clusteru, například:

Kubernetes control plane is running at ...
CoreDNS is running at https://...
Metrics-server is running at https://...

Nakonec se ujistěte, že jsou k dispozici systémové i uživatelské uzly:

kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.labels.agentpool}{"\n"}{end}' |
  sort |
  uniq -c

Tím se vypíše počet uzlů, například:

      1 system
      1 user

Shrnutí: Ověřili jsme, že cluster AKS je přítomný, v pořádku a dostupný přes kubectl v aktuálním kontextu.

Shrnutí

Skupina prostředků, registr kontejnerů, cluster AKS, volitelný fond uzlů a připojení registru jsou ověřeny, a cluster je připravený pro všechny kontejnerizované úlohy.

Další kroky

  • docs/OpenWebSearch_On_AKS.md Pokračujte nasazením KMCP a serveru MCP.
  • Nakonfigurujte přiřazení rolí nebo síťové zásady specifické pro vaše bezpečnostní prostředí.
  • Integrace služby Azure Monitor nebo Log Analytics pro zajištění provozní viditelnosti
  • Spuštění příkazů čištění infrastruktury po experimentování za účelem správy nákladů