Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes-入口TCP服务SSL终止_Kubernetes_Google Cloud Platform - Fatal编程技术网

Kubernetes-入口TCP服务SSL终止

Kubernetes-入口TCP服务SSL终止,kubernetes,google-cloud-platform,Kubernetes,Google Cloud Platform,我正在使用HTTPS流量的入口进行SSL终止。但我也希望为自定义端口(http虚拟主机)实现同样的功能。例如https://example.com:1234应转到http://example.com:1234 Nginx入口有一个ConfigMap,我们可以在其中公开自定义端口。但是SSL终止在这里不起作用 有工作吗?我想知道是否可以改用.htaccess重定向传入的https apiVersion: v1 kind: ConfigMap metadata:

我正在使用HTTPS流量的入口进行SSL终止。但我也希望为自定义端口(http虚拟主机)实现同样的功能。例如
https://example.com:1234
应转到
http://example.com:1234

Nginx入口有一个
ConfigMap
,我们可以在其中公开自定义端口。但是SSL终止在这里不起作用

有工作吗?我想知道是否可以改用.htaccess重定向传入的
https

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: tcp-services
      namespace: ingress-nginx
    data:
      1234: "test-web-services/httpd:1234"
---
apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  externalTrafficPolicy: Local
  type: LoadBalancer
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: http
    - name: port-1234
      port: 1234
      protocol: TCP
      targetPort: 1234

nginx入口
不直接支持TCP流量的
SSL终止

在本期Github中有更广泛的描述:

您还可以在该线程中发现,一些人成功地实现了一种变通方法,允许他们支持使用
TCP
服务终止
SSL
。具体而言:


由于您的示例将“降级”功能从
HTTPS
通信降至
HTTP
,因此您可以添加一点,即更改
NGINX入口控制器连接到
后端的方式。让我详细说明一下

请考虑这是一个解决办法:

默认情况下,您的
NGINX入口控制器将通过
HTTP
连接到后端。这可以通过以下注释进行更改:

  • nginx.ingres.kubernetes.io/后端协议:
引用官方文件:

使用后端协议注释可以指示NGINX应该如何与后端服务通信。(替换旧版本中的安全后端)有效值:HTTP、HTTPS、GRPC、GRPC、AJP和FCGI

默认情况下,NGINX使用HTTP。

--

在此特定示例中,请求路径如下所示:

  • client
    --(HTTPS:443)-->
    Ingress controller
    (TLS终止)--(HTTP:service port)-->
    service
    --
    Pod

警告 您可以使用
LoadBalancer
类型的
服务
将流量从端口
1234
发送到
Ingress控制器的
80
/
443
。这将使
TLS
终止更加容易,但会迫使客户端只使用一个协议。例如:

-名称:自定义
港口:1234
协议:TCP
目标港:443
此摘录自
nginx-ingres
服务
可用于将
HTTPS
流量转发至
ingres控制器
,其中请求将被
TLS终止
,并作为
HTTP
转发至
后端
。强制HTTP通过该端口将产生错误代码
400:错误请求

在此特定示例中,请求路径如下所示:

  • 客户端
    --(HTTPS:1234)-->
    入口控制器
    (TLS终止)-(HTTP:service port)-->
    服务
Pod

您好,
nginx入口
不直接支持TCP服务的SSL终止功能。这方面有一个解决办法。另外,由于您的后端是基于HTTP的,我确实认为您可以使用端口
1234
发送到
targetPort:443
,然后
Ingress controller
将终止您的
HTTPS
并向您的后端发送
HTTP
请求。你试过这种方法吗?@约翰这样做?是的。我已经接受了答案