Azure Kubernetes Service (AKS) için HTTP uygulama yönlendirme eklentisi (kullanımdan kaldırıldı)

Dikkat

Azure Kubernetes Service (AKS) için HTTP uygulama yönlendirme eklentisi (önizleme) 03 Mart 2025'te kullanımdan kaldırılacaktır. Bu tarihe kadar Uygulama Yönlendirme eklentisine geçiş öneririz.

HTTP uygulama yönlendirme eklentisi, Azure Kubernetes Service (AKS) kümenize şu şekilde dağıtılan uygulamalara erişmeyi kolaylaştırır:

  • AKS kümenizde bir giriş denetleyicisi yapılandırma.
  • Uygulama uç noktaları için genel olarak erişilebilir DNS adları oluşturma
  • Aboneliğinizde dns bölgesi oluşturma. DNS maliyeti hakkında daha fazla bilgi için bkz. DNS fiyatlandırması.

Başlamadan önce

  • HTTP uygulama yönlendirme eklentisi AKS 1.22.6+ sürümleriyle çalışmaz.
  • Komutları yerel olarak çalıştırıyorsanız komutunu kullanarak az aks install-cli yükleyinkubectl.

HTTP uygulama yönlendirme eklentisine genel bakış

Eklenti iki bileşen dağıtır: Kubernetes giriş denetleyicisi ve Dış DNS denetleyicisi.

  • Giriş denetleyicisi: Giriş denetleyicisi bir Kubernetes LoadBalancer hizmeti kullanılarak İnternet'e sunulur. Giriş denetleyicisi Kubernetes giriş kaynaklarını izleyip uygular ve uygulama uç noktalarına yönelik yollar oluşturur.
  • Dış-DNS denetleyicisi: Dış-DNS denetleyicisi Kubernetes giriş kaynaklarını izler ve kümeye özgü DNS bölgesinde DNS A kayıtları oluşturur.

HTTP uygulama yönlendirmesini etkinleştirme

  1. Parametresiyle komutunu kullanarak yeni bir AKS kümesi oluşturun ve HTTP uygulama yönlendirme eklentisini az aks create--enable-addons etkinleştirin.

    az aks create --resource-group myResourceGroup --name myAKSCluster --enable-addons http_application_routing
    

    Parametresiyle komutunu kullanarak var olan bir AKS kümesinde HTTP yönlendirmesini az aks enable-addons--addons de etkinleştirebilirsiniz.

    az aks enable-addons --resource-group myResourceGroup --name myAKSCluster --addons http_application_routing
    
  2. komutunu kullanarak az aks show DNS bölgesi adını alın. Uygulamaları kümeye dağıtmak için DNS bölgesi adına ihtiyacınız vardır.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query addonProfiles.httpApplicationRouting.config.HTTPApplicationRoutingZoneName -o table
    

    Çıkışınız aşağıdaki örnek çıkış gibi görünmelidir:

    9f9c1fe7-21a1-416d-99cd-3543bb92e4c3.eastus.aksapp.io
    

AKS kümenize bağlanma

  • komutunu kullanarak Kubernetes kümenize bağlanacak şekilde az aks get-credentials yapılandırınkubectl. Aşağıdaki örnek, myResourceGroup'tamyAKSCluster adlı AKS kümesinin kimlik bilgilerini alır:

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

HTTP uygulaması yönlendirmeyi kullanma

Önemli

HTTP uygulama yönlendirme eklentisi yalnızca aşağıdaki ek açıklamayla giriş kaynaklarında tetiklenebilir:

annotations:
 kubernetes.io/ingress.class: addon-http-application-routing
  1. Samples-http-application-routing.yaml adlı bir dosya oluşturun ve aşağıdaki YAML'de kopyalayın. 43. satırda, önceki adımda topladığınız DNS bölgesi adıyla güncelleştirin <CLUSTER_SPECIFIC_DNS_ZONE> .

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: aks-helloworld
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: aks-helloworld
      template:
        metadata:
          labels:
            app: aks-helloworld
        spec:
          containers:
          - name: aks-helloworld
            image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
            ports:
            - containerPort: 80
            env:
            - name: TITLE
              value: "Welcome to Azure Kubernetes Service (AKS)"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: aks-helloworld
    spec:
      type: ClusterIP
      ports:
     - port: 80
      selector:
        app: aks-helloworld
    ---
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: aks-helloworld
      annotations:
        kubernetes.io/ingress.class: addon-http-application-routing
    spec:
      rules:
     - host: aks-helloworld.<CLUSTER_SPECIFIC_DNS_ZONE>
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: aks-helloworld
                port:
                  number: 80
    
  2. komutunu kullanarak kubectl apply kaynakları oluşturun.

    kubectl apply -f samples-http-application-routing.yaml
    

    Aşağıdaki örnek, oluşturulan kaynakları gösterir:

    deployment.apps/aks-helloworld created
    service/aks-helloworld created
    ingress.networking.k8s.io/aks-helloworld created
    
  3. aks-helloworld için bir web tarayıcısı açın.<>CLUSTER_SPECIFIC_DNS_ZONE, örneğin aks-helloworld.9f9c1fe7-21a1-416d-99cd-3543bb92e4c3.eastus.aksapp.io ve tanıtım uygulamasını gördüğünüzden emin olun. Uygulamanın görünmesi birkaç dakika sürebilir.

