使用 helm 部署 Ingress Nginx 失败

问题描述 投票:0回答:1

我使用 helm 来部署集群并包含入口图表依赖项。

apiVersion: v2
name: aloco
description: A Helm chart for Kubernetes

type: application

version: 0.1.0

appVersion: "1.16.0"

dependencies:
  - name: ingress-nginx
    version: "4.7.*"
    repository: "https://kubernetes.github.io/ingress-nginx"

Helm 在部署 ingress 时将

aloco
添加到服务名称,而 ingress 则变为
aloco-ingress-nginx-controller-admission
,因为 helm 添加了图表名称。

NAMESPACE     NAME                                       TYPE           CLUSTER-IP       EXTERNAL-IP       PORT(S)                      AGE
default       aloco-ingress-nginx-controller             LoadBalancer   10.245.104.155   159.223.250.102   80:31357/TCP,443:30712/TCP   12m
default       aloco-ingress-nginx-controller-admission   ClusterIP      10.245.42.135    <none>            443/TCP                      12m

因为helm将chart名称添加到了ingress中,所以我得到了一个错误,

ingress-nginx-controller-admission
未找到

Error: UPGRADE FAILED: failed to create resource: Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io": failed to call webhook: Post "https://ingress-nginx-controller-admission.ingress-nginx.svc:443/networking/v1/ingresses?timeout=29s": service "ingress-nginx-controller-admission" not found

他们可以选择删除

aloco
或更改
validate.nginx.ingress.kubernetes.io
吗?

kubernetes kubernetes-helm kubernetes-ingress nginx-ingress
1个回答
0
投票

如果您的集群上安装了另一个 Nginx 入口控制器,并且该图表的准入 Webhook pod 已关闭或出错,则会出现此错误。或者,就像您的情况一样,看起来其他服务没有正确拆除

原因实际上在于你的输出:

failed to call webhook: Post "https://ingress-nginx-controller-admission.ingress-nginx.svc:443/networking/v1/ingresses?timeout=29s": service "ingress-nginx-controller-admission" not found

检查您是否在

ingress-nginx
命名空间中安装了 nginx 图表。

您是否手动删除它而不是通过

helm delete
?您可能会这样做,因为这是保留配置的最常见原因。

要删除阻止安装的 Webhook 配置:

kubectl get validatingwebhookconfigurations

这将列出所有 validatingwebhook 配置。那里应该有一个标记为

ingress-nginx-admission
或类似的。

编辑它或使用

jq
(或使用
-o jsonpath
)确保它指向您已删除的服务(您将在
webhooks[0].clientConfig.service

下看到配置指向的服务)
kubectl edit validatingwebhookconfiguration {name of config}

kubectl get validatingwebhookconfigurations {name of config} -o json | jq .webhooks[0].clientConfig.service

如果是指向已删除的服务,您可以将其删除

kubectl delete validatingwebhookconfiguration -n {namespace} {name of config}
© www.soinside.com 2019 - 2024. All rights reserved.