Gelişmiş Kapsayıcı Ağ Hizmetleri ile Katman 7(L7) ilkelerini ayarlama

Bu makalede AKS kümelerinde Gelişmiş Kapsayıcı Ağ Hizmetleri ile L7 ilkelerinin nasıl ayarlanacağı gösterilmektedir. Yalnızca Katman 7 İlkesine Genel Bakış sayfasında listelenen sınırlamaları ve dikkate alınacak noktaları gözden geçirdikten sonra devam edin.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı. Hesabınız yoksa başlamadan önce ücretsiz bir hesap oluşturun.
  • bash ortamını Azure Cloud Shell kullanın. Daha fazla bilgi için bkz. Azure Cloud Shell ile çalışmaya başlama.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yi yükleyin. Windows veya macOS üzerinde çalıştırıyorsanız Azure CLI Docker kapsayıcısında çalıştırmayı göz önünde bulundurun. Daha fazla bilgi için bkz. Docker kapsayıcısında Azure CLI çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI oturum açın. Kimlik doğrulama işlemini tamamlamak için, terminalinizde görüntülenen adımları takip edin. Diğer oturum açma seçenekleri için bkz. Azure CLI kullanarak Azure'a kimlik doğrulama.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma ve yönetme.

    • Yüklü olan sürümü ve bağımlı kütüphaneleri bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Bu makaledeki adımlar için gereken en düşük Azure CLI sürümü 2.79.0'dır. Sürümü bulmak için komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI yükleme.

Gelişmiş Kapsayıcı Ağ Hizmetlerini Etkinleştirme

Devam etmek için Gelişmiş Kapsayıcı Ağ Hizmetleri'nin etkinleştirildiği bir AKS kümeniz olmalıdır.

Gelişmiş Kapsayıcı Ağ Hizmetleri bayrağına sahip komut, tüm Gelişmiş Kapsayıcı Ağ Hizmetleri özellikleriyle yeni bir AKS kümesi oluşturur. Bu özellikler şunları kapsar:

  • Kapsayıcı Ağ Gözlemlenebilirliği: Ağ trafiğinizle ilgili içgörüler sağlar. Daha fazla bilgi edinmek için Bkz . Container Network Observability.

  • Kapsayıcı Ağ Güvenliği: Tam Etki Alanı Adı (FQDN) filtrelemesi gibi güvenlik özellikleri sunar. Daha fazla bilgi için Bkz . Container Network Security.

  • Cilium
  • Ciliumsuz

Uyarı

Cilium veri düzlemi olan kümeler, Kubernetes sürüm 1.29'dan başlayarak Kapsayıcı Ağı Gözlemlenebilirliği ve Kapsayıcı Ağı güvenliğini destekler.

Bu tanıtımda, L7 ilkelerini etkinleştirmek için parametresinin "L7" olarak ayarlanması gerekir. Bu parametrenin "L7" olarak ayarlanması FQDN filtrelemesini de etkinleştirir. Yalnızca FQDN filtrelemesini etkinleştirmek istiyorsanız parametresini "FQDN" olarak ayarlayın. Her iki özelliği de devre dışı bırakmak için Kapsayıcı Ağ Güvenliğini Devre Dışı Bırakma başlığında sağlanan yönergeleri izleyebilirsiniz.


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

Mevcut bir kümede Gelişmiş Kapsayıcı Ağ Hizmetlerini etkinleştirme

komutu, Gelişmiş Kapsayıcı Ağ Hizmetleri bayrağı ile mevcut AKS kümesini tüm Gelişmiş Kapsayıcı Ağ Hizmetleri özellikleriyle, yani Kapsayıcı Ağı Gözlemlenebilirliği ve Kapsayıcı Ağ Güvenliği özelliklerini içerecek şekilde güncelleştirir.

Uyarı

Yalnızca Cilium veri düzlemi olan kümeler, Gelişmiş Kapsayıcı Ağ Hizmetleri'nin Kapsayıcı Ağı Güvenliği özelliklerini destekler.

Bu tanıtımda, L7 ilkelerini etkinleştirmek için parametresinin "L7" olarak ayarlanması gerekir. Bu parametrenin "L7" olarak ayarlanması FQDN filtrelemesini de etkinleştirir. Yalnızca FQDN filtrelemesini etkinleştirmek istiyorsanız parametresini "FQDN" olarak ayarlayın. Her iki özelliği de devre dışı bırakmak için Kapsayıcı Ağ Güvenliğini Devre Dışı Bırakma başlığında sağlanan yönergeleri izleyebilirsiniz.

az aks update \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER_NAME \
    --enable-acns \
    --acns-advanced-networkpolicies L7

Küme kimlik bilgilerini alma

komutunu kullanarak küme kimlik bilgilerinizi alın.

az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP

AKS kümenizde http-sunucu uygulamasını ayarlama

Uygulamayı ayarlamak için AKS kümenize aşağıdaki YAML'yi uygulayın.

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";
        }
    }

AKS Kümenizde http-client uygulamasını ayarlama

Uygulamayı ayarlamak için AKS kümenize aşağıdaki YAML'yi uygulayın.

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"]

Bir politikayla bağlantıyı test etme

Ardından, yalnızca uygulamasından isteklere üzerindeki uç noktasına izin vermek için aşağıdaki Katman 7 ilkesini uygulayın.

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"

Politikayı doğrula

İlkenin uygulanmasını doğrulamak için podundan aşağıdaki komutları çalıştırın:

kubectl exec -it <your-http-client-pod-name> -n default -- curl -v http://http-server:80/products

Yukarıdaki komutu çalıştırdığınızda olduğu gibi bir çıkış bekleyebilirsiniz

kubectl exec -it <your-http-client-pod-name> -n default -- curl -v -XPOST http://http-server:80/products -d "test=data"

Yukarıdaki komutu çalıştırdığınızda olduğu gibi bir çıkış bekleyebilirsiniz

L7 ölçümlerini gözlemleme

Gelişmiş Kapsayıcı Ağ Hizmeti'nin kapsayıcı ağı gözlemlenebilirliğini etkinleştirdiyseniz Grafana'da trafiği görselleştirebilirsiniz.

Bu L7 ölçümlerinin analizini basitleştirmek için önceden yapılandırılmış Azure Managed Grafana panoları sağlıyoruz. Bunları Dashboards > Azure Managed Prometheus klasöründe bulabilirsiniz. "Kubernetes/Networking/L7 (Ad Alanı)" ve "Kubernetes/Networking/L7 (İş Yükü)" gibi dosya adlarıyla.

Aşağıdakine benzer ölçümler görmeniz gerekir:

L7 trafiği için Grafana panosunu gösteren ekran görüntüsü.

Kaynakları temizle

Bu uygulamayı kullanmayı planlamıyorsanız komutunu kullanarak bu makalede oluşturduğunuz diğer kaynakları silin.

  az group delete --name $RESOURCE_GROUP

Sonraki Adımlar

Bu nasıl yapılır makalesinde, AKS kümeniz için Gelişmiş Kapsayıcı Ağ Hizmetleri ile L7 İlkelerini etkinleştirmeyi ve uygulamayı öğrendiniz.