HTTP uygulama yönlendirmesini kaldırma

  1. [az aks disable-addons][az-aks-disable-addons] command with the addons' parametresini kullanarak HTTP uygulama yönlendirme eklentisini kaldırın.

    az aks disable-addons --addons http_application_routing --name myAKSCluster --resource-group myResourceGroup --no-wait
    
  2. HTTP uygulama yönlendirme eklentisi devre dışı bırakıldığında, bazı Kubernetes kaynakları kümede kalabilir. Bu kaynaklar yapılandırma haritalarını ve gizli dizileri içerir ve kube-system ad alanında oluşturulur. Temiz bir kümeyi korumak için bu kaynakları kaldırmak isteyebilirsiniz. Aşağıdaki kubectl get komutları kullanarak addon-http-application-routing kaynaklarını arayın:

    kubectl get deployments --namespace kube-system
    kubectl get services --namespace kube-system
    kubectl get configmaps --namespace kube-system
    kubectl get secrets --namespace kube-system
    

    Aşağıdaki örnek çıktı, silinmesi gereken yapılandırma haritalarını gösterir:

    NAMESPACE     NAME                                                       DATA   AGE
    kube-system   addon-http-application-routing-nginx-configuration         0      9m7s
    kube-system   addon-http-application-routing-tcp-services                0      9m7s
    kube-system   addon-http-application-routing-udp-services                0      9m7s
    
  3. komutunu kullanarak kubectl delete kalan kaynakları silin. Kaynak türünü, kaynak adını ve ad alanını belirttiğinizden emin olun. Aşağıdaki örnek, önceki yapılandırma haritalarından birini siler:

    kubectl delete configmaps addon-http-application-routing-nginx-configuration --namespace kube-system
    
  4. Kümenizde kalan tüm addon-http-application-routing kaynakları için önceki kubectl delete adımı yineleyin.

