Freigeben über


Einrichten von Layer 7(L7)-Richtlinien mit advanced Container Networking Services (Vorschau)

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.

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:

Screenshot des Grafana-Dashboards für L7-Datenverkehr

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.