Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come configurare le politiche L7 con Advanced Container Networking Services nei cluster AKS. Continuare solo dopo aver esaminato le limitazioni e le considerazioni elencate nella pagina Panoramica dei criteri di livello 7 .
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Se non ne hai uno, crea un account gratuito prima di iniziare.
È possibile utilizzare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Introduzione ad Azure Cloud Shell.
Se preferisci eseguire localmente i comandi di riferimento della CLI, installa l'Azure CLI. Se si esegue in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se usi un'installazione locale, accedi all'interfaccia della riga di comando di Azure usando il comando az login. Per completare il processo di autenticazione, seguire i passaggi visualizzati nel terminale. Per altre opzioni di accesso, vedere Eseguire l'autenticazione ad Azure con l'interfaccia della riga di comando di Azure.
Quando ti viene richiesto, installa l'estensione Azure CLI al primo utilizzo. Per altre informazioni sulle estensioni, vedere Usare e gestire le estensioni con l'interfaccia della riga di comando di Azure.
Esegui az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, avviare az upgrade.
La versione minima dell'interfaccia della riga di comando di Azure necessaria per i passaggi descritti in questo articolo è 2.71.0. Eseguire az --version
per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.
Installare l'estensione aks-preview
dell'interfaccia della riga di comando di Azure.
Installare o aggiornare l'estensione di anteprima dell'interfaccia della riga di comando di Azure usando i comandi az extension add
o az extension update
.
La versione minima dell'estensione dell'interfaccia della riga di comando di Azure aks-preview è 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
Registrare il flag di funzionalità AdvancedNetworkingL7PolicyPreview
Registrare il flag della funzionalità AdvancedNetworkingL7PolicyPreview
usando il comando az feature register
.
az feature register --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingL7PolicyPreview"
Verificare la corretta registrazione usando il az feature show
comando . Per completare la registrazione sono necessari alcuni minuti.
az feature show --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingL7PolicyPreview"
Una volta visualizzata la funzionalità Registered
, aggiornare la registrazione del provider di risorse Microsoft.ContainerService
usando il comando az provider register
.
Abilitare i servizi avanzati di rete per contenitori
Per continuare, è necessario disporre di un cluster AKS con i Servizi di Rete Avanzati per i Contenitori abilitati.
Il comando az aks create
con il flag Advanced Container Networking Services, --enable-acns
, crea un nuovo cluster AKS con tutte le funzionalità avanzate di networking per container. Queste funzionalità includono:
Osservabilità della rete dei contenitori: fornisce informazioni dettagliate sul traffico di rete. Per altre informazioni, vedere Container Network Observability (Osservabilità della rete contenitori).
Sicurezza di rete dei contenitori: Offre funzionalità di sicurezza come il filtro FQDN (Fully Qualified Domain Name). Per altre informazioni, vedere Sicurezza di rete dei contenitori.
Annotazioni
I cluster con il piano dati Cilium supportano l'osservabilità della rete dei contenitori e la sicurezza della rete dei contenitori a partire da Kubernetes versione 1.29.
Per questa demo, il --acns-advanced-networkpolicies
parametro deve essere impostato su "L7" per abilitare i criteri L7. L'impostazione di questo parametro su "L7" abilita anche il filtro FQDN. Se si vuole abilitare solo il filtro FQDN, impostare il parametro su "FQDN". Per disabilitare entrambe le funzionalità, è possibile seguire le istruzioni fornite in Disabilitare la sicurezza di rete dei contenitori.
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
Abilitare i Servizi di Networking Avanzato per Container in un cluster esistente
Il comando az aks update
con il flag Advanced Container Networking Services, --enable-acns
, aggiorna un cluster AKS esistente con tutte le funzionalità di Advanced Container Networking Services, che includono l'osservabilità della rete dei contenitori e la funzionalità di sicurezza della rete dei contenitori.
Annotazioni
Solo i cluster con il piano dati Cilium supportano le funzionalità di sicurezza di rete dei contenitori di Advanced Container Networking Services.
Per questa demo, il --acns-advanced-networkpolicies
parametro deve essere impostato su "L7" per abilitare i criteri L7. L'impostazione di questo parametro su "L7" abilita anche il filtro FQDN. Se si vuole abilitare solo il filtro FQDN, impostare il parametro su "FQDN". Per disabilitare entrambe le funzionalità, è possibile seguire le istruzioni fornite in Disabilitare la sicurezza di rete dei contenitori.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns \
--acns-advanced-networkpolicies L7
Ottenere le credenziali del cluster
Ottenere le credenziali del cluster usando il comando az aks get-credentials
.
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Configurare l'applicazione http-server sul cluster AKS.
Applicare il codice YAML seguente al cluster del servizio Azure Kubernetes per configurare l'applicazione http-server
.
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";
}
}
Configurare l'applicazione http-client nel cluster del servizio Azure Kubernetes
Applicare il codice YAML seguente al cluster del servizio Azure Kubernetes per configurare l'applicazione http-client
.
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"]
Testare la connettività con una politica
Applicare quindi i seguenti criteri livello 7 per consentire solo le richieste di GET
dall'applicazione http-client
all'endpoint /products
sul 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"
Verificare la polizza
Per verificare l'applicazione dei criteri, eseguire questi comandi dal pod http-client
:
kubectl exec -it <your-http-client-pod-name> -n default -- curl -v http://http-server:80/products
È consigliabile aspettarsi un output come Listing products...
quando si esegue il comando precedente
kubectl exec -it <your-http-client-pod-name> -n default -- curl -v -XPOST http://http-server:80/products -d "test=data"
È consigliabile aspettarsi un output come Access Denied
quando si esegue il comando precedente
Osservazione delle metriche L7
Se è abilitata l'osservabilità della rete dei contenitori di Advanced Container Network Service, è possibile visualizzare il traffico in Grafana.
Per semplificare l'analisi di queste metriche L7, forniamo dashboard Grafana gestiti di Azure preconfigurati. È possibile trovarli nella cartella Dashboard di > Azure Managed Prometheus, con nomi file come "Kubernetes/Networking/L7 (spazio dei nomi)" e "Kubernetes/Networking/L7 (Workload)".
Le metriche visualizzate saranno simili alle seguenti:
Pulire le risorse
Se non si prevede di usare questa applicazione, eliminare le altre risorse create in questo articolo usando il comando az group delete
.
az group delete --name $RESOURCE_GROUP
Passaggi successivi
In questo articolo pratico, hai imparato come abilitare e applicare le politiche L7 con i servizi avanzati di rete per i container nel cluster AKS.
- Per altre informazioni sui servizi avanzati di rete per contenitori per il servizio Azure Kubernetes, vedere Che cosa sono i servizi avanzati di rete per contenitori per il servizio Azure Kubernetes?.
Azure Kubernetes Service