假设我有一个简单的网站,我想在 Kubernetes 上运行它。网站应该监听HTTP和HTTPS协议。
在 Kubernetes 中,我已经为它设置了部署、服务和入口。如果我只尝试端口 80,一切正常,但如果我想使用 HTTPS 扩展它,一切都失败了,我从入口控制器收到 404 错误。HTTPS 流量应直接转发到后端。我该怎么做?
我尝试使用 --enable-ssl-passthrough=true选项(直接在守护程序集配置中)扩展我的入口控制器守护程序集,但随后入口控制器的 pod 没有启动。我在互联网上找到文章,要启用--enable-ssl-passthrough,入口控制器应该安装该标志:请参阅此页面。顺便问一下,如何使用该标志"安装"入口控制器?
我尝试在入口规则中添加 80 和 443 端口,但没有成功。
Kubernetes: v1.14.3 入口控制器:文档
请查看我的服务和入口:
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
在这种情况下,入口控制器无法启动,因为它说配置文件中的重复位置"/">
有人可以帮我吗?
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: tls-ingress
spec:
tls:
- hosts:
- ssl.example.com
secretName: test-tls
rules:
- host: ssl.example.com
http:
paths:
- path: /
backend:
serviceName: service1
servicePort: 80
您需要使用 tls 部分来实现您的要求。