如何在Kubernetes中为HTTP和HTTP后端设置入口

时间:2019-07-18 15:40:43

标签: kubernetes-ingress nginx-ingress kubernetes-service

假设我有一个简单的网站,并且想要在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

在这种情况下,入口控制器无法启动,因为它说到配置文件中的重复位置“ /”

有人可以帮我吗?

1 个答案:

答案 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部分来满足您的要求。