Jør*_*gen 46 kubernetes nginx-ingress
大约一年前,我们为一个客户创建了一个 kubernetes 集群,有两个环境;暂存和生产在命名空间中分开。我们目前正在开发应用程序的下一个版本,需要一个环境来进行这项开发工作,因此我们在自己的命名空间中创建了一个 beta 环境。
这是一个带有 MetalLB 和 nginx-ingress 的裸机 Kubernetes 集群。nginx 入口控制器与 helm 一起安装,入口是使用以下清单创建的(命名空间由我们的部署管道强制执行,在清单中不可见):
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
Run Code Online (Sandbox Code Playgroud)
应用清单时 kubernetes 响应以下错误:
来自服务器的错误 (InternalError):创建“STDIN”时出错:发生内部错误:调用 webhook“validate.nginx.ingress.kubernetes.io”失败:发布https://ingress-nginx-controller-admission.ingress-nginx。 svc:443/extensions/v1beta1/ingresses?timeout=30s:找不到服务“ingress-nginx-controller-admission”
我试图将入口清单的 apiVersion 更新为networking.k8s.io/v1beta1
(这是通过 helm 安装新 nginx-ingress 控制器的 apiVersion),但我遇到了同样的错误。
我最初怀疑这与当前安装和一年前安装之间 nginx-ingress 的更改有关,即使入口控制器由命名空间分隔。但是我找不到ingress-nginx-controller-admission
在我的任何命名空间中调用的任何服务,所以我不知道如何继续。
Pat*_*lla 136
我遇到了同样的问题,并从另一个SO 线程中找到了解决方案。
我以前使用清单安装了 nginx-ingress。我删除了它创建的命名空间,以及文档中所述的clusterrole 和 clusterrolebinding,但这不会删除ValidatingWebhookConfiguration
清单中安装的 ,但在默认情况下使用 helm 时不会删除。正如Arghya上面提到的,它可以使用 helm 参数启用。
一旦我删除了ValidatingWebhookConfiguration
,我的掌舵安装就完美无缺了。
kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission
Run Code Online (Sandbox Code Playgroud)
Arg*_*dhu 18
您可以检查是否有验证 webhook和服务。如果它们不存在,请仔细检查部署并添加这些。
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
Run Code Online (Sandbox Code Playgroud)
这里的部署 yaml有 webhook 和服务。
由于您已使用 helm 安装它,因此您可以通过此处定义的 helm 参数启用/禁用 webhook
小智 5
Webhook 中的 SSL 证书似乎存在一些问题。
改变失败策略:忽略失败对我有用
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.32.0/deploy/static/provider/baremetal/deploy.yaml
欲了解更多信息,请检查:
https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/
归档时间: |
|
查看次数: |
35613 次 |
最近记录: |