在我的 Kubernetes 集群中配置 SSL 终止时遇到问题。试图找出发生这种情况的最佳地点。
我已经能够按照此处列出的说明使其工作,然后使用 service.beta.kubernetes.io/aws-load-balancer-ssl-cert 注释更新入口控制器服务以包含 SSL 证书详细信息:
kind: Service
apiVersion: v1
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app: ingress-nginx
annotations:
service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: '*'
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:...
spec:
type: LoadBalancer
selector:
app: ingress-nginx
ports:
- name: https
port: 443
targetPort: 80
然后,我有类似于以下内容的入口规则和服务设置:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: app1
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: app1.foo.bar
http:
paths:
- backend:
serviceName: app1
servicePort: 80
---
apiVersion: v1
kind: Service
metadata:
name: app1
spec:
type: LoadBalancer
ports:
- name: http
port: 80
targetPort: 80
selector:
app: app1
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: app1
spec:
template:
metadata:
labels:
app: app1
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 80
去app1.foo.bar
时,我可以看到:
- HTTP 请求被重定向到 HTTPS
- SSL 证书已正确应用
最初,我尝试将证书应用于我的个人应用服务。我可以看到证书正在应用于 AWS 中的 ELB,但未通过。所以我的问题是:
这是正确的配置还是有更好的解决方案?
谢谢:)
我建议终止使用 ELB 公开的 Nginx 入口控制器上的 SSL,并使用 kube-lego 进行自动 SSL 证书管理。
https://github.com/kubernetes/ingress-nginx &https://github.com/jetstack/kube-lego