我已经在GCP / GKE上建立了一个Kubernetes集群,除了一件事之外,它都运行良好。当我访问该服务的外部IP时,将(默认)提供“ Kubernetes入口控制器伪证书”。
我正在尝试使用NGINX Ingress(https://kubernetes.github.io/ingress-nginx/),并遵循了我认为是将TLS秘密与Ingress相关联的正确说明。例如:
https://estl.tech/configuring-https-to-a-web-service-on-google-kubernetes-engine-2d71849520d
我创建了这样一个秘密:
apiVersion: v1
kind: Secret
metadata:
name: example-tls
namespace: default
data:
tls.crt: [removed]
tls.key: [removed]
type: kubernetes.io/tls
并将该秘密(我可以确认的秘密已正确应用,并且可以在集群配置中看到)与Ingress关联,如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: "nginx"
kubernetes.io/ingress.allow-http: "false"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/affinity: "cookie"
spec:
backend:
serviceName: example-service
servicePort: 80
tls:
- secretName: example-tls
从文档中,我认为这应该可行(但是,除非存在错误,否则我显然是错误的!)。
我还看到了一些文档,这些文档要求使用HTTPS的目标代理。也许那就是我应该这样做的方式?
非常感谢您的提前帮助。
干杯本
PS:这是我的负载均衡器配置:
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:
externalTrafficPolicy: Cluster
loadBalancerIP: [removed]
sessionAffinity: ClientIP
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:查看我的Ingress,我可以看到:
➜ gke git:(develop) ✗ kubectl describe ing example-tls-ingress
Name: example-tls-ingress
Namespace: default
Address: [removed]
Default backend: example-webapp-service:80 ([removed])
TLS:
example-tls terminates
Rules:
Host Path Backends
---- ---- --------
* * example-webapp-service:80 ([removed])
因此,看起来好像秘密已被窃取。
这让我认为Ingress终止的TLS和Load Balancer终止的TLS有区别吗?
您可以仅参考此stackoverflow帖子。
您需要安装jetstack cert-Manager,创建clusterissuer / issuer,以及必须通过其传递域名/主机名的证书,然后jetstack会根据您在“证书”中提到的名称自动为您创建密钥。
该秘密必须在入口规则中修补到TLS。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句