Ssl 带有gke tcp负载平衡器和TLS证书的nginx入口
我使用nginx入口控制器在GKE上运行集群,而不是使用默认的gce入口控制器 我正在使用证书管理器生成证书。如果我使用默认的gce控制器,这可以正常工作 我已使用以下配置部署了nginx入口控制器:Ssl 带有gke tcp负载平衡器和TLS证书的nginx入口,ssl,nginx,kubernetes,Ssl,Nginx,Kubernetes,我使用nginx入口控制器在GKE上运行集群,而不是使用默认的gce入口控制器 我正在使用证书管理器生成证书。如果我使用默认的gce控制器,这可以正常工作 我已使用以下配置部署了nginx入口控制器: containers: - args: - /nginx-ingress-controller - --default-backend-service=kube-system/nginx-ingress-default-backend - --publish-servi
containers:
- args:
- /nginx-ingress-controller
- --default-backend-service=kube-system/nginx-ingress-default-backend
- --publish-service=kube-system/nginx-ingress-controller
- --election-id=ingress-controller-leader
- --ingress-class=nginx
- --configmap=kube-system/nginx-ingress-controller
- --sort-backends=true
此服务使用默认服务type=LoadBalancer
,我可以在Google云控制台中看到,我已经配置了TCP第4层负载均衡器
我的前端服务和入口具有以下注释:
annotations:
ingress.kubernetes.io/allow-http: "true"
kubernetes.io/ingress.class: nginx
ingress.kubernetes.io/ssl-redirect: "true"
kubernetes.io/tls-acme: "true"
HTTP可以正常工作,但当我尝试使用HTTPS时,会出现SSL协议错误:
* Rebuilt URL to: https://hostname/
* Trying xx.xxx.xx.xxx...
* TCP_NODELAY set
* Connected to guestbook.lbrlabs.com (xx.xxx.xx.xxx) port 443 (#0)
* Unknown SSL protocol error in connection to hostname:-9847
* Closing connection 0
curl: (35) Unknown SSL protocol error in connection to hostname:-9847
我可以看到日志中的二进制数据:
10.36.0.1 - [10.36.0.1] - - [04/Aug/2018:23:37:23 +0000] "\x16\x03\x01\x00\xC8\x01\x00\x00\xC4\x03\x03[f8\xB4J\xFD\xB6\x1C9\x93\xA9\xF6$\x82\x1B~h" 400 174 "-" "-" 0 0.051 [] - - - -
我在这里缺少什么配置选项?我尝试使用代理协议,但没有成功(正如我所预料的那样)。我正在使用nginx ingress controller的
0.14.0
。如果您将整个ingress yaml放到post中,这将非常有用,但是从第一个角度看,如果您通过ingress创建TLS证书,那么我认为您在注释中遗漏了颁发者,因为证书管理器会检查此注释以颁发证书。检查以下内容:
kind: Ingress
metadata:
annotations:
certmanager.k8s.io/issuer: letsencrypt-prod
...
spec:
rules:
- host: example.com
http:
paths:
- backend:
serviceName: backend-service
servicePort: http
path: /
tls:
- hosts:
- example.com
secretName: example-com-tls
您也可以描述您的入口以查看事件:
kubectl describe ingress <ingress-name>
您还可以检查cert manager控制器的日志,了解证书是如何颁发的
kubectl logs cert-manager-pod-name-21322 -n cert-manager
希望有帮助
kubectl logs cert-manager-pod-name-21322 -n cert-manager