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

Из этой статьи вы узнаете, как перенести кластер Служба Azure Kubernetes (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 -g <ResourceGroupName> -n <ClusterName>
    
  2. Обновите входящий трафик, установив значение ingressClassNamewebapprouting.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:
      - http:
        host: aks-helloworld.<CLUSTER_SPECIFIC_DNS_ZONE> # Replace with your own hostname
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: aks-helloworld
                port:
                  number: 80
    
  3. Обновите IP-адрес контроллера входящего трафика (например, в записях 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 -g <ResourceGroupName> -n <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-маршрутизации , оставшихся в кластере.

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

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