假设我有一个简单的网站,并且想要在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
在这种情况下,入口控制器无法启动,因为它说到配置文件中的重复位置“ /”
有人可以帮我吗?
答案 0 :(得分:0)
apiVersion:networking.k8s.io/v1beta1 种类:入口 元数据: 名称:tls-ingress 规格: tls: -主机: -ssl.example.com secretName:test-tls 规则: -主机:ssl.example.com http: 路径: -路径:/ 后端: serviceName:service1 servicePort:80
您需要使用tls部分来满足您的要求。