在为我的argo cd安装创建入口规则时,我得到以下错误
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=10s": EOF
字符串
我的入口规则:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: argocd-server-http-ingress
namespace: argocd
annotations:
cert-manager.io/cluster-issuer: letsencrypt-issuer
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: 'true'
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
rules:
- host: argocd.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: argocd-server
port:
name: http
tls:
- hosts:
- argocd.example.com
secretName: argocd-secret
型
我确认我的nginx资源正在运行。我有nginx设置在我的vnet中使用私有IP(Azure中的私有链接服务)。
~ kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.0.74.44 172.19.0.8 80:31645/TCP,443:32194/TCP 4d8h
ingress-nginx-controller-admission ClusterIP 10.0.54.183 <none> 443/TCP 4d8h
型
我不明白的部分是,我最初重新创建了集群,它很好。然后我更改了我的ingress规则的host
部分,这就是它崩溃的原因。例如,将argocd-prod.example.com
更改为示例ingress规则中显示的内容,argocd.example.com
.我还在学习kubernetes,所以我不完全理解我所做的事情的含义,但似乎在某个地方可能有某种缓存数据?因为我在nginx pod日志中看到了这个错误
local SSL certificate argocd/argocd-secret was not found
型
1条答案
按热度按时间chy5wohz1#
当在Kubernetes中遇到Ingress规则的问题时,特别是遇到像
failed calling webhook "validate.nginx.ingress.kubernetes.io"
这样的webhook故障时,您可以采取几个步骤来诊断和解决问题:验证
ingress-nginx-controller-admission
服务是否可操作。使用kubectl get svc
和
kubectl get endpoints
.确认
argocd
命名空间kubectl get secret argocd-secret -n argocd
中argocd-secret
TLS secret的存在性和正确性。的
字符串
的
型
对于未使用负载均衡服务的场景,您可以建立类似于以下示例的Ingress规则。包含
ssl-passthrough
注解至关重要,因为Argo CD在单个端口(特别是端口443)上同时使用各种协议,包括gRPC和HTTPS。此注解可确保正确处理这些混合协议。型
确保Ingress规则中的annotations配置正确。如果使用SSL passthrough(
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
),nginx ingress控制器需要--enable-ssl-passthrough
标志。argocd-prod.example.com
更改为argocd.example.com
),请确保DNS正确更新为指向您的入口控制器的外部IP。最后,如果所有这些都没有帮助,您可以尝试重新启动nginx入口控制器kubectl rollout restart deployment <deployment-name> -n ingress-nginx
。参考文件:ArgoCDGitHub ArgoCDOfficial ArgoCD doc for configuring ingress