Contrôleur d'entrée Citrix ADC

Résolution des problèmes

Le tableau suivant décrit certains des problèmes courants et des solutions de contournement.

Problème Journal Solution
L’instance Citrix ADC n’est pas accessible 2019-01-10 05:05:27,250 - ERROR - [nitrointerface.py:login_logout:94] (MainThread) Exception: HTTPConnectionPool(host=’10.106.76.200’, port=80): Max retries exceeded with url: /nitro/v1/config/login (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x7f4d45bd63d0>: Failed to establish a new connection: [Errno 113] No route to host’,)) Assurez-vous que Citrix ADC est en cours d’exécution et que vous pouvez envoyer un ping à l’adresse NSIP.
Mot de passe d’utilisateur erroné 2019-01-10 05:03:05,958 - ERROR - [nitrointerface.py:login_logout:90] (MainThread) Nitro Exception::login_logout::errorcode=354,message=Invalid username or password  
SNIP n’est pas activé avec l’accès à la gestion 2019-01-10 05:43:03,418 - ERROR - [nitrointerface.py:login_logout:94] (MainThread) Exception: HTTPConnectionPool(host=’10.106.76.242’, port=80): Max retries exceeded with url: /nitro/v1/config/login (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x7f302a8cfad0>: Failed to establish a new connection: [Errno 110] Connection timed out’,)) Assurez-vous que vous avez activé l’accès à la gestion dans Citrix ADC (pour la haute disponibilité Citrix ADC VPX) et définissez l’adresse IP, NSIP, avec l’accès à la gestion activé.
Erreur lors de l’analyse des annotations 2019-01-10 05:16:10,611 - ERROR - [kubernetes.py:set_annotations_to_csapp:1040] (MainThread) set_annotations_to_csapp: Error message=No JSON object could be decodedInvalid Annotation $service_weights please fix and apply ${“frontend”:, “catalog”:95}  
Mauvais port pour l’accès NITRO 2019-01-10 05:18:53,964 - ERROR - [nitrointerface.py:login_logout:94] (MainThread) Exception: HTTPConnectionPool(host=’10.106.76.242’, port=34438): Max retries exceeded with url: /nitro/v1/config/login (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x7fc592cb8b10>: Failed to establish a new connection: [Errno 111] Connection refused’,)) Vérifiez si le port approprié est spécifié pour l’accès NITRO. Par défaut, le Citrix ingress controller utilise le port 80 pour la communication.
La classe d’entrée est incorrecte 2019-01-10 05:27:27,149 - INFO - [kubernetes.py:get_all_ingresses:1329] (MainThread) Unsupported Ingress class for ingress object web-ingress.default Vérifiez que le fichier d’entrée appartient à la classe d’entrée surveillée par le Citrix ingress controller. Consultez le journal suivant pour obtenir des informations sur les classes d’entrée écoutées par le Citrix ingress controller :
    Log: 2019-01-10 05:27:27,120 - DEBUG - [kubernetes.py:__init__:63] (MainThread) Ingress classes allowed:
    2019-01-10 05:27:27,120 - DEBUG - [kubernetes.py:__init__:64] (MainThread) [‘vpxclass’]
L’API Kubernetes n’est pas accessible 2019-01-10 05:32:09,729 - ERROR - [kubernetes.py:_get:222] (Thread-1) Error while calling /services:HTTPSConnectionPool(host=’10.106.76.237’, port=6443): Max retries exceeded with url: /api/v1/services (Caused by NewConnectionError(‘<urllib3.connection.VerifiedHTTPSConnection object at 0x7fb3013e7dd0>: Failed to establish a new connection: [Errno 111] Connection refused’,)) Vérifiez si le kubernetes_url est correct. Utilisez la commande kubectl cluster-info pour obtenir les informations relatives à l’URL. Assurez-vous que le nœud principal Kubernetes est en cours d’exécution sur https://kubernetes_master_address:6443 et que l’espace du serveur d’API Kubernetes est opérationnel.
Port de service spécifié dans le fichier YAML incorrect   Fournissez les informations de port correctes dans le fichier YAML d’entrée et appliquez à nouveau pour résoudre le problème.
Le serveur virtuel d’équilibrage de charge et le groupe de services sont créés, mais ils sont hors service   Vérifiez le nom du service et le port utilisés dans le fichier YAML. Pour Citrix ADC VPX, assurez-vous que --feature-node-watch est défini sur true, lors de l’activation du Citrix ingress controller.
Le serveur virtuel CS n’est pas créé pour Citrix ADC VPX.   Utilisez l’annotation ingress.citrix.com/frontend-ip, dans le fichier YAML d’entrée pour Citrix ADC VPX.
Secret incorrect fourni dans la section TLS du fichier YAML d’entrée 2019-01-10 09:30:50,673 - INFO - [kubernetes.py:_get:231] (MainThread) Resource not found: /secrets/default-secret12345 namespace default Corrigez les valeurs du fichier YAML et appliquez-les à nouveau pour résoudre le problème.
  2019-01-10 09:30:50,673 - INFO - [kubernetes.py:get_secret:1712] (MainThread) Failed to get secret for the app default-secret12345.default  
