web-dev-qa-db-fra.com

Nginx Ingress: service "ingress-nginx-controller-admission" introuvable

Nous avons créé un cluster kubernetes pour un client il y a environ un an avec deux environnements; mise en scène et production séparées dans des espaces de noms. Nous développons actuellement la prochaine version de l'application et avons besoin d'un environnement pour ce travail de développement, nous avons donc créé un environnement bêta dans son propre espace de noms.

Il s'agit d'un cluster kubernetes bare metal avec MetalLB et et nginx-ingress. Les contrôleurs d'entrée nginx sont installés avec helm et les entrées sont créées avec le manifeste suivant (les espaces de noms sont appliqués par notre pipeline de déploiement et ne sont pas visibles dans le manifeste):

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: api-ingress
  annotations:
    #ingress.kubernetes.io/ssl-redirect: "true"
    #kubernetes.io/tls-acme: "true"
    #certmanager.k8s.io/issuer: "letsencrypt-staging"
    #certmanager.k8s.io/acme-challenge-type: http01
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/configuration-snippet: |
      more_set_headers "X-Robots-Tag: noindex, nofollow";
    nginx.ingress.kubernetes.io/enable-cors: "true"
    nginx.ingress.kubernetes.io/cors-allow-methods: "GET, OPTIONS"
    nginx.ingress.kubernetes.io/cors-allow-Origin: "*"
    nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
spec:
  tls:
    - hosts:
        - ${API_DOMAIN}
      secretName: api-cert
  rules:
    - Host: ${API_DOMAIN}
      http:
        paths:
          - backend:
              serviceName: api
              servicePort: 80

Lors de l'application du manifeste, kubernetes répond avec l'erreur suivante:

Erreur du serveur (InternalError): erreur lors de la création de "STDIN": Une erreur interne s'est produite: échec de l'appel du webhook "validate.nginx.ingress.kubernetes.io": Post https: // ingress-nginx-controller-admission. ingress-nginx.svc: 443/extensions/v1beta1/ingresses? timeout = 30s : service "ingress-nginx-controller-admission" introuvable

J'ai tenté de mettre à jour l'apiVersion du manifeste d'entrée vers networking.k8s.io/v1beta1 (c'est l'apiVersion avec laquelle les nouveaux contrôleurs nginx-ingress sont installés via helm), mais j'obtiens la même erreur.

Mon premier soupçon est que cela est lié à un changement dans le nginx-ingress entre l'installation actuelle et l'installation d'il y a un an, même si les contrôleurs d'entrée sont séparés par des espaces de noms. Mais je ne trouve aucun service appelé ingress-nginx-controller-admission dans l'un de mes espaces de noms, je ne sais donc pas comment procéder.

9
Jørgen

Il semble y avoir un problème avec le certificat SSL dans le webhook.

Chaning failurePolicy: Fail to Ignore a fonctionné pour moi dans le

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.32.0/deploy/static/provider/baremetal/deploy.yaml

pour plus d'informations, vérifiez:

https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/

1
Pankaj Gupta