Nginx Вход: служба "вход- nginx -контроллер-вход" не найдена - PullRequest
2 голосов
/ 22 апреля 2020

Мы создали кластер 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 ни в одном из своих пространств имен, поэтому я не знаю, как поступить.

1 Ответ

0 голосов
/ 22 апреля 2020

Вы можете проверить, есть ли проверочный веб-крючок и служба. Если они не существуют, дважды проверьте развертывание и добавьте их.

kubectl get -A ValidatingWebhookConfiguration
NAME                      CREATED AT
ingress-nginx-admission   2020-04-22T15:01:33Z

kubectl get svc -n ingress-nginx
NAME                                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             NodePort    10.96.212.217   <none>        80:32268/TCP,443:32683/TCP   2m34s
ingress-nginx-controller-admission   ClusterIP   10.96.151.42    <none>        443/TCP                      2m34s

Ямлы развертывания здесь имеют webhook и службу.

Поскольку вы использовали helm для установить его вы можете включить / отключить webhook через параметр helm, как определено здесь

...