我设置了一个Kubernetes集群,该集群目前有两个节点,metallb作为负载均衡器。
目前,我想使用Ingress并通过ssl对其进行保护。为此,我决定将nginx ingress与cert-manager一起使用,并将其放在教程后的网站上。
但是现在我收到错误消息“等待http-01挑战传播:无法执行自检GET请求'http://example.....zone/.well-known/acme-challenge/A5lFUj69fDccpXlvlyVw9-ekATEjt_-DKiJUzJSafxs':获取“ http://example.....zone/.well-known/acme-challenge/A5lFUj69fDccpXlvlyVw9-ekATEjt_-DKiJUzJSafxs”:拨打tcp 94.130.150.125:80:连接:连接超时 “
我当前的ClusterIssuer如下所示:
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
namespace: cert-manager
spec:
acme:
# The ACME server URL
server: https://acme-v02.api.letsencrypt.org/directory
# Email address used for ACME registration
email: letsencrypt@mymail.de
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: letsencrypt-prod
# Enable the HTTP-01 challenge provider
solvers:
- http01:
ingress:
class: nginx
我正在尝试自动提供证书给
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: web-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
cert-manager.io/acme-challenge-type: http01
spec:
tls:
- hosts:
- example.....zone
secretName: example-...-zone-tls
rules:
- host: example.....zone
http:
paths:
- path: /
backend:
serviceName: nginx-service
servicePort: 80
手动,我可以完美地到达任何地址。
答案 0 :(得分:1)
这个对我有用。
更改LoadBalancer
服务中的ingress-nginx
。
添加/更改externalTrafficPolicy: Cluster
。
原因是,证书颁发者的吊舱与负载均衡器缠绕在不同的节点上,因此它无法通过入口自言自语。
kind: Service
apiVersion: v1
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
#CHANGE/ADD THIS
externalTrafficPolicy: Cluster
type: LoadBalancer
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
ports:
- name: http
port: 80
targetPort: http
- name: https
port: 443
targetPort: https
---
答案 1 :(得分:0)
您收到的错误消息可能意味着各种各样的问题。但是,您可以检查一些事情以对其进行修复:
删除入口,证书和证书管理器。之后,将它们全部重新添加以确保安装干净。有时,陈旧的证书或错误的/多个Ingress路径可能是问题所在。
确保您的流量允许HTTP或具有受信任证书的HTTPS。
检查负载均衡器的发夹模式是否正确,并确保其正常工作。
添加:nginx.ingress.kubernetes.io/ssl-redirect: "false"
注释到Ingress规则。请稍等一下,看看是否会创建有效的证书。
仅限GKE:添加以下Ingress注释:certmanager.k8s.io/acme-http01-edit-in-place: "true"
。
请告诉我是否有帮助。