Nastavení funkce filtrování plně kvalifikovaného názvu domény pro zabezpečení sítě kontejneru v pokročilých službách Container Networking Services
V tomto článku se dozvíte, jak v clusterech AKS nastavit službu Advanced Container Networking Services s funkcí Zabezpečení sítě kontejnerů.
Požadavky
- Účet Azure s aktivním předplatným. Pokud ho nemáte, vytvořte si bezplatný účet před tím, než začnete.
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shellu.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
Minimální verze Azure CLI vyžadovaná pro kroky v tomto článku je 2.56.0. Verzi zjistíte spuštěním příkazu az --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
Instalace rozšíření Azure CLI aks-Preview
Nainstalujte nebo aktualizujte rozšíření Azure CLI ve verzi Preview pomocí az extension add
příkazu nebo az extension update
příkazu.
# 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
Povolení pokročilých síťových služeb kontejnerů
Abyste mohli pokračovat, musíte mít cluster AKS s povolenou službou Advanced Container Networking Services .
Příkaz az aks create
s příznakem --enable-acns
Advanced Container Networking Services vytvoří nový cluster AKS se všemi funkcemi Advanced Container Networking Services. Mezi tyto funkce patří:
Pozorovatelnost služby Container Network: Poskytuje přehled o síťovém provozu. Další informace najdete v tématu Pozorovatelnost služby Container Network.
Zabezpečení sítě kontejnerů: Nabízí funkce zabezpečení, jako je filtrování plně kvalifikovaných názvů domén. Další informace najdete v tématu Container Network Security.
Poznámka:
Clustery s rovinou dat Cilium podporují zabezpečení Container Network Observability a Container Network počínaje Kubernetes verze 1.29.
# Set an environment variable for the AKS cluster name. Make sure to replace the placeholder with your own value.
export CLUSTER_NAME="<aks-cluster-name>"
# Create an AKS cluster
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--generate-ssh-keys \
--location eastus \
--max-pods 250 \
--network-plugin azure \
--network-plugin-mode overlay \
--network-dataplane cilium \
--node-count 2 \
--pod-cidr 192.168.0.0/16 \
--kubernetes-version 1.29 \
--enable-acns
Povolení pokročilých služeb Container Networking Services v existujícím clusteru
Příkaz az aks update
s příznakem --enable-acns
Advanced Container Networking Services aktualizuje existující cluster AKS se všemi funkcemi Advanced Container Networking Services, které zahrnují pozorovatelnost služby Container Network a funkci Zabezpečení sítě kontejnerů.
Poznámka:
Pouze clustery s rovinou dat Cilium podporují funkce zabezpečení kontejnerové sítě služby Advanced Container Networking Services.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns
Získání přihlašovacích údajů clusteru
Pomocí příkazu získejte přihlašovací údaje ke clusteru az aks get-credentials
.
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Testování připojení pomocí zásad
Tato část ukazuje, jak sledovat zásady, které se vynucují prostřednictvím agenta Cilium. Požadavek DNS se provádí do povoleného plně kvalifikovaného názvu domény a jiného případu, kdy je zablokovaný.
Vytvořte soubor s názvem demo-policy.yaml
a vložte následující manifest YAML:
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
name: "allow-bing-fqdn"
spec:
endpointSelector:
matchLabels:
app: demo-container
egress:
- toEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": kube-system
"k8s:k8s-app": kube-dns
toPorts:
- ports:
- port: "53"
protocol: ANY
rules:
dns:
- matchPattern: "*.bing.com"
- toFQDNs:
- matchPattern: "*.bing.com"
Zadejte název manifestu YAML a použijte ho pomocí příkazu [kubectl apply][kubectl-apply]:
kubectl apply –f demo-policy.yaml -n demo
Vytvoření ukázkového podu
Vytvořte pod se spuštěným client
Bashem:
kubectl run -it client -n demo --image=k8s.gcr.io/e2e-test-images/agnhost:2.43 --labels="app=demo-container" --command -- bash
Prostředí s nástroji pro testování plně kvalifikovaného názvu domény by se mělo otevřít s následujícím výstupem:
If you don't see a command prompt, try pressing enter.
bash-5.0#
Spuštěním následujícího příkazu v samostatném okně získejte uzel spuštěného podu.
kubectl get po -n demo --sort-by="{spec.nodeName}" -o wide
Výstup by měl vypadat zhruba jako v tomto příkladu:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
client 1/1 Running 0 5m50s 192.168.0.139 aks-nodepool1-22058664-vmss000001 <none> <none>
Pod běží na uzlu s názvem aks-nodepool1-22058664-vmss000001
. Získejte instanci agenta Cilium spuštěnou na tomto uzlu:
k get po -n kube-system -o wide --field-selector spec.nodeName="aks-nodepool1-22058664-vmss000001" | grep "cilium"
Očekávaný výsledek cilium-s4x24
by měl být ve výstupu.
cilium-s4x24 1/1 Running 0 47m 10.224.0.4 aks-nodepool1-22058664-vmss000001 <none> <none>
Kontrola agenta Cilium
Pomocí rozhraní příkazového cilium
řádku můžete monitorovat blokovaný provoz.
kubectl exec -it -n kube-system cilium-s4x24 -- sh
Defaulted container "cilium-agent" out of: cilium-agent, install-cni-binaries (init), mount-cgroup (init), apply-sysctl-overwrites (init), mount-bpf-fs (init), clean-cilium-state (init), block-wireserver (init)
#
V tomto prostředí spusťte cilium monitor -t drop
příkaz :
Listening for events on 2 CPUs with 64x4096 of shared memory
Press Ctrl-C to quit
time="2024-10-08T17:48:27Z" level=info msg="Initializing dissection cache..." subsys=monitor
Ověření zásad
V prvním prostředí vytvořte požadavek na povolený plně kvalifikovaný název domény , *.bing.com
jak je určeno zásadou. To by mělo být úspěšné a povolené agentem.
bash-5.0# ./agnhost connect www.bing.com:80
Pak vytvořte další požadavek na blokovaný plně kvalifikovaný název domény:
bash-5.0# ./agnhost connect www.example.com:80
Agent Cilium zablokoval požadavek výstupem:
xx drop (Policy denied) flow 0xfddd76f6 to endpoint 0, ifindex 29, file bpf_lxc.c:1274, , identity 48447->world: 192.168.0.149:45830 -> 93.184.215.14:80 tcp SYN
Vyčištění prostředků
Pokud nemáte v plánu používat tuto aplikaci, pomocí příkazu odstraňte další prostředky, které jste vytvořili v tomto článku az group delete
.
az group delete --name $RESOURCE_GROUP
Další kroky
V tomto článku s postupy jste se dozvěděli, jak nainstalovat a povolit funkce zabezpečení pomocí Advanced Container Networking Services pro cluster AKS.
- Další informace o Advanced Container Networking Services pro Azure Kubernetes Service (AKS) najdete v tématu Co je Advanced Container Networking Services pro Azure Kubernetes Service (AKS)?.
Azure Kubernetes Service