Azure Kubernetes Service (AKS) içinde ağ ilkelerini kullanarak podlar arasındaki trafiğin güvenliğini sağlama
Kubernetes'te modern, mikro hizmet tabanlı uygulamalar çalıştırarak genellikle birbirleriyle iletişim kuracak bileşenleri denetlemeyi istersiniz. En az ayrıcalık ilkesi, trafiğin bir Azure Kubernetes Service (AKS) kümesinde podlar arasında akışına uygulanmalıdır. Büyük olasılıkla doğrudan arka uç uygulamalarına trafiği engellemek istediğinizi diyelim. Kubernetes'in Ağ İlkesi özelliği, kümede podlar arasında giriş ve çıkış trafiği için kurallar tanımlamaya olanak sağlar.
Bu makalede AKS'de podlar arasındaki trafik akışını kontrol etmek için ağ ilkesi altyapısını yükleme ve Kubernetes ağ ilkeleri oluşturma açıklanmıştır. Ağ ilkesi yalnızca AKS'de Linux tabanlı düğümler ve podlar için kullanılmalıdır.
Başlamadan önce
Azure CLI 2.0.61 veya sonraki bir sürümün yüklü ve yapılandırılmış olması gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.
İpucu
Önizleme sırasında ağ ilkesi özelliğini kullandıysanız, yeni bir küme oluşturmanızı öneririz.
Önizleme sırasında ağ ilkesi kullanan mevcut test kümelerini kullanmaya devam etmek isterseniz, kümenizi en son GA sürümü için yeni bir Kubernetes sürümlerine yükseltin ve ardından kilitlenme ölçüm sunucusunu ve Kubernetes panosuyu düzeltmek için aşağıdaki YAML bildirimini dağıtın. Bu düzeltme yalnızca Zamanco ağ ilkesi altyapısını kullanılan kümeler için gereklidir.
En iyi güvenlik uygulaması olarak, AKS kümesine nelerin dağıtıldığından anlamak için bu YAML bildiriminin içeriğini gözden geçirin.
kubectl delete -f https://raw.githubusercontent.com/Azure/aks-engine/master/docs/topics/calico-3.3.1-cleanup-after-upgrade.yaml
Ağ ilkesine genel bakış
AKS kümesinde yer alan tüm podlar varsayılan olarak sınırlama olmadan trafik gönderebilir ve alır. Güvenliği artırmak için trafik akışını kontrol altına alan kurallar tanımlayabilirsiniz. Arka uç uygulamaları genellikle yalnızca gerekli ön uç hizmetleri için kullanılır, örneğin. Veya veritabanı bileşenlerine yalnızca onlara bağlanan uygulama katmanları tarafından erişilebilir.
Ağ İlkesi, Podlar arasındaki iletişim için erişim ilkelerini tanımlayan bir Kubernetes belirtimidir. Ağ İlkelerini kullanarak, trafik gönderecek ve alacak ve bunları bir veya daha fazla etiket seçicisi ile eşan bir pod koleksiyonuna uygulayacak bir dizi kural tanımlarsınız.
Bu ağ ilkesi kuralları YAML bildirimleri olarak tanımlanır. Ağ ilkeleri, aynı zamanda bir dağıtım veya hizmet oluşturan daha geniş bir bildirimin parçası olarak dahil olabilir.
AKS'de ağ ilkesi seçenekleri
Azure, ağ ilkesi uygulamak için iki yol sağlar. AKS kümesi oluşturmada bir ağ ilkesi seçeneği seçersiniz. İlke seçeneği, küme oluşturulduktan sonra değiştirilemez:
- Azure'ın Azure Ağ İlkeleri olarak adlandırılan kendi uygulaması.
- Lifea tarafından kurulan açık kaynak bir ağ ve ağ güvenlik çözümü olan Buco Ağ İlkeleri.
Her iki uygulama da belirtilen ilkeleri zorlamak için Linux IPTable'ları kullanır. İlkeler izin verilen ve izin verilmeyen IP çiftleri kümesine çevrilir. Bu çiftler daha sonra IPTable filtre kuralları olarak programlanır.
Azure veLifeco ilkeleri arasındaki farklar ve bunların özellikleri
| Özellik | Azure | Calico |
|---|---|---|
| Desteklenen platformlar | Linux | Linux, Windows Server 2019 (önizleme) |
| Desteklenen ağ seçenekleri | Azure CNI | Azure CNI (Windows Server 2019 ve Linux) ve kubenet (Linux) |
| Kubernetes belirtimi ile uyumluluk | Desteklenen tüm ilke türleri | Desteklenen tüm ilke türleri |
| Ek özellikler | Hiçbiri | Genel Ağ İlkesi, Genel Ağ Kümesi ve Konak Uç Noktası'dan oluşan genişletilmiş ilke modeli. Bu genişletilmiş özellikleri yönetmek için calicoctl CLI kullanma hakkında daha fazla bilgi için bkz. kullanıcı başvurusu . |
| Destek | Azure desteği Mühendislik ekibi tarafından desteklenen | Bu topluluk desteği. Ücretli ek destek hakkında daha fazla bilgi için bkz. Project Support options. |
| Günlüğe Kaydetme | IPTable'lara eklenen/silinen kurallar /var/log/azure-npm.log altındaki her konakta günlüğe kaydedilir | Daha fazla bilgi için bkz.Lifeco bileşen günlükleri |
AKS kümesi oluşturma ve ağ ilkesi etkinleştirme
Ağ ilkelerinin nasıl olduğunu görmek için trafik akışını tanımlayan bir ilke oluşturacağız ve genişleteceğiz:
- Poda gelen tüm trafiği reddedin.
- Pod etiketlerine göre trafiğe izin ver.
- Ad alanına göre trafiğe izin ver.
İlk olarak, ağ ilkesi destekleyen bir AKS kümesi oluştur o zaman.
Önemli
Ağ ilkesi özelliği yalnızca küme oluşturulduğunda etkinleştirilebilir. Mevcut AKS kümesinde ağ ilkesi etkinleştiresiniz.
Azure Ağ İlkesi'ne sahip olmak için, Azure CNI eklentisini kullanmalı ve kendi sanal ağ ve alt ağlarınızı tanımlamelisiniz. Gerekli alt ağ aralıklarını planlama hakkında daha ayrıntılı bilgi için bkz. Gelişmiş ağ yapılandırma. Bu aynı eklentiyle veya Kubenet CNI eklentisiyle Azure CNI Olarak Daleco Ağ İlkesi kullanılabilir.
Aşağıdaki örnek betik:
- Bir sanal ağ ve alt ağ oluşturur.
- AKS kümesi Azure Active Directory için bir hizmet sorumlusu (Azure AD) oluşturur.
- Sanal ağ üzerinde AKS kümesi hizmet sorumlusu için Katkıda Bulunan izinleri atar.
- Tanımlı sanal ağ içinde bir AKS kümesi oluşturur ve ağ ilkesi etkinleştirir.
- Azure Ağ ilkesi seçeneği kullanılır. Bunun yerine ağ ilkesi seçeneği olarakLifeco'yu kullanmak için parametresini
--network-policy calicokullanın. Not: Veya ile Bazıco--network-plugin azure--network-plugin kubenetkullanılabilir.
- Azure Ağ ilkesi seçeneği kullanılır. Bunun yerine ağ ilkesi seçeneği olarakLifeco'yu kullanmak için parametresini
Hizmet sorumlusu kullanmak yerine izinler için yönetilen kimlik kullanabileceğiniz unutmayın. Daha fazla bilgi için bkz. Yönetilen kimlikleri kullanma.
Kendi güvenli SP_PASSWORD. Aşağıdaki değişkenleri RESOURCE_GROUP_NAME ve CLUSTER_NAME değiştirebilirsiniz:
RESOURCE_GROUP_NAME=myResourceGroup-NP
CLUSTER_NAME=myAKSCluster
LOCATION=canadaeast
# Create a resource group
az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
# Create a virtual network and subnet
az network vnet create \
--resource-group $RESOURCE_GROUP_NAME \
--name myVnet \
--address-prefixes 10.0.0.0/8 \
--subnet-name myAKSSubnet \
--subnet-prefix 10.240.0.0/16
# Create a service principal and read in the application ID
SP=$(az ad sp create-for-rbac --role Contributor --output json)
SP_ID=$(echo $SP | jq -r .appId)
SP_PASSWORD=$(echo $SP | jq -r .password)
# Wait 15 seconds to make sure that service principal has propagated
echo "Waiting for service principal to propagate..."
sleep 15
# Get the virtual network resource ID
VNET_ID=$(az network vnet show --resource-group $RESOURCE_GROUP_NAME --name myVnet --query id -o tsv)
# Assign the service principal Contributor permissions to the virtual network resource
az role assignment create --assignee $SP_ID --scope $VNET_ID --role Contributor
# Get the virtual network subnet resource ID
SUBNET_ID=$(az network vnet subnet show --resource-group $RESOURCE_GROUP_NAME --vnet-name myVnet --name myAKSSubnet --query id -o tsv)
Azure ağ ilkeleri için AKS kümesi oluşturma
AKS kümesi oluşturun ve ağ eklentisi ve ağ ilkesi için sanal ağı, hizmet sorumlusu bilgilerini ve Azure'u belirtin.
az aks create \
--resource-group $RESOURCE_GROUP_NAME \
--name $CLUSTER_NAME \
--node-count 1 \
--generate-ssh-keys \
--service-cidr 10.0.0.0/16 \
--dns-service-ip 10.0.0.10 \
--docker-bridge-address 172.17.0.1/16 \
--vnet-subnet-id $SUBNET_ID \
--service-principal $SP_ID \
--client-secret $SP_PASSWORD \
--network-plugin azure \
--network-policy azure
Kümenin oluşturulması birkaç dakika sürer. Küme hazır olduğunda az kubectl aks get-credentials komutunu kullanarak Kubernetes kümenize bağlanın. Bu komut kimlik bilgilerini indirir ve Kubernetes CLI'yi bunları kullanmak üzere yapılandırıyor:
az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Grupco ağ ilkeleri için AKS kümesi oluşturma
AKS kümesi oluşturun ve sanal ağı, hizmet sorumlusu bilgilerini, ağ eklentisi için azure'ı ve ağ ilkesi içinco'yu belirtin. Ağ ilkesi olarak networkco'yu kullanmak hem Linux hem de düğüm havuzlarında Windows sağlar.
Kümenize bir düğüm Windows eklemeyi planlıyorsanız, sunucu parolası gereksinimlerini Windows windows-admin-username windows-admin-password ve parametrelerini dahil edin. Düğüm havuzlarını kullanarak Windows Için, ayrıca kaydını da kaydetmeniz Microsoft.ContainerService/EnableAKSWindowsCalico gerekir.
Aşağıdaki EnableAKSWindowsCalico örnekte gösterildiği gibi az feature register komutunu kullanarak özellik bayrağını kaydetme:
az feature register --namespace "Microsoft.ContainerService" --name "EnableAKSWindowsCalico"
az feature list komutunu kullanarak kayıt durumunu kontrol edin:
az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/EnableAKSWindowsCalico')].{Name:name,State:properties.state}"
Hazır olduğunda az provider register komutunu kullanarak Microsoft.ContainerService kaynak sağlayıcısının kaydını yenileyin:
az provider register --namespace Microsoft.ContainerService
Önemli
Şu anda, Kubernetes sürüm 1.20 veya sonraki sürümünü Velico 3.17.2 ile kullanan yeni kümelerde, Windows düğümleri ile ArtıkCo ağ ilkelerinin kullanımı Azure CNI gerekir. Windows Aks kümelerini etkinleştiren düğümlerde de Direct Server Return (DSR) varsayılan olarak etkindir.
Yalnızca Kubernetes 1.20 çalıştıran linux düğüm havuzlarına sahip kümeler için, Daha önceki Sürümlerinden Birico sürümü otomatik olarak 3.17.2'ye yükseltilir.
Windows düğümlerine sahip Olan Güncelco ağ ilkeleri şu anda önizlemededir.
Önemli
AKS önizleme özellikleri self servis, kabul etme temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "kullanılabilir" olarak sağlanır ve hizmet düzeyi sözleşmelerinden ve sınırlı garantiden dışlanmıştır. AKS önizlemeleri en iyi çaba temelinde müşteri desteği kapsamındadır. Bu nedenle bu özellikler üretimde kullanım için uygun değil. Daha fazla bilgi için aşağıdaki destek makalelerini okuyun:
Kümeniz üzerinde Windows Server kapsayıcıları için yönetici kimlik bilgileri olarak kullanmak üzere bir kullanıcı adı oluşturun. Aşağıdaki komutlar sizden bir kullanıcı adı WINDOWS_USERNAME sonraki bir komutta kullanmak üzere bir kullanıcı adı ayarlayın (bu makaledeki komutların bir BASH kabuğuna girilir).
echo "Please enter the username to use as administrator credentials for Windows Server containers on your cluster: " && read WINDOWS_USERNAME
az aks create \
--resource-group $RESOURCE_GROUP_NAME \
--name $CLUSTER_NAME \
--node-count 1 \
--generate-ssh-keys \
--service-cidr 10.0.0.0/16 \
--dns-service-ip 10.0.0.10 \
--docker-bridge-address 172.17.0.1/16 \
--vnet-subnet-id $SUBNET_ID \
--service-principal $SP_ID \
--client-secret $SP_PASSWORD \
--windows-admin-username $WINDOWS_USERNAME \
--vm-set-type VirtualMachineScaleSets \
--kubernetes-version 1.20.2 \
--network-plugin azure \
--network-policy calico
Kümenin oluşturulması birkaç dakika sürer. Varsayılan olarak, kümeniz yalnızca bir Linux düğüm havuzuyla oluşturulur. Düğüm havuzlarını kullanmak Windows, bir tane eklersiniz. Örnek:
az aks nodepool add \
--resource-group $RESOURCE_GROUP_NAME \
--cluster-name $CLUSTER_NAME \
--os-type Windows \
--name npwin \
--node-count 1
Küme hazır olduğunda az kubectl aks get-credentials komutunu kullanarak Kubernetes kümenize bağlanın. Bu komut kimlik bilgilerini indirir ve Kubernetes CLI'yi bunları kullanmak üzere yapılandırıyor:
az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Poda gelen tüm trafiği reddet
Belirli ağ trafiğine izin verecek kuralları tanımlamadan önce tüm trafiği reddedecek bir ağ ilkesi oluşturun. Bu ilke, yalnızca istenen trafik için bir izin verme listesi oluşturmak üzere başlangıç noktası sağlar. Ağ ilkesi uygulandığında trafiğin bırakıldığına da açıkça bakabilirsiniz.
Örnek uygulama ortamı ve trafik kuralları için önce örnek podları çalıştırmak üzere geliştirme adlı bir ad alanı oluşturacağız:
kubectl create namespace development
kubectl label namespace/development purpose=development
NGINX'i çalıştıran örnek bir arka uç podu oluşturun. Bu arka uç podu, örnek bir arka uç web tabanlı uygulamanın benzetimini yapmak için kullanılabilir. Geliştirme ad alanına bu podu oluşturun ve web trafiğine hizmet vermek için 80 bağlantı noktasını açın. Sonraki bölümde bir ağ ilkesiyle hedeflemek için poda app=webapp,role=backend etiketini kullanın:
kubectl run backend --image=mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine --labels app=webapp,role=backend --namespace development --expose --port 80
Başka bir pod oluşturun ve varsayılan NGINX web sayfasına başarıyla ulaşabilirsiniz. Test etmek için bir terminal oturumu oluşturun:
kubectl run --rm -it --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11 network-policy --namespace development
Kabuk isteminde kullanarak varsayılan wget NGINX web sayfasına erişebilirsiniz:
wget -qO- http://backend
Aşağıdaki örnek çıktı, varsayılan NGINX web sayfasının döndürüldü olduğunu gösterir:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
[...]
Ekli terminal oturumundan çıkın. Test pod'u otomatik olarak silinir.
exit
Ağ ilkesi oluşturma ve uygulama
Örnek arka uç pod'larında temel NGINX web sayfasını kullanabileceğiniz onaylandıktan sonra tüm trafiği reddeden bir ağ ilkesi oluşturun. adlı bir dosya oluşturun backend-policy.yaml ve aşağıdaki YAML bildirimini yapıştırın. Bu bildirim, ilkeyi app:webapp,role:backend etiketine sahip olan podlara eklemek için örnek NGINX pod'uz gibi bir podSelector kullanır. Giriş altında hiçbir kural tanımlanmamıştır, bu nedenle poda gelen tüm trafik reddedilir:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: backend-policy
namespace: development
spec:
podSelector:
matchLabels:
app: webapp
role: backend
ingress: []
Tarayıcınızda https://shell.azure.com Azure Cloud Shell açın.
kubectl apply komutunu kullanarak ağ ilkesi uygulama ve YAML bildiriminizin adını belirtin:
kubectl apply -f backend-policy.yaml
Ağ ilkesi test
Arka uç podda NGINX web sayfasını yeniden kullanabileceğiniz bir bakalım. Başka bir test pod'u oluşturun ve terminal oturumu oluşturun:
kubectl run --rm -it --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11 network-policy --namespace development
Kabuk isteminde, varsayılan wget NGINX web sayfasına erişenin olup olamay olduğunu görmek için kullanın. Bu kez, zaman aşımı değerini 2 saniye olarak ayarlayın. Ağ ilkesi artık tüm gelen trafiği engeller, bu nedenle aşağıdaki örnekte gösterildiği gibi sayfa yüklenemiyor:
wget -O- --timeout=2 --tries=1 http://backend
wget: download timed out
Ekli terminal oturumundan çıkın. Test pod'u otomatik olarak silinir.
exit
Pod etiketine göre gelen trafiğe izin verme
Önceki bölümde bir arka uç NGINX podu zamanlandı ve tüm trafiği reddetmek için bir ağ ilkesi oluşturuldu. Ön uç podunu oluşturacağız ve ağ ilkesini ön uç podlarından gelen trafiğe izin verecek şekilde güncelleştirin.
App:webapp,role:frontend etiketlerini kullanarak podlardan gelen trafiğe izin vermek için ağ ilkesi güncelleştirin. Önceki backend-policy.yaml dosyasını düzenleyin ve bildiriminizin aşağıdaki örnekte olduğu gibi görünüyor olacak şekilde matchLabels giriş kuralları ekleyin:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: backend-policy
namespace: development
spec:
podSelector:
matchLabels:
app: webapp
role: backend
ingress:
- from:
- namespaceSelector: {}
podSelector:
matchLabels:
app: webapp
role: frontend
Not
Bu ağ ilkesi, giriş kuralı için namespaceSelector ve podSelector öğesi kullanır. YAML söz dizimi, giriş kurallarının eklenebilir olması açısından önemlidir. Bu örnekte, giriş kuralının uygulanması için her iki öğenin de eşleşmesi gerekir. 1.12'den önceki Kubernetes sürümleri bu öğeleri doğru yorumlayamayabiliyor ve ağ trafiğini beklediğiniz gibi kısıtluyor olabilir. Bu davranış hakkında daha fazla bilgi için bkz. Seçicilere ve seçicilerden davranışı.
Kubectl apply komutunu kullanarak güncelleştirilmiş ağ ilkesi uygulama ve YAML bildiriminizin adını belirtin:
kubectl apply -f backend-policy.yaml
app=webapp,role=frontend olarak etiketlenmiş bir pod zamanlaması ve terminal oturumu ekleme:
kubectl run --rm -it frontend --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11 --labels app=webapp,role=frontend --namespace development
Kabuk isteminde kullanarak varsayılan wget NGINX web sayfasına erişebilirsiniz:
wget -qO- http://backend
Giriş kuralı şu etiket uygulamasına sahip podlarla trafiğe izin verir: webapp,rol: ön uç, ön uç poddan gelen trafiğe izin verilir. Aşağıdaki örnek çıktı, döndürülen varsayılan NGINX web sayfasını gösterir:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
[...]
Ekli terminal oturumundan çıkın. Pod otomatik olarak silinir.
exit
Eşleşen etiket olmadan podu test etmek
Ağ ilkesi uygulama: webapp,rol: ön uç etiketli podlardan gelen trafiğe izin verir, ancak diğer tüm trafiği reddeder. Bu etiketlere sahip olmayan başka bir pod'un arka uç NGINX pod'a erişip erişe olmadığını test edin. Başka bir test pod'u oluşturun ve terminal oturumu oluşturun:
kubectl run --rm -it --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11 network-policy --namespace development
Kabuk isteminde, varsayılan wget NGINX web sayfasına erişenin olup olamay olduğunu görmek için kullanın. Ağ ilkesi gelen trafiği engeller, bu nedenle aşağıdaki örnekte gösterildiği gibi sayfa yüklenemiyor:
wget -O- --timeout=2 --tries=1 http://backend
wget: download timed out
Ekli terminal oturumundan çıkın. Test pod'u otomatik olarak silinir.
exit
Yalnızca tanımlı bir ad alanının içindeki trafiğe izin ver
Önceki örneklerde, tüm trafiği reddeden bir ağ ilkesi oluşturduktan sonra ilkeyi belirli bir etikete sahip podlardan gelen trafiğe izin verecek şekilde güncelleştirildi. Bir diğer yaygın ihtiyaç ise trafiği yalnızca belirli bir ad alanı içinde sınırlamaktır. Önceki örnekler bir geliştirme ad alanı trafiği içinse, üretim gibi başka bir ad alanlarından gelen trafiğin podlara ulaşmasını engelleyen bir ağ ilkesi oluşturun.
İlk olarak, üretim ad alanının benzetimini yapmak için yeni bir ad alanı oluşturun:
kubectl create namespace production
kubectl label namespace/production purpose=production
üretim ad alanının app=webapp,role=frontend olarak etiketlenmiş bir test podunu zamanlaması. Terminal oturumu ekleme:
kubectl run --rm -it frontend --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11 --labels app=webapp,role=frontend --namespace production
Kabuk isteminde kullanarak varsayılan wget NGINX web sayfasına erişebilirsiniz:
wget -qO- http://backend.development
Pod etiketleri ağ ilkesinde şu anda izin verilen etiketlerle eş olduğundan trafiğe izin verilir. Ağ ilkesi ad alanlarına değil yalnızca pod etiketlerine bakar. Aşağıdaki örnek çıktı, döndürülen varsayılan NGINX web sayfasını gösterir:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
[...]
Ekli terminal oturumundan çıkın. Test pod'u otomatik olarak silinir.
exit
Ağ ilkesi güncelleştirme
Şimdi namespaceSelector giriş kuralını yalnızca geliştirme ad alanı içinde gelen trafiğe izin verecek şekilde güncelleştirin. Backend-policy.yaml bildirim dosyasını aşağıdaki örnekte gösterildiği gibi düzenleyin:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: backend-policy
namespace: development
spec:
podSelector:
matchLabels:
app: webapp
role: backend
ingress:
- from:
- namespaceSelector:
matchLabels:
purpose: development
podSelector:
matchLabels:
app: webapp
role: frontend
Daha karmaşık örneklerde namespaceSelector ve ardından podSelector gibi birden çok giriş kuralı tanımlayabilirsiniz.
Kubectl apply komutunu kullanarak güncelleştirilmiş ağ ilkesi uygulama ve YAML bildiriminizin adını belirtin:
kubectl apply -f backend-policy.yaml
Güncelleştirilmiş ağ ilkesi test
Üretim ad alanına başka bir pod zamanlama ve terminal oturumu ekleme:
kubectl run --rm -it frontend --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11 --labels app=webapp,role=frontend --namespace production
Kabuk isteminde, ağ wget ilkesinde artık trafiğin geri doğru olduğunu görmek için kullanın:
wget -O- --timeout=2 --tries=1 http://backend.development
wget: download timed out
Test pod'unu çıkın:
exit
Üretim ad alanının trafiği reddedilirken, geliştirme ad alanına geri bir test pod'u zamanlaması ve bir terminal oturumu eklemesi gerekir:
kubectl run --rm -it frontend --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11 --labels app=webapp,role=frontend --namespace development
Kabuk isteminde, ağ wget ilkesinde trafiğe izin verili olduğunu görmek için kullanın:
wget -qO- http://backend
Pod, ağ ilkesinde izin verilenle eşleşen ad alanı içinde zamanlandığı için trafiğe izin verilir. Aşağıdaki örnek çıktı, döndürülen varsayılan NGINX web sayfasını gösterir:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
[...]
Ekli terminal oturumundan çıkın. Test pod'u otomatik olarak silinir.
exit
Kaynakları temizleme
Bu makalede iki ad alanı oluşturduk ve bir ağ ilkesi uyguladık. Bu kaynakları temizlemek için kubectl delete komutunu kullanın ve kaynak adlarını belirtin:
kubectl delete namespace production
kubectl delete namespace development
Sonraki adımlar
Ağ kaynakları hakkında daha fazla bilgi için bkz. Ağ (AKS) Azure Kubernetes Service uygulamaları için ağ kavramları.
İlkeler hakkında daha fazla bilgi edinmek için bkz. Kubernetes ağ ilkeleri.