Sorun giderme

  1. komutunu kullanarak External-DNS uygulamasının uygulama günlüklerini kubectl logs görüntüleyin.

    kubectl logs -f deploy/addon-http-application-routing-external-dns -n kube-system
    

    Günlükler, aşağıdaki örnek çıktıda gösterildiği gibi bir A ve TXT DNS kaydının başarıyla oluşturulduğunu onaylamalıdır:

    time="2018-04-26T20:36:19Z" level=info msg="Updating A record named 'aks-helloworld' to '52.242.28.189' for Azure DNS zone '471756a6-e744-4aa0-aa01-89c4d162a7a7.canadaeast.aksapp.io'."
    time="2018-04-26T20:36:21Z" level=info msg="Updating TXT record named 'aks-helloworld' to '"heritage=external-dns,external-dns/owner=default"' for Azure DNS zone '471756a6-e744-4aa0-aa01-89c4d162a7a7.canadaeast.aksapp.io'."
    
  2. komutunu kullanarak NGINX giriş denetleyicisi için uygulama günlüklerini kubectl logs görüntüleyin.

    kubectl logs -f deploy/addon-http-application-routing-nginx-ingress-controller -n kube-system
    

    Günlükler, aşağıdaki örnek çıktıda gösterildiği gibi bir giriş kaynağının ve denetleyicinin yeniden yüklenmesini onaylamalıdır CREATE :

    -------------------------------------------------------------------------------
    NGINX Ingress controller
      Release:    0.13.0
      Build:      git-4bc943a
      Repository: https://github.com/kubernetes/ingress-nginx
    -------------------------------------------------------------------------------
    
    I0426 20:30:12.212936       9 flags.go:162] Watching for ingress class: addon-http-application-routing
    W0426 20:30:12.213041       9 flags.go:165] only Ingress with class "addon-http-application-routing" will be processed by this ingress controller
    W0426 20:30:12.213505       9 client_config.go:533] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
    I0426 20:30:12.213752       9 main.go:181] Creating API client for https://10.0.0.1:443
    I0426 20:30:12.287928       9 main.go:225] Running in Kubernetes Cluster version v1.8 (v1.8.11) - git (clean) commit 1df6a8381669a6c753f79cb31ca2e3d57ee7c8a3 - platform linux/amd64
    I0426 20:30:12.290988       9 main.go:84] validated kube-system/addon-http-application-routing-default-http-backend as the default backend
    I0426 20:30:12.294314       9 main.go:105] service kube-system/addon-http-application-routing-nginx-ingress validated as source of Ingress status
    I0426 20:30:12.426443       9 stat_collector.go:77] starting new nginx stats collector for Ingress controller running in namespace  (class addon-http-application-routing)
    I0426 20:30:12.426509       9 stat_collector.go:78] collector extracting information from port 18080
    I0426 20:30:12.448779       9 nginx.go:281] starting Ingress controller
    I0426 20:30:12.463585       9 event.go:218] Event(v1.ObjectReference{Kind:"ConfigMap", Namespace:"kube-system", Name:"addon-http-application-routing-nginx-configuration", UID:"2588536c-4990-11e8-a5e1-0a58ac1f0ef2", APIVersion:"v1", ResourceVersion:"559", FieldPath:""}): type: 'Normal' reason: 'CREATE' ConfigMap kube-system/addon-http-application-routing-nginx-configuration
    I0426 20:30:12.466945       9 event.go:218] Event(v1.ObjectReference{Kind:"ConfigMap", Namespace:"kube-system", Name:"addon-http-application-routing-tcp-services", UID:"258ca065-4990-11e8-a5e1-0a58ac1f0ef2", APIVersion:"v1", ResourceVersion:"561", FieldPath:""}): type: 'Normal' reason: 'CREATE' ConfigMap kube-system/addon-http-application-routing-tcp-services
    I0426 20:30:12.467053       9 event.go:218] Event(v1.ObjectReference{Kind:"ConfigMap", Namespace:"kube-system", Name:"addon-http-application-routing-udp-services", UID:"259023bc-4990-11e8-a5e1-0a58ac1f0ef2", APIVersion:"v1", ResourceVersion:"562", FieldPath:""}): type: 'Normal' reason: 'CREATE' ConfigMap kube-system/addon-http-application-routing-udp-services
    I0426 20:30:13.649195       9 nginx.go:302] starting NGINX process...
    I0426 20:30:13.649347       9 leaderelection.go:175] attempting to acquire leader lease  kube-system/ingress-controller-leader-addon-http-application-routing...
    I0426 20:30:13.649776       9 controller.go:170] backend reload required
    I0426 20:30:13.649800       9 stat_collector.go:34] changing prometheus collector from  to default
    I0426 20:30:13.662191       9 leaderelection.go:184] successfully acquired lease kube-system/ingress-controller-leader-addon-http-application-routing
    I0426 20:30:13.662292       9 status.go:196] new leader elected: addon-http-application-routing-nginx-ingress-controller-5cxntd6
    I0426 20:30:13.763362       9 controller.go:179] ingress backend successfully reloaded...
    I0426 21:51:55.249327       9 event.go:218] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"default", Name:"aks-helloworld", UID:"092c9599-499c-11e8-a5e1-0a58ac1f0ef2", APIVersion:"extensions", ResourceVersion:"7346", FieldPath:""}): type: 'Normal' reason: 'CREATE' Ingress default/aks-helloworld
    W0426 21:51:57.908771       9 controller.go:775] service default/aks-helloworld does not have any active endpoints
    I0426 21:51:57.908951       9 controller.go:170] backend reload required
    I0426 21:51:58.042932       9 controller.go:179] ingress backend successfully reloaded...
    167.220.24.46 - [167.220.24.46] - - [26/Apr/2018:21:53:20 +0000] "GET / HTTP/1.1" 200 234 "" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" 197 0.001 [default-aks-helloworld-80] 10.244.0.13:8080 234 0.004 200
    

Kaynakları temizleme

  • komutunu kullanarak kubectl delete bu makalede oluşturulan ilişkili Kubernetes nesnelerini kaldırın.

    kubectl delete -f samples-http-application-routing.yaml
    

    Aşağıdaki örnek çıktıda Kubernetes nesnelerinin kaldırıldığı gösterilmektedir:

    deployment "aks-helloworld" deleted
    service "aks-helloworld" deleted
    ingress "aks-helloworld" deleted
    

Sonraki adımlar

AKS'de HTTPS güvenliğine sahip giriş denetleyicisi yükleme hakkında bilgi için bkz. Azure Kubernetes Service(AKS) üzerinde HTTPS girişi.