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.
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/