Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten samouczek przeprowadzi Cię przez proces wdrażania prywatnego klastra Azure Kubernetes Service (AKS) w enklawie Azure. Tworzysz w pełni prywatny klaster usługi AKS z szyfrowaniem zarządzanym przez klienta, integracją sieci i bezpiecznymi wzorcami dostępu.
W tym poradniku nauczysz się, jak:
- Włączanie wymaganych funkcji Azure dla prywatnej usługi AKS
- Weryfikowanie wymaganych zasobów dla usługi AKS
- Wdróż prywatny klaster AKS
- Konfigurowanie szyfrowania kluczy zarządzanych przez klienta
- Tworzenie społecznościowych punktów końcowych na potrzeby łączności z usługą AKS
- Przypisywanie wielu grup zasobów do obciążenia roboczego AKS
- Uzyskiwanie dostępu do klastra AKS i jego weryfikacja
Prerequisites
- Ukończenie samouczka 2–3: wdrażanie obciążenia roboczego Azure Virtual Desktop
- Enklawa usługi AKS z węzłem, serwerem interfejsu API i podsieciami prywatnego punktu końcowego
- Typowe zależności (Key Vault, tożsamość zarządzana, zestaw szyfrowania dysków) z samouczka 2–2: tworzenie środowiska enklawy Azure
- Wdrożono prywatne strefy DNS dla usługi AKS
- Rola współautora w grupie zasobów obciążenia usługi AKS
- rola współautora Azure Kubernetes Service w subskrypcji
- Azure CLI lub Azure PowerShell zainstalowane na potrzeby operacji zaawansowanych
Ważna
Ten samouczek jest zgodny z działaniem szablonu Prywatny klaster AKS i wymaga zasobów utworzonych przez wdrożenie AVE AKS Enclave w samouczku 2-2.
Zanim rozpoczniesz
Opis usługi AKS w enklawie Azure
Usługa AKS w enklawie Azure zapewnia:
- W pełni prywatny klaster: serwer API dostępny wyłącznie przez prywatny punkt końcowy
- Izolacja sieci: cały ruch pozostaje w granicach enklawy
- Szyfrowanie zarządzane przez klienta: zarówno płaszczyzna sterowania, jak i płaszczyzna danych są szyfrowane przy użyciu CMK
- Bezpieczne granice obciążenia: zasoby kubernetes zawarte w zasadach zabezpieczeń enklawy
Konwencje nazewnictwa zasobów
W tym samouczku użyto przykładowych nazw. Użyj konwencji nazewnictwa organizacji:
- Enklawa:
aks-enclave - Obciążenia:
aks-workload - Grupa zasobów:
rg-aks-cluster - Klaster AKS:
aks-prod-01
Włączanie wymaganych funkcji Azure
Usługa AKS w enklawie Azure wymaga włączenia określonych funkcji Azure w ramach subskrypcji.
Włączanie funkcji EncryptionAtHost
Ta funkcja umożliwia szyfrowanie na poziomie hosta maszyny wirtualnej dla węzłów usługi AKS.
# Register the feature
az feature register --namespace Microsoft.Compute --name EncryptionAtHost
# Check registration status (may take 10-15 minutes)
az feature show --namespace Microsoft.Compute --name EncryptionAtHost
# Once registered, refresh the provider
az provider register --namespace Microsoft.Compute
Włącz integrację serwera API z siecią wirtualną (wersja zapoznawcza)
Ta funkcja umożliwia zintegrowanie serwera interfejsu API usługi AKS bezpośrednio z siecią wirtualną.
# Register the feature
az feature register --namespace Microsoft.ContainerService --name EnableAPIServerVnetIntegrationPreview
# Check registration status
az feature show --namespace Microsoft.ContainerService --name EnableAPIServerVnetIntegrationPreview
# Once registered, refresh the provider
az provider register --namespace Microsoft.ContainerService
Ważna
Poczekaj, aż przy obu funkcjach pojawi się "state": "Registered", zanim przejdziesz dalej. Rejestracja trwa zwykle od 10 do 15 minut.
Przygotowywanie klucza SSH (opcjonalnie)
Note
Uwierzytelnianie za pomocą klucza SSH na potrzeby dostępu do węzłów usługi AKS jest wycofywane. Ten krok jest obecnie wymagany, ale będzie opcjonalny w przyszłych wersjach szablonów. Jeśli nie potrzebujesz bezpośredniego dostępu do węzła, możesz pominąć tę sekcję po zaktualizowaniu szablonu.
Generowanie pary kluczy SSH
# Create .ssh directory if it doesn't exist
$sshDir = "$env:USERPROFILE\.ssh"
if (-not (Test-Path $sshDir)) {
New-Item -ItemType Directory -Path $sshDir
}
# Generate SSH key pair
ssh-keygen -t rsa -b 4096 -f "$sshDir\aks-nodes" -N '""'
# Display the public key
Get-Content "$sshDir\aks-nodes.pub"
Przechowywanie klucza SSH w usłudze Key Vault
# Read the SSH public key
$sshPublicKey = Get-Content "$env:USERPROFILE\.ssh\aks-nodes.pub" -Raw
# Store in Key Vault as a secret
az keyvault secret set `
--vault-name "kv-ave-shared-<uniqueid>" `
--name "aks-ssh-public-key" `
--value $sshPublicKey
Wdróż prywatny klaster AKS
Teraz wdróż klaster usługi AKS z pełnym szyfrowaniem i monitorowaniem.
Korzystanie z szablonu katalogu usług
- W obciążeniu usługi AKS wybierz pozycję + Dodaj usługę Azure.
- Wyszukaj i wybierz pozycję Private AKS Cluster.
- Konfigurowanie wdrożenia:
zakładka Podstawy
-
Nazwa klastra usługi AKS:
aks-prod-01 -
Wersja platformy Kubernetes: wybierz najnowszą stabilną wersję (na przykład
1.32)
Monitoring
- Nazwa obszaru roboczego usługi Log Analytics: wybierz miejsce docelowe rejestrowania dla enklawy lub społeczności.
Encryption
- Nazwa zestawu szyfrowania dysków: Wprowadź nazwę użytej w Samouczku 2-2.
- Nazwa klucza szyfrowania: wprowadź nazwę klucza magazynu kluczy.
- Key Vault: wybierz magazyn kluczy z kluczem o tej nazwie.
Dostęp
- Nazwa tożsamości AKS: Wprowadź nazwę, której użyto w samouczku 2-2.
- Nazwa grupy zasobów tożsamości AKS: zaktualizuj nazwę grupy zasobów tak, aby odpowiadała grupie zasobów, w której znajduje się Twoja tożsamość.
Sieć
- Nazwa podsieci usługi AKS: wprowadź nazwę podsieci usługi AKS
- Nazwa podsieci puli agentów: wprowadź nazwę podsieci puli agentów
-
CIDR dla ruchu usługi:
172.16.0.0/16 -
Adres IP usługi DNS Kubernetes:
172.16.0.10
Konfiguracja podsieci:
-
Podsieć węzłów: Wybierz
aksSubnetw swojej enklawie -
Podsieć serwera API: Wybierz
agentSubnetz enklawy -
Podsieć prywatnego punktu końcowego: wybierz
AzureVirtualEnclaveSubnetw enklawie
Pula węzłów
Wybierz, Next aby pominąć tę kartę dla tego samouczka.
Tags
-
Środowisko:
Production -
Obciążenie:
AKS -
Zarządzane przez:
Azure Enclave
- Wybierz pozycję Recenzja i Utwórz.
- Dokładnie przejrzyj wszystkie ustawienia.
- Wybierz Utwórz.
Note
Klaster usługi AKS automatycznie tworzy zarządzaną grupę zasobów.
Tworzenie społecznościowych punktów końcowych na potrzeby łączności z usługą AKS
Usługa AKS wymaga łączności wychodzącej z kilkoma usługami Azure. Utwórz społecznościowe punkty końcowe zgodnie z tymi wymaganiami.
Note
Jeśli w samouczku 2-1 utworzyłeś punkty końcowe społeczności AKS, sprawdź, czy zawierają wszystkie wymagane nazwy FQDN.
Skonfiguruj punkt końcowy społeczności
Odwiedź swoją społeczność (na przykład
cmt-fabrikam).Wybierz Punkty końcowe społeczności>+ Utwórz lub edytuj istniejące
ce-aks-services.Upewnij się, że istnieją następujące reguły:
Reguła 1: Microsoft Container Registry
-
Nazwa:
mcr -
Miejsce docelowe:
mcr.microsoft.com,*.data.mcr.microsoft.com -
Protokół:
HTTPS -
Port:
443
Reguła 2. Zarządzanie usługą AKS
-
Nazwa:
aks-management -
Miejsce docelowe:
*.hcp.<region>.azmk8s.io,<region>.dp.kubernetesconfiguration.azure.com -
Protokół:
HTTPS -
Port:
443
Reguła 3: zarządzanie Azure
-
Nazwa:
azure-management -
Miejsce docelowe:
management.azure.com,login.microsoftonline.com -
Protokół:
HTTPS -
Port:
443
Reguła 4. Repozytorium pakietów
-
Nazwa:
packages -
Miejsce docelowe:
packages.microsoft.com,acs-mirror.azureedge.net,azure.archive.ubuntu.com -
Protokół:
HTTPS -
Port:
443
Reguła 5: Azure Monitor (jeśli jest włączona)
-
Nazwa:
monitoring -
Miejsce docelowe:
*.ods.opinsights.azure.com,*.oms.opinsights.azure.com,dc.services.visualstudio.com -
Protokół:
HTTPS -
Port:
443
-
Nazwa:
Wybierz pozycję Przejrzyj i utwórz , a następnie pozycję Utwórz lub Zapisz.
Konfigurowanie wychodzących reguł sieciowej grupy zabezpieczeń
Dodaj do NSG reguły zabezpieczeń ruchu wychodzącego, aby zezwolić na ruch AKS.
- Przejdź do Sieciowe grupy zabezpieczeń>
nsg-aks-nodes. - Wybierz Reguły zabezpieczeń ruchu wychodzącego>+ Dodaj.
- Dodaj regułę dla ruchu wychodzącego HTTPS:
-
Źródło:
VirtualNetwork -
Miejsce docelowe:
Internet -
Port docelowy:
443 -
Protokół:
TCP -
Akcja:
Allow -
Priorytet:
1000 -
Nazwa:
Allow_HTTPS_Outbound
-
Źródło:
Przypisywanie grup zasobów AKS do obciążenia roboczego
Usługa AKS tworzy zarządzaną grupę zasobów (MRG) dla infrastruktury klastra. Przypisz do obciążenia roboczego zarówno grupę zasobów użytkownika, jak i MRG.
Korzystanie z portalu Azure
- Przejdź do usługi enklawy Azure w portalu Azure.
- Wybierz swoją społeczność (na przykład
cmt-fabrikam). - Wybierz Enclaves i otwórz enklawę AKS (na przykład
ve-aks). - Wybierz pozycję Obciążenia i otwórz obciążenie usługi AKS (na przykład
wl-aks). - W przeglądzie obciążenia wybierz pozycję Właściwości lub Połączone grupy zasobów.
- Wybierz + Dodaj grupę zasobów.
- Dodaj grupę zasobów użytkownika:
- Wybierz pozycję Subskrypcja: Twoja subskrypcja
- Wybierz pozycję Grupa zasobów:
rg-aks-cluster - Wybierz Dodaj
- Ponownie wybierz pozycję + Dodaj grupę zasobów .
- Dodaj zarządzaną grupę zasobów AKS:
- Nazwa zarządzanej grupy zasobów ma następujący format:
MC_rg-aks-cluster_aks-prod-01_<region> - Wybierz pozycję Subskrypcja: Twoja subskrypcja
- Wybierz Grupa zasobów: grupa zasobów zarządzana przez usługę AKS
- Wybierz Dodaj
- Nazwa zarządzanej grupy zasobów ma następujący format:
- Sprawdź, czy obie grupy zasobów są wyświetlane na liście połączonych grup zasobów obciążenia.
Tip
Aby znaleźć nazwę zarządzanej grupy zasobów usługi AKS, przejdź do klastra usługi AKS w portalu i sprawdź właściwość grupy zasobów Node na stronie Przegląd.
Dostęp do klastra AKS
Uzyskaj dostęp do prywatnego klastra AKS za pośrednictwem administracyjnej maszyny wirtualnej lub usługi Azure Bastion wewnątrz enklawy.
Nawiązywanie połączenia z maszyną wirtualną administratora
- Nawiąż połączenie z maszyną wirtualną administratora za pośrednictwem Azure Bastion lub protokołu RDP.
- Upewnij się, że na maszynie wirtualnej administratora zainstalowano Azure CLI.
- Zaloguj się do platformy Azure:
az login
Pobierz poświadczenia AKS
# Get cluster credentials
az aks get-credentials `
--resource-group rg-aks-cluster `
--name aks-prod-01 `
--admin
# Verify connection
kubectl get nodes
Oczekiwany wynik pokazuje węzły ze stanem Ready:
NAME STATUS ROLES AGE VERSION
aks-systempool-12345678-vmss000000 Ready agent 5m v1.29.5
aks-systempool-12345678-vmss000001 Ready agent 5m v1.29.5
aks-systempool-12345678-vmss000002 Ready agent 5m v1.29.5
Wdrażanie obciążenia testowego
Wdróż przykładową aplikację, aby zweryfikować klaster.
Tworzenie przestrzeni nazw
kubectl create namespace test-app
Wdrażanie przykładowej aplikacji
# Save as test-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: test-app
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: mcr.microsoft.com/oss/nginx/nginx:1.25.3
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
namespace: test-app
spec:
type: LoadBalancer
selector:
app: nginx
ports:
- port: 80
targetPort: 80
# Apply the deployment
kubectl apply -f test-deployment.yaml
# Check deployment status
kubectl get deployments -n test-app
kubectl get pods -n test-app
kubectl get services -n test-app
Weryfikowanie wdrożenia
Przeprowadź kompleksową weryfikację klastra AKS.
Sprawdzanie kondycji klastra
# Check node status
kubectl get nodes -o wide
# Check system pods
kubectl get pods -n kube-system
# Check node conditions
kubectl describe nodes | grep -A 5 Conditions
Zweryfikuj szyfrowanie
# Check if encryption at host is enabled
az aks show --resource-group rg-aks-cluster --name aks-prod-01 --query "securityProfile.enableEncryptionAtHost"
# Check disk encryption set
az aks show --resource-group rg-aks-cluster --name aks-prod-01 --query "diskEncryptionSetId"
Sprawdź łączność sieciową
# Test DNS resolution
kubectl run -it --rm debug --image=mcr.microsoft.com/dotnet/runtime-deps:6.0 --restart=Never -- nslookup kubernetes.default
# Test internet connectivity through community endpoints
kubectl run -it --rm debug --image=curlimages/curl --restart=Never -- curl -I https://mcr.microsoft.com
# Check service connectivity
kubectl get services -A
Sprawdzanie monitorowania i dzienników
# Check if Container Insights is enabled
az aks show --resource-group rg-aks-cluster --name aks-prod-01 --query "addonProfiles.omsagent.enabled"
# Query logs in Log Analytics
az monitor log-analytics query `
--workspace <workspace-id> `
--analytics-query "ContainerLog | where TimeGenerated > ago(1h) | limit 10"
Weryfikowanie zgodności Azure Policy
# Check Azure Policy add-on status
kubectl get pods -n kube-system | grep azure-policy
# View policy violations (if any)
kubectl get constrainttemplates
kubectl get constraints
Konfigurowanie dostępu kubectl dla innych użytkowników
Udziel innym użytkownikom dostępu do klastra usługi AKS.
Korzystanie z funkcji Azure RBAC
# Assign Azure Kubernetes Service Cluster User Role
az role assignment create `
--assignee user@contoso.com `
--role "Azure Kubernetes Service Cluster User Role" `
--scope "/subscriptions/<subscription-id>/resourceGroups/rg-aks-cluster/providers/Microsoft.ContainerService/managedClusters/aks-prod-01"
# For admin access
az role assignment create `
--assignee user@contoso.com `
--role "Azure Kubernetes Service Cluster Admin Role" `
--scope "/subscriptions/<subscription-id>/resourceGroups/rg-aks-cluster/providers/Microsoft.ContainerService/managedClusters/aks-prod-01"
Korzystanie z RBAC w Kubernetes
# Create role binding for namespace access
kubectl create rolebinding user-viewer `
--clusterrole=view `
--user=user@contoso.com `
--namespace=test-app
Rozwiązywanie typowych problemów
Tworzenie klastra kończy się niepowodzeniem
Objaw: wdrażanie klastra usługi AKS kończy się niepowodzeniem
Rozwiązania:
- Sprawdź, czy flagi funkcji są zarejestrowane:
EncryptionAtHost,EnableAPIServerVnetIntegrationPreview - Sprawdź, czy wielkości podsieci są wystarczające dla liczby węzłów i zagęszczenia podów
- Sprawdź, czy zestaw szyfrowania dysków i tożsamość zarządzana mają odpowiednie uprawnienia
- Przejrzyj dziennik aktywności pod kątem określonych komunikatów o błędach
Węzły nie są gotowe
Objaw: Węzły wyświetlają status NotReady
Rozwiązania:
- Sprawdź, czy podsieć węzła ma łączność wychodzącą z wymaganymi punktami końcowymi
- Sprawdź, czy społecznościowe punkty końcowe obejmują wszystkie wymagane nazwy FQDN usługi AKS
- Sprawdź, czy reguły NSG zezwalają na ruch wychodzący na porcie 443
- Przejrzyj dzienniki węzłów:
kubectl describe node <node-name>
Zasobniki nie mogą ściągać obrazów
Objaw: Pody utknęły w ImagePullBackOff
Rozwiązania:
- Zweryfikuj, czy punkt końcowy społecznościowy zawiera
mcr.microsoft.comi*.data.mcr.microsoft.com - Sprawdź, czy NSG zezwala na wychodzący ruch HTTPS na porcie 443
- Upewnij się, że rozpoznawanie nazw DNS działa:
nslookup mcr.microsoft.comz zasobnika - Sprawdź sekrety do pobierania obrazów, jeśli używasz rejestrów prywatnych
Nie można nawiązać połączenia z serwerem interfejsu API
Objaw: kubectl polecenia kończą się niepowodzeniem z powodu przekroczenia limitu czasu połączenia
Rozwiązania:
- Upewnij się, że pracujesz na administracyjnej maszynie wirtualnej lub zasobie z łącznością z enklawą
- Sprawdź, czy prywatna strefa DNS jest połączona z siecią wirtualną
- Weryfikowanie konfiguracji podsieci serwera interfejsu API
- Testuj rozpoznawanie nazw przez DNS:
nslookup <cluster-fqdn>
Monitorowanie nie działa
Objaw: Brak dzienników ani metryk w Azure Monitor
Rozwiązania:
- Sprawdzanie, czy dodatek Container Insights jest włączony
- Sprawdź, czy punkty końcowe społecznościowe obejmują monitorowane nazwy FQDN
- Sprawdź, czy obszar roboczy Log Analytics jest dostępny z klastra
- Sprawdź, czy
omsagentzasobniki są uruchomione:kubectl get pods -n kube-system | grep omsagent
Uprzątnij zasoby
Aby uniknąć bieżących opłat, usuń zasoby, gdy nie są już potrzebne.
Usuń klaster AKS
# Delete AKS cluster (also deletes managed resource group)
az aks delete --resource-group rg-aks-cluster --name aks-prod-01 --yes --no-wait
# Delete user resource group
az group delete --name rg-aks-cluster --yes --no-wait
# Delete infrastructure resource group
az group delete --name rg-aks-infrastructure --yes --no-wait
Warning
Usunięcie klastra usługi AKS powoduje trwałe usunięcie wszystkich obciążeń i danych. Upewnij się, że masz kopie zapasowe w razie potrzeby.
Następne kroki
Ukończono serię samouczków dotyczącą wdrażania obciążeń Azure Virtual Desktop i AKS w Azure Enclave!
Zalecane następne kroki
- Konfigurowanie skalowania automatycznego dla usługi AKS
- Wdrażanie aplikacji za pomocą programu Helm
- Implementowanie metodyki GitOps za pomocą platformy Flux
- Skonfiguruj kontroler Ingress
- Włącz tożsamość obciążenia