Een Azure AKS-infrastructuur maken

In dit artikel richt u de belangrijkste Azure-resources in die nodig zijn voor een AKS-implementatie die gereed is voor productie. Dit artikel valideert Azure-toegang, maakt een resourcegroep, brengt een Azure Container Registry (ACR) tot stand, implementeert een AKS-basislijncluster, voegt eventueel een extra knooppuntgroep toe voor gebruikersworkloads en verleent het cluster toestemming om uit ACR te halen. Alle opdrachten zijn afhankelijk van geparameteriseerde omgevingsvariabelen, zodat de werkstroom herhaalbaar blijft tussen regio's en abonnementen.

Vereiste voorwaarden

U hebt de volgende hulpprogramma's en toegang tot accounts nodig voordat u de handleiding uitvoert. Zorg ervoor dat u geverifieerd bent bij Azure met behulp van az login en dat u voldoende machtigingen heeft om resourcegroepen, containerregisters en AKS-clusters te maken.

  • Azure-abonnement met quotum voor de geselecteerde regio
  • Azure CLI (az) met eigenaars- of inzenderrechten
  • kubectl lokaal geconfigureerd voor clustertoegang
  • jq (optioneel) voor het parseren van JSON-uitvoer tijdens verificatie

Voer de volgende opdrachten uit om te bevestigen dat u beschikt over alle benodigde CLI-hulpprogramma's en Toegang tot 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)"

De omgeving instellen

Hier definieert u alle omgevingsvariabelen die in de inrichtingsstappen worden gebruikt. De HASH tijdstempel houdt resourcenamen uniek tijdens herhaalde uitvoeringen. De standaardinstellingen voor clusters en registers zijn gericht op een minimale proof-of-concept footprint, maar u kunt deze indien nodig aanpassen.

Met de volgende opdrachten worden Azure-scopes, AKS-schaalgrootten en ACR-naamconventies voor het inrichtingsproces vastgesteld, ongeacht de onveranderlijkheid van downstreamworkloads.

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

Waarden voor omgevingsvariabelen controleren

Controleer de effectieve configuratie voordat u resources maakt. Voer het blok opnieuw uit nadat er aanpassingen zijn aangebracht om ervoor te zorgen dat de actieve waarden juist zijn voor het doelabonnement en de doelregio.

Gebruik de volgende commando's om de actieve parameters weer te geven en namen, afmetingen en regionale keuzes te valideren.

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

Voer elke stap opeenvolgend uit. Elke subsectie bevat doel, opdrachten en een samenvatting om de verwachte resultaten te bevestigen.

De context van het Azure-abonnement controleren

Controleer het actieve Azure-abonnement en zorg ervoor dat de resourceproviders die zijn vereist voor AKS- en ACR-bewerkingen, zijn geregistreerd.

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

Een brongroep maken

Richt een toegewezen resourcegroep in om het AKS-cluster, het register en de ondersteunende infrastructuur voor uw workloads te isoleren.

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

Azure Container Registry inrichten

Maak een Azure Container Registry voor het opslaan van containerinstallatiekopieƫn en verifieer de lokale Docker-daemon om installatiekopieƫn te pushen.

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

Het AKS-cluster maken

Implementeer het AKS-cluster om uw workloads te hosten. Beveilig het hergebruik van een bestaande clusternaam door te controleren voordat u deze gaat maken.

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

Optionele gebruikersknooppuntgroep toevoegen

Richt een extra knooppuntgroep in wanneer dit wordt aangevraagd. De opdracht toevoegen wordt asynchroon uitgevoerd om CLI-time-outs te voorkomen; met de wachtopdracht wordt de voortgang van Azure bijgehouden. Het script controleert eerst of de pool al bestaat om dubbele naamfouten te voorkomen.

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

Clusterreferenties ophalen

Voeg de AKS-kubeconfig samen in de lokale context en controleer of alle knooppunten bereikbaar zijn.

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

ACR koppelen aan AKS-cluster

Geef het AKS-cluster toestemming om afbeeldingen op te halen uit de geprovisioneerde ACR, zodat toekomstige implementaties toegang hebben tot uw containerafbeeldingen.

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

Verification

Controleer of het AKS-cluster bestaat en reageert op basisquery's kubectl voordat u verdergaat met downstreamimplementatiestappen. Begin door ervoor te zorgen dat het AKS-cluster bestaat.

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

Als het AKS-cluster is gemaakt, ziet u iets als het volgende:

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

Controleer vervolgens of deze kubectl juist is geconfigureerd:

kubectl cluster-info

Met deze opdracht wordt de status van het huidige cluster uitgevoerd, bijvoorbeeld:

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

Controleer ten slotte of er zowel systeem- als gebruikersknooppunten beschikbaar zijn:

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

Hiermee wordt een totaal aantal knooppunten afgedrukt, bijvoorbeeld:

      1 system
      1 user

Samenvatting: Gevalideerd dat het AKS-cluster aanwezig is, in orde en bereikbaar is via kubectl in de huidige context.

Samenvatting

De resourcegroep, het containerregister, het AKS-cluster, de optionele knooppuntgroep en de registerbijlage worden gevalideerd, zodat het cluster gereed is voor alle containerworkloads.

Volgende stappen

  • Ga verder met docs/OpenWebSearch_On_AKS.md om KMCP en de MCP-server te implementeren
  • Roltoewijzingen of netwerkbeleid configureren dat specifiek is voor uw beveiligingspostuur
  • Azure Monitor of Log Analytics integreren voor operationele zichtbaarheid
  • Opdrachten voor het opschonen van infrastructuur uitvoeren na experimenten om kosten te beheren