我使用nginx入口控制器在GKE上设置了一个新的kubernetes集群。TLS不起作用,它在使用假证书。
有很多配置细节,所以我做了一个回购https://github.com/jobevers/test_ssl_ingress
简而言之,步骤是
nginx-ingress配置来自https://zihao.me/post/cheap-out-google-container-engine-load-balancer/(看起来与ingres-nginx repo中的许多示例非常相似)。
我的入口。yaml与示例几乎相同
当我跑步时,我会
$ curl -kv https://35.196.134.52
[...]
* common name: Kubernetes Ingress Controller Fake Certificate (does not match '35.196.134.52')
[...]
* issuer: O=Acme Co,CN=Kubernetes Ingress Controller Fake Certificate
[...]
这表明我仍在使用默认证书。
我该怎么用我的?
入口定义
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ssl-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- secretName: tls-secret
rules:
- http:
paths:
- path: /
backend:
serviceName: demo-echo-service
servicePort: 80
创建秘密:
kubectl create secret tls tls-secret --key tls/privkey.pem --cert tls/fullchain.pem
进一步调试后,将在服务器上找到并存在证书:
$ kubectl -n kube-system exec -it $(kubectl -n kube-system get pods | grep ingress | head -1 | cut -f 1 -d " ") -- ls -1 /ingress-controller/ssl/
default-fake-certificate-full-chain.pem
default-fake-certificate.pem
default-tls-secret-full-chain.pem
default-tls-secret.pem
从日志上我看到
kubectl -n kube-system log -f $(kubectl -n kube-system get pods | grep ingress | head -1 | cut -f 1 -d " ")
[...]
I1013 17:21:45.423998 6 queue.go:111] syncing default/test-ssl-ingress
I1013 17:21:45.424009 6 backend_ssl.go:40] starting syncing of secret default/tls-secret
I1013 17:21:45.424135 6 ssl.go:60] Creating temp file /ingress-controller/ssl/default-tls-secret.pem236555242 for Keypair: default-tls-secret.pem
I1013 17:21:45.424946 6 ssl.go:118] parsing ssl certificate extensions
I1013 17:21:45.743635 6 backend_ssl.go:102] found 'tls.crt' and 'tls.key', configuring default/tls-secret as a TLS Secret (CN: [...])
[...]
但是,看看nginx。conf,它仍在使用假证书:
$ kubectl -n kube-system exec -it $(kubectl -n kube-system get pods | grep ingress | head -1 | cut -f 1 -d " ") -- cat /etc/nginx/nginx.conf | grep ssl_cert
ssl_certificate /ingress-controller/ssl/default-fake-certificate.pem;
ssl_certificate_key /ingress-controller/ssl/default-fake-certificate.pem;
您需要在chrome、firefox、服务器的证书池等位置将根CA证书添加到权限部分。
您的计算机现在将自动识别您使用此证书生成的其他证书。
刚刚在v0.30.0
中也遇到了这个问题,事实证明,拥有这样一个没有显式主机名的入口配置是可以的:
spec:
tls:
- secretName: ssl-certificate
在我这边的问题是,我有一个注解的入口与int64
值,没有正确解析,下面是定义kubernetes.io/ingress.class
所以基本上nginx没有找到入口控制器,这是在日志中正确陈述:
ignoring add for ingress <ingressname> based on annotation kubernetes.io/ingress.class with value
因此,在注释中使用字符串解决了这个问题。
结果表明,入口定义需要如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ssl-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- hosts:
- app.example.com
secretName: tls-secret
rules:
- host: app.example.com
http:
paths:
- path: /
backend:
serviceName: demo-echo-service
servicePort: 80
规则下的主机条目需要与tls下的主机条目之一匹配。
我正在使用k3s的默认安装(版本v1.17.0 k3s.1)并验证它在我的Raspberry Pi集群上正常工作。 在使用推荐的说明(https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/)安装kubernetes-dashboard之后,我使用基于k3s traefik的负载均衡器将其暴露在集群之
名为“selfsign”的群集颁发者 由秘密“测试”支持的有效自签名证书 正常运行的nginx入口部署 一个健康运行的负载平衡器型入口服务
我已经安装并配置了AWS ALB入口控制器(https://github.com/kubernetes-sigs/aws-alb-ingress-controller),它可以通过HTTP正常工作。但是,它不能通过HTTPS解析。 入口资源如下: 我还按照此处的说明添加了自签名SSL证书: https://kubernetes.github.io/ingress-nginx/user-guide/
我正在设置我的入口控制器、入口类和入口,以在集群外部公开服务。这是全新的集群设置。 我已经使用 nginx 入口控制器设置了 nginx-ingress 控制器 <code>kubectl应用-fhttps://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.41.0/deploy/static/provider/b
我正试图在GKE集群上添加一个NGINX入口控制器,使用现有的HAProxy入口控制器(它在重写规则方面有一些问题) 首先,我尝试将控制器的服务公开给LoadBalancer类型。流量可以到达入口和后端,但它不适用于托管证书。 因此,我尝试使用L7负载平衡器(URL映射)将流量转发到GKE群集IP,并为入口控制器本身创建入口对象。 问题是,这个入口对象似乎不绑定到外部IP。路由到域会产生“默认后端
我需要关于如何使用TLS在eks kubernetes上配置nginx入口控制器和keydepage的建议。 我的第一次尝试是在没有TLS的情况下让Keyclope工作。这很好用。但是,当我将TLS添加到入口定义中时,keyClope给出了一个无效参数:redirect\u uri error。 这是工作示例: 当我添加tls部分时,我得到了上述错误。请参阅下面的yaml文件。 有什么建议可以解决