L’argument feature-node-watch est spécifié, mais les routes statiques ne sont pas ajoutées dans Citrix ADC VPX ERROR - [nitrointerface.py:add_ns_route:4495] (MainThread) Nitro Exception::add_ns_route::errorcode=604,message=The gateway is not directly reachable Cette erreur se produit lorsque feature-node-watch est activé et que le cluster Citrix ADC VPX et Kubernetes ne se trouvent pas sur le même réseau. Vous devez supprimer l’argument - --feature-node-watch du fichier YAML du Citrix ingress controller. Les itinéraires statiques ne fonctionnent pas lorsque le cluster Citrix ADC VPX et Kubernetes se trouvent sur un réseau différent. Utilisez Citrix Node Controller pour créer des tunnels entre Citrix ADC VPX et les nœuds de cluster.
État du CRD non mis à jour ERROR - [crdinfrautils.py:update_crd_status:42] (MainThread) Exception during CRD status update for negrwaddmuloccmod: 403 Client Error: Forbidden for url: https://10.96.0.1:443/apis/citrix.com/v1/namespaces/default/rewritepolicies/negrwaddmuloccmod/status Vérifiez que l’autorisation de pousser l’état CRD est fournie dans le RBAC. L’autorisation doit être similaire à la suivante :
    - apiGroups: [“citrix.com”] resources: [“rewritepolicies/status”, “canarycrds/status”, “authpolicies/status”, “ratelimits/status”, “listeners/status”, “httproutes/status”, “wafs/status”]
Événement du Citrix ingress controller non mis à jour ERROR - [clienthelper.py:post:94] (MainThread) Reuqest /events to api server is forbidden Vérifiez que l’autorisation de mettre à jour les événements de l’espace du Citrix ingress controller est fournie dans le RBAC.
    - apiGroups: [””] resources: [“events”] verbs: [“create”]
