Поделиться через


Миграция из маршрутизации приложений HTTP в надстройку маршрутизации приложений

Из этой статьи вы узнаете, как перенести кластер Azure Kubernetes Service (AKS) с этой функции маршрутизации приложений HTTP на надстройку маршрутизации приложений. Дополнение для маршрутизации HTTP-приложений было снято и не работает ни в одной из поддерживаемых версий кластера Kubernetes. Мы рекомендуем как можно скорее перейти на поддерживаемую конфигурацию.

Предварительные условия

  • Azure CLI версии 2.54.0 или более поздней версии, установленной и настроенной. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
  • aks-preview Расширение Azure CLI версии 0.5.171 и выше

Примечание.

Эти шаги описывают процесс миграции из неподдерживаемой конфигурации. Таким образом, AKS не может предложить поддержку проблем, возникающих во время процесса миграции.

Обновление надстроек кластера, входящего трафика и использования IP-адресов

  1. Включите надстройку маршрутизации приложений.

    az aks approuting enable --resource-group <ResourceGroupName> --name <ClusterName>
    
  2. Обновите входы, настроив ingressClassName на webapprouting.kubernetes.azure.com. Удалите аннотацию kubernetes.io/ingress.class . Кроме того, необходимо обновить узел до того, который вы владеете, так как надстройка маршрутизации приложений не имеет зоны DNS управляемого кластера. Если у вас нет зоны DNS, следуйте инструкциям по созданию и настройке.

    Изначально конфигурация входа будет выглядеть примерно так:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: aks-helloworld
      annotations:
        kubernetes.io/ingress.class: addon-http-application-routing  # Remove the ingress class annotation
    spec:
      rules:
      - host: aks-helloworld.<CLUSTER_SPECIFIC_DNS_ZONE>
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: aks-helloworld
                port:
                  number: 80
    

    После правильного обновления такая же конфигурация выглядит следующим образом:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: aks-helloworld
    spec:
      ingressClassName: webapprouting.kubernetes.azure.com # Set the ingress class property to refer to the application routing add-on ingress class
      rules:
      - host: aks-helloworld.<CLUSTER_SPECIFIC_DNS_ZONE> # Replace with your own hostname
        http: 
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: aks-helloworld
                port:
                  number: 80
    
  3. Обновите IP-адрес контроллера Ingress (например, в записях DNS) новым IP-адресом. Новый IP-адрес можно найти с помощью kubectl get. Например:

    kubectl get svc nginx --namespace app-routing-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
    
  4. Отключите надстройку маршрутизации приложений HTTP.

    az aks disable-addons --resource-group <ResourceGroupName> --name <ClusterName> --addons http_application_routing
    

Удалите все ресурсы маршрутизации HTTP-приложений

  1. После отключения надстройки маршрутизации http-приложений некоторые связанные ресурсы Kubernetes могут оставаться в кластере. К этим ресурсам относятся конфигурации и секреты, созданные в пространстве имен kube-system. Чтобы сохранить чистый кластер, можно удалить эти ресурсы. Найдите ресурсы addon-http-application-routing с помощью следующих kubectl get команд:

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

    В следующем примере выходных данных показаны карты конфигурации, которые должны быть удалены :

    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
    
  2. Удалите оставшиеся ресурсы с помощью kubectl delete команды. Обязательно укажите тип ресурса, имя ресурса и пространство имен. В следующем примере удаляется один из предыдущих объектов configmap.

    kubectl delete configmaps addon-http-application-routing-nginx-configuration --namespace kube-system
    
  3. Повторите предыдущий kubectl delete шаг для всех оставшихся в вашем кластере ресурсов addon-http-application-routing.

Следующие шаги

После миграции в надстройку маршрутизации приложений узнайте, как отслеживать метрики контроллера входящего трафика с помощью Prometheus и Grafana.