Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Den här artikeln visar hur du konfigurerar L7-principer med Advanced Container Networking Services i AKS-kluster. Fortsätt först när du har granskat begränsningarna och övervägandena som anges på sidan Översikt över Layer 7-princip .
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Om du inte har ett konto kan du skapa ett kostnadsfritt konto innan du börjar.
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Kom igång med Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör på Windows eller macOS, överväg att köra Azure CLI i en Docker-container. För mer information, se Hur man kör Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. För att slutföra autentiseringsprocessen, följ stegen som visas i din terminal. Andra inloggningsalternativ finns i Autentisera till Azure med Azure CLI.
När du blir uppmanad, installera Azure CLI-tillägget vid första användning. Mer information om tillägg finns i Använda och hantera tillägg med Azure CLI.
Kör az version för att ta reda på versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Den lägsta versionen av Azure CLI som krävs för stegen i den här artikeln är 2.79.0. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera, se Installera Azure CLI.
Installera Azure CLI-tillägget aks-preview
Installera eller uppdatera azure CLI-förhandsgranskningstillägget az extension add med hjälp av kommandot eller az extension update .
Den lägsta versionen av Azure CLI-tillägget aks-preview är 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
Registrera funktionsflaggan AdvancedNetworkingL7PolicyPreview
Registrera funktionsflaggan AdvancedNetworkingL7PolicyPreview med az feature register-kommandot.
az feature register --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingL7PolicyPreview"
Verifiera lyckad registrering med hjälp av az feature show kommandot . Det tar några minuter innan registreringen har slutförts.
az feature show --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingL7PolicyPreview"
När funktionen visas Registereduppdaterar du registreringen av Microsoft.ContainerService resursprovidern med kommandot az provider register .
Aktivera avancerade containernätverkstjänster
För att kunna fortsätta måste du ha ett AKS-kluster med Advanced Container Networking Services aktiverat.
Kommandot az aks create med flaggan Advanced Container Networking Services, --enable-acns, skapar ett nytt AKS-kluster med alla funktioner i Advanced Container Networking Services. Dessa funktioner omfattar:
Observerbarhet för containernätverk: Ger insikter om din nätverkstrafik. Mer information finns i Container Network Observability (Observerbarhet för containernätverk).
Säkerhet för containernätverk: Erbjuder säkerhetsfunktioner som FQDN-filtrering (Fullständigt kvalificerat domännamn). Mer information finns i Container Network Security.
Anmärkning
Kluster med Cilium-dataplanet stöder containernätverksobservabilitet och containernätverkssäkerhet från och med Kubernetes version 1.29.
För den här demonstrationen måste parametern --acns-advanced-networkpolicies vara inställd på "L7" för att aktivera L7-principer. Om du anger den här parametern till "L7" aktiveras även FQDN-filtrering. Om du bara vill aktivera FQDN-filtrering anger du parametern till "FQDN". Om du vill inaktivera båda funktionerna kan du följa anvisningarna i Inaktivera containernätverkssäkerhet.
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
Aktivera Advanced Container Networking Services i ett befintligt kluster
Kommandot az aks update med flaggan Advanced Container Networking Services uppdaterar --enable-acnsett befintligt AKS-kluster med alla avancerade funktioner för containernätverkstjänster som innehåller containernätverksobservabilitet och funktionen Container Network Security .
Anmärkning
Endast kluster med Cilium-dataplanet stöder funktioner för containernätverkssäkerhet i Advanced Container Networking Services.
För den här demonstrationen måste parametern --acns-advanced-networkpolicies vara inställd på "L7" för att aktivera L7-principer. Om du anger den här parametern till "L7" aktiveras även FQDN-filtrering. Om du bara vill aktivera FQDN-filtrering anger du parametern till "FQDN". Om du vill inaktivera båda funktionerna kan du följa anvisningarna i Inaktivera containernätverkssäkerhet.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns \
--acns-advanced-networkpolicies L7
Hämta klusterautentiseringsuppgifter
Hämta dina autentiseringsuppgifter för klustret med hjälp av az aks get-credentials kommandot .
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Konfigurera http-server-program i ditt AKS-kluster
Använd YAML nedan på AKS-klustret för att konfigurera http-server programmet.
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";
}
}
Konfigurera http-klientprogram i ditt AKS-kluster
Använd YAML nedan på AKS-klustret för att konfigurera http-client programmet.
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"]
Testa anslutningen med en policy
Tillämpa sedan följande Layer 7-policy för att endast tillåta GET begäranden från http-client-applikationen till /products-slutpunkten på http-server.
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"
Verifiera princip
Kontrollera att principen tillämpas genom att köra dessa kommandon från http-client podden:
kubectl exec -it <your-http-client-pod-name> -n default -- curl -v http://http-server:80/products
Du bör förvänta dig utdata som Listing products... när du kör kommandot ovan
kubectl exec -it <your-http-client-pod-name> -n default -- curl -v -XPOST http://http-server:80/products -d "test=data"
Du bör förvänta dig utdata som Access Denied när du kör kommandot ovan
Observera L7-mått
Om du har containernätverksobservatör för avancerad containernätverkstjänst aktiverad kan du visualisera trafiken i Grafana.
För att förenkla analysen av dessa L7-mått tillhandahåller vi förkonfigurerade Azure Managed Grafana-instrumentpaneler. Du hittar dem under mappen Instrumentpaneler > i Azure Managed Prometheus , med filnamn som "Kubernetes/Networking/L7 (Namnområde)" och "Kubernetes/Networking/L7 (arbetsbelastning)".
Du bör se mått som liknar följande:
Rensa resurser
Om du inte planerar att använda det här programmet tar du bort de andra resurser som du skapade i den här artikeln med hjälp av az group delete kommandot .
az group delete --name $RESOURCE_GROUP
Nästa steg
I den här artikeln har du lärt dig hur du aktiverar och tillämpar L7-principer med Advanced Container Networking Services för ditt AKS-kluster.
- Mer information om Advanced Container Networking Services för Azure Kubernetes Service (AKS) finns i Vad är Advanced Container Networking Services för Azure Kubernetes Service (AKS)?.