【发布时间】:2019-07-18 15:40:43
【问题描述】:
假设我有一个简单的网站,我想在 Kubernetes 上运行它。网站应该监听 HTTP 和 HTTPS 协议。
在 Kubernetes 中,我已经为其设置了部署、服务和入口。如果我只尝试端口 80,一切正常,但如果我想用 HTTPS 扩展它,一切都会失败,并且我从入口控制器收到 404 错误。 HTTPS 流量应直接转发到后端。我该怎么做?
我尝试使用 --enable-ssl-passthrough=true 选项(直接在 Daemon Set 配置中)扩展我的入口控制器守护程序集,但随后是入口控制器的 pod没有开始。我在 Internet 上找到了一篇文章,要启用 --enable-ssl-passthrough,应使用该标志安装入口控制器:see this page。顺便说一句,我怎样才能“安装”带有该标志的入口控制器?
我尝试在入口规则中添加 80 和 443 端口,但也没有成功。
Kubernetes:v1.14.3 入口控制器:documentation
请查看我的服务和入口:
apiVersion: v1
kind: Service
metadata:
name: {{ container_service_ingress }}-service
labels:
cms: "{{ cms }}"
namespace: "default"
spec:
selector:
website: "{{ domain }}"
cms: "{{ cms }}"
ports:
- name: http
port: 80
- name: https
port: 443
type: NodePort
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: {{ container_service_ingress }}-ingress
# I tried this annotation, but it didn't help:
annotations:
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
labels:
website: "{{ domain }}"
spec:
rules:
- host: {{ domain }}
http:
paths:
- backend:
serviceName: {{ container_service_ingress }}-service
servicePort: 80
- backend:
serviceName: {{ container_service_ingress }}-service
servicePort: 443
在这种情况下,入口控制器无法启动,因为它说配置文件中的重复位置“/”
有人可以帮我吗?
【问题讨论】:
标签: kubernetes-ingress nginx-ingress kubernetes-service