Мы создали кластер kubernetes для клиента около года go с двумя средами; постановка и производство разделены в пространствах имен. В настоящее время мы разрабатываем следующую версию приложения, и нам нужна среда для этой разработки, поэтому мы создали бета-среду в своем собственном пространстве имен.
Это кластер из чистого металла в kubernetes с MetalLB и и nginx -ingress. Входные контроллеры nginx устанавливаются со штурвалом, а входы создаются со следующим манифестом (пространства имен применяются нашим конвейером развертывания и не видны в манифесте):
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
При применении манифеста kubernetes отвечает следующей ошибкой:
Ошибка сервера (InternalError): ошибка при создании «STDIN»: произошла внутренняя ошибка: сбой при вызове webhook «validate. nginx .ingress.kubernetes.io»: Post https://ingress-nginx-controller-admission.ingress-nginx.svc: 443 / extensions / v1beta1 / ingresses? Timeout = 30s : служба "ingress- nginx -controller-admission" не найдена
Я пытался обновить apiVersion входного манифеста до networking.k8s.io/v1beta1
(это apiVersion, с которым новые контроллеры nginx -ingress устанавливаются через helm), но я получаю ту же ошибку.
Мое первоначальное подозрение заключается в том, что это связано с изменением nginx -адреса между текущей установкой и установкой с одного года go, даже если входной контроль llers разделены пространствами имен. Но я не могу найти службы под названием ingress-nginx-controller-admission
ни в одном из своих пространств имен, поэтому я не знаю, как поступить.