我在LoadBalancer
上k8s
部署了aws
服务(通过kops
制作)。
服务定义如下:
apiVersion: v1
kind: Service
metadata:
name: ui
annotations:
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: <certificate_id>
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443"
spec:
ports:
- name: http
port: 80
targetPort: ui-port
protocol: TCP
- name: https
port: 443
targetPort: ui-port
protocol: TCP
selector:
els-pod: ui
type: LoadBalancer
以下是相应的部署:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ui-deployment
spec:
replicas: 1
template:
metadata:
labels:
els-pod: ui
spec:
containers:
- image: <my_ecr_registry>/<my_image>:latest
name: ui
ports:
- name: ui-port
containerPort: 80
restartPolicy: Always
我知道<my_image>
公开了端口80
。
我已经为部署的ELB
分配了一个别名,比如说。 my-k8s.mydomain.org
ui
窗格包含nginx
图片,该图片位于server
上下文和/
位置块内的 内,具有以下内容指令:
if ($http_x_forwarded_proto != 'https') {
rewrite ^ https://$host$request_uri? permanent;
}
但是,当通过ELB
访问服务(即指定为http
的别名的域名)时,我不会被重定向到https
。
答案 0 :(得分:0)
我遇到了相反的问题,并通过添加nginx.ingress.kubernetes.io/ssl-redirect:“false”解决了该问题。
也许为您提供了如下配置:
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "true"
可以解决您的问题吗?