Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird veranschaulicht, wie L7-Richtlinien mit erweiterten Container-Netzwerkdiensten in AKS-Clustern eingerichtet werden. Fahren Sie erst fort, nachdem Sie die Auf der Seite "Übersicht über Layer 7-Richtlinien " aufgeführten Einschränkungen und Überlegungen überprüft haben.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Falls Sie kein Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter "Erste Schritte mit Azure Cloud Shell".
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen möchten, installieren Sie die Azure CLI. Wenn Sie mit Windows oder macOS arbeiten, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Um den Authentifizierungsprozess abzuschließen, führen Sie die schritte aus, die in Ihrem Terminal angezeigt werden. Weitere Anmeldeoptionen finden Sie unter Authentifizieren bei Azure mithilfe der Azure CLI.
Wenn Sie dazu aufgefordert werden, installieren Sie die Azure CLI-Erweiterung bei der ersten Verwendung. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden und Verwalten von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um auf die neueste Version zu aktualisieren.
Die mindeste Version von Azure CLI, die für die Schritte in diesem Artikel erforderlich ist, ist 2.71.0. Führen Sie az --version
aus, um die Version zu ermitteln. Wenn Sie eine Installation oder ein Upgrade durchführen müssen, finden Sie weitere Informationen unter Azure CLI installieren.
Installieren der Azure CLI-Erweiterung aks-preview
Installieren oder aktualisieren Sie die Azure CLI-Vorschauerweiterung mithilfe des Befehls az extension add
oder az extension update
.
Die Mindestversion der Azure CLI-Erweiterung „aks-preview“ ist 14.0.0b6
.
# Install the aks-preview extension
az extension add --name aks-preview
# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview
Registriere die AdvancedNetworkingL7PolicyPreview
-Feature-Flag
Registrieren Sie das Featureflag AdvancedNetworkingL7PolicyPreview
mithilfe des Befehls az feature register
.
az feature register --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingL7PolicyPreview"
Überprüfen Sie die erfolgreiche Registrierung mithilfe des az feature show
Befehls. Es dauert einige Minuten, bis die Registrierung abgeschlossen ist.
az feature show --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingL7PolicyPreview"
Wenn die Funktion Registered
anzeigt, aktualisieren Sie die Registrierung des Ressourcenanbieters Microsoft.ContainerService
mit dem Befehl az provider register
.
Aktivieren der erweiterten Container-Netzwerkdienste
Um fortfahren zu können, benötigen Sie ein AKS-Cluster mit Erweiterten Container-Netzwerkdiensten.
Der Befehl az aks create
mit dem Flag Advanced Container Networking Services --enable-acns
erstellt einen neuen AKS-Cluster mit allen Features der erweiterten Container-Netzwerkdiensten. Diese Funktionen umfassen Folgendes:
Container Network Observability: Bietet Einblicke in Ihren Netzwerkdatenverkehr. Weitere Informationen erhalten Sie unter Container Network Observability.
Containernetzwerksicherheit: bietet Sicherheitsfeatures wie die Filterung vollqualifizierter Domänennamen (Fully Qualified Domain Name, FQDN). Weitere Informationen erhalten Sie unter Container Network Security.
Hinweis
Cluster mit der Cilium-Datenebene unterstützen Container Network Observability und Containernetzwerksicherheit ab Kubernetes-Version 1.29.
Für diese Demo muss der --acns-advanced-networkpolicies
Parameter auf "L7" festgelegt werden, um L7-Richtlinien zu aktivieren. Das Festlegen dieses Parameters auf "L7" ermöglicht auch die FQDN-Filterung. Wenn Sie nur die FQDN-Filterung aktivieren möchten, legen Sie den Parameter auf "FQDN" fest. Um beide Features zu deaktivieren, können Sie die Anweisungen unter "Containernetzwerksicherheit deaktivieren" befolgen.
export CLUSTER_NAME="<aks-cluster-name>"
# Create an AKS cluster
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--generate-ssh-keys \
--network-plugin azure \
--network-dataplane cilium \
--enable-acns \
--acns-advanced-networkpolicies L7
Aktivieren von erweiterten Container-Netzwerkdiensten für einen vorhandenen Cluster
Der Befehl az aks update
mit dem Advanced Container Networking Services-Flag --enable-acns
aktualisiert einen vorhandenen AKS-Cluster mit allen erweiterten Containernetzwerkdiensten, die Container Network Observability und das Feature Containernetzwerksicherheit enthalten.
Hinweis
Nur Cluster mit der Cilium-Datenebene unterstützen die Features für Containernetzwerksicherheit der erweiterten Container-Netzwerkdienste.
Für diese Demo muss der --acns-advanced-networkpolicies
Parameter auf "L7" festgelegt werden, um L7-Richtlinien zu aktivieren. Das Festlegen dieses Parameters auf "L7" ermöglicht auch die FQDN-Filterung. Wenn Sie nur die FQDN-Filterung aktivieren möchten, legen Sie den Parameter auf "FQDN" fest. Um beide Features zu deaktivieren, können Sie die Anweisungen unter "Containernetzwerksicherheit deaktivieren" befolgen.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns \
--acns-advanced-networkpolicies L7
Abrufen von Clusteranmeldeinformationen
Rufen Sie Ihre Clusteranmeldeinformationen mithilfe des Befehls „az aks get-credentials
“ ab.
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Einrichten der Http-Server-Anwendung auf Ihrem AKS-Cluster
Verwenden Sie das folgende YAML auf Ihrem AKS-Cluster, um die http-server
Anwendung einzurichten.
apiVersion: apps/v1
kind: Deployment
metadata:
name: http-server
labels:
app: http-server
spec:
replicas: 1
selector:
matchLabels:
app: http-server
template:
metadata:
labels:
app: http-server
spec:
containers:
- name: http-server
image: nginx:latest
ports:
- containerPort: 8080
volumeMounts:
- name: config-volume
mountPath: /etc/nginx/conf.d
volumes:
- name: config-volume
configMap:
name: nginx-config
---
apiVersion: v1
kind: Service
metadata:
name: http-server
spec:
selector:
app: http-server
ports:
- protocol: TCP
port: 80
targetPort: 8080
---
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
data:
default.conf: |
server {
listen 8080;
location / {
return 200 "Hello from the server root!\n";
}
location /products {
return 200 "Listing products...\n";
}
}
Einrichten der HTTP-Clientanwendung auf Ihrem AKS-Cluster
Verwenden Sie das folgende YAML-File für Ihren AKS-Cluster, um die http-client
-Anwendung einzurichten.
apiVersion: apps/v1
kind: Deployment
metadata:
name: http-client
labels:
app: http-client
spec:
replicas: 1
selector:
matchLabels:
app: http-client
template:
metadata:
labels:
app: http-client
spec:
containers:
- name: http-client
image: curlimages/curl:latest
command: ["sleep", "infinity"]
Testen Sie die Konnektivität mit einer Richtlinie
Wenden Sie als Nächstes die folgende Layer 7-Richtlinie an, um nur GET
Anfragen von der http-client
Anwendung an den Endpunkt /products
auf http-server
zuzulassen.
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: allow-get-products
spec:
description: "Allow only GET requests to /products from http-client to http-server"
endpointSelector:
matchLabels:
app: http-server
ingress:
- fromEndpoints:
- matchLabels:
app: http-client
toPorts:
- ports:
- port: "8080"
protocol: TCP
rules:
http:
- method: "GET"
path: "/products"
Überprüfen der Richtlinie
Führen Sie die folgenden Befehle aus dem http-client
Pod aus, um die Erzwingung der Richtlinie zu überprüfen:
kubectl exec -it <your-http-client-pod-name> -n default -- curl -v http://http-server:80/products
Sie sollten eine Ausgabe wie Listing products...
beim Ausführen des obigen Befehls erwarten.
kubectl exec -it <your-http-client-pod-name> -n default -- curl -v -XPOST http://http-server:80/products -d "test=data"
Sie sollten eine Ausgabe wie Access Denied
beim Ausführen des obigen Befehls erwarten.
Überwachung von L7-Metriken
Wenn Sie Einblicke in das Containernetzwerk der erweiterten Container-Netzwerkdienste aktiviert haben, können Sie den Datenverkehr in Grafana visualisieren.
Um die Analyse dieser L7-Metriken zu vereinfachen, stellen wir vorkonfigurierte Azure Managed Grafana-Dashboards bereit. Sie finden sie unter dem Azure Managed Prometheus-Ordner "Dashboards>" mit Dateinamen wie "Kubernetes/Networking/L7 (Namespace)" und "Kubernetes/Networking/L7 (Workload)".
Die Metriken sollten in etwa wie folgt aussehen:
Bereinigen von Ressourcen
Wenn Sie nicht vorhaben, diese Anwendung zu verwenden, löschen Sie die anderen Ressourcen, die Sie in diesem Artikel erstellt haben, mit dem Befehl az group delete
.
az group delete --name $RESOURCE_GROUP
Nächste Schritte
In diesem Artikel mit Anleitungen haben Sie erfahren, wie Sie L7-Richtlinien mit advanced Container Networking Services für Ihren AKS-Cluster aktivieren und anwenden.
- Weitere Informationen zu Erweiterte Container-Netzwerkdienste für Azure Kubernetes Service (AKS) finden Sie unter Was ist Erweiterte Container-Netzwerkdienste für Azure Kubernetes Service (AKS)?.
Azure Kubernetes Service