Stratégie de répondeur de réécriture non ajoutée ERROR - [config_dispatcher.py:__dispatch_config_pack:324] (Dispatcher) Status: 104, ErrorCode: 3081, Reason: Nitro Exception: Expression syntax error [D(10, 20).^RE_SELECT(, Offset 15] < Ces erreurs sont dues à des expressions incorrectes dans les CRD du répondeur de réécriture. Corrigez l’expression et réappliquez le CRD.
  ERROR - [config_dispatcher.py:__dispatch_config_pack:324] (Dispatcher) Status: 104, ErrorCode: 3098, Reason: Nitro Exception: Invalid expression data type [ent.ip.src^, Offset 13]  
L’application d’un CRD a échoué. Le Citrix ingress controller convertit un CRD en un ensemble de configurations pour configurer Citrix ADC à l’état souhaité conformément au CRD spécifié. Si la configuration échoue, l’instance CRD risque de ne pas être appliquée sur Citrix ADC. 2020-07-13 08:49:07,620 - ERROR - [config_dispatcher.py:__dispatch_config_pack:256] (Dispatcher) Failed to execute config ADD_sslprofile_k8s_crd_k8service_kuard-service_default_80tcp_backend{name:k8s_crd_k8service_kuard-service_default_80_tcp_backend sslprofiletype:BackEnd tls12:enabled } from ConfigPack ‘default.k8service.kuard-service.add_spec’ Le journal indique que la commande NITRO a échoué. Le même journal apparaît également dans Citrix ADC. Vérifiez Citrix ADC ns.log et recherchez la chaîne d’erreur à l’aide de la commande grep pour déterminer la commande Citrix ADC qui a échoué lors de l’application de CRD. Essayez de supprimer le CRD et de l’ajouter à nouveau. Si vous rencontrez à nouveau le problème, signalez-le sur le canal Slack natif du cloud.
  2020-07-13 08:49:07,620 - ERROR - [config_dispatcher.py:__dispatch_config_pack:257] (Dispatcher) Status: 104, ErrorCode: 1074, Reason: Nitro Exception: Invalid value [sslProfileType, value differs from existing entity and it cant be updated.]  
  2020-07-13 08:49:07,620 - INFO - [config_dispatcher.py:__dispatch_config_pack:263] (Dispatcher) Processing of ConfigPack ‘default.k8service.kuard-service.add_spec’ failed  

Dépannage - Intégration Prometheus et Grafana

Problème Description Solution
Le tableau de bord Grafana n’a pas Si aucune valeur n’est tracée dans les graphiques des tableaux de bord Grafana, Grafana ne peut pas obtenir de statistiques à partir de sa source de données. Vérifiez si la source de données Prometheus est enregistrée et fonctionne correctement. Lors de l’enregistrement de la source de données après avoir fourni le nom et l’adresse IP, un message Data source is working s’affiche en vert indiquant que la source de données est accessible et détectée.
    Si le tableau de bord est créé à l’aide de sample_grafana_dashboard.json, assurez-vous que le nom donné à la source de données Prometheus commence par le mot prometheus en minuscules.
    Consultez la page Targets de Prometheus pour voir si l’exportateur cible requis est dans l’état DOWN.
DOWN : délai lié au contexte dépassé Si le message apparaît sur l’une des cibles d’exportation de Prometheus, Prometheus est soit incapable de se connecter à l’exportateur, soit incapable de récupérer toutes les mesures dans le cadre donné scrape_timeout. Si vous utilisez l’opérateur Prometheus, scrape_timeout est ajusté automatiquement et l’erreur signifie que l’exportateur lui-même n’est pas joignable.
    Si un conteneur ou un pod Prometheus autonome est utilisé, essayez d’augmenter les valeurs scrape_interval et scrape_timeout du fichier /etc/prometheus/prometheus.cfg pour augmenter l’intervalle de temps de collecte des mesures.

Dépannage - Surveillance des nœuds de fonctionnalités OpenShift

Problème : Lors de l’utilisation d’OpenShift-OVN, CNI feature-node-watch n’ajoute pas de routes correctes.

Description : le Citrix ingress controller recherche les annotations Node pour récupérer les détails nécessaires à l’ajout des itinéraires statiques.

Solution : procédez comme suit pour contourner le problème.

  1. Assurez-vous que l’autorisation RBAC suivante est fournie au Citrix ingress controller ainsi que route.openshift.io pour l’exécuter dans l’environnement OpenShift avec OVN CNI.

    - apiGroups: ["config.openshift.io"]
      resources: ["networks"]
      verbs: ["get", "list"]
    
  2. Le Citrix ingress controller recherche les deux annotations suivantes ajoutées par OVN, assurez-vous qu’elles existent sur les nœuds du cluster.

    "k8s.ovn.org/node-subnets": {\"default\":\"10.128.0.0/23\"}",
    "k8s.ovn.org/node-primary-ifaddr": "{\"ipv4\":\"x.x.x.x/24\"}"
    
  3. Si l’annotation n’existe pas, feature-node-watch risque de ne pas fonctionner pour le CNI OVN. Dans ce cas, vous devez configurer manuellement les routes statiques sur Citrix ADC VPX.

Problème : Lors de l’utilisation du CNI OpenShift-SDN, la surveillance des nœuds de fonctionnalité n’ajoute pas les routes correctes.

Description : le Citrix ingress controller recherche le CRD du sous-réseau hôte pour récupérer les détails nécessaires pour ajouter les itinéraires statiques.

Solution : procédez comme suit pour contourner le problème.

  1. Assurez-vous que l’autorisation RBAC suivante est fournie au Citrix ingress controller ainsi qu’ route.openshift.io à l’exécution dans l’environnement OpenShift avec CNI SDN.

    - apiGroups: ["network.openshift.io"]
      resources: ["hostsubnets"]
      verbs: ["get", "list", "watch"]
    - apiGroups: ["config.openshift.io"]
      resources: ["networks"]
      verbs: ["get", "list"]
    
  2. Le Citrix ingress controller recherche le CRD et la spécification suivants.

        oc get hostsubnets.network.openshift.io <cluster node-name> -ojson
    
        { "apiVersion": "network.openshift.io/v1",
            "host": <cluster node-name, 
            "hostIP": "x.x.x.x",
            "kind": "HostSubnet",
            "metadata": {
        "annotations": {
                        ...
        },
            "subnet": "10.129.0.0/23"
        }
    
  3. Si le CRD n’existe pas avec la spécification attendue, feature-node-watch peut ne pas fonctionner pour OpenSHFit-SDN CNI. Dans ce cas, vous devez configurer manuellement les routes statiques sur Citrix ADC VPX.

Résolution des problèmes