当前位置: 首页 > 知识库问答 >
问题:

Kubernetes将HTTPS流量路由到外部HTTP服务

祁奇略
2023-03-14

我想让流量如下所示:

外部客户端https请求(例如。https://my-app-out-side-cluster.com) -

我遵循这篇文章来配置我的入口和外部流量,但是,由于我在集群外的服务是http,所以在使用https发出请求时,我会遇到SSL错误。但是,将请求更改为http是可行的,这是不需要的。

我的问题是,有没有办法

  1. 在入口中终止SSL(使用入口控制器)
  2. 是否将流量重定向到群集外部侦听http的服务
---
kind: Service
apiVersion: v1
metadata:
  name: my-external-service
spec:
  type: ExternalName
  externalName: my-app-out-side-cluster.com
---
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: kong
spec:
  controller: ingress-controllers.konghq.com/kong
---
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: my-ingress
  namespace: kong
  annotations:
    konghq.com/protocols: "https"
spec:
  ingressClassName: kong
  tls:
  - secretName: my-secret
    hosts:
    - my-app-out-side-cluster.com
  rules:
  - host: my-app-out-side-cluster.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-external-service
            port:
              number: 80

共有1个答案

储俊英
2023-03-14

我不确定您的设置和K8s群集是如何设置的,

它是私有集群还是公共集群,请求如何在POD之外运行Node的任何服务或调用HTTP服务Java?

外部客户端https请求(例如。https://my-app-out-side-cluster.com) -

为此,你正走在正确的道路上。您必须设置入口控制器,该控制器将处理传入请求并执行TLS终止。

您的TLS/SSL证书将存储在库伯内特斯的秘密中,并将连接到入口。

入口将允许HTTPS流量并执行TLS终止,因此在后台它将转发纯超文本传输协议流量。

参考文章:https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes

如果您在AWS上:https://aws.amazon.com/premiumsupport/knowledge-center/terminate-https-traffic-eks-acm/

更改为http(例如。http://my-app-out-side-cluster.com) -

我认为这个endpoint可能会被pod内运行的服务调用,因此,您可以简单地更改HTTP,它就会工作。

在K8s集群中,根据CNI插件,理想情况下,POD会在节点上进行调度,并直接从节点发送请求。

除非是响应,否则您的请求不会通过Nginx入口控制器传出。

 类似资料:
  • 我们有Zuul和Eureka在我们的kubernetes集群上运行。Zuul在Eureka注册。 我启动了一个名为“资源服务”的新服务,这将正确启动并注册到Eureka,所有服务都启动了。 当我试图访问Zuulendpoint以访问“resource-service”时,我得到以下错误。看起来Zuul不能映射到Resource-service,即使Resource-service注册了Eureka

  • 我正在测试gke入口以将流量路由到两个不同的服务。我的部署包括一个基本的Web容器,它部署了一个默认的蓝色网页和一个绿色网页。我能够得到响应本质上,“/”适用于蓝色或绿色部署。但是当我转到超文本传输协议:///绿色时,我得到了404响应。我已经用“/”作为绿色部署进行了测试,它显示了一个绿色网页。但是如果我转到超文本传输协议:///蓝色,它会导致404响应, 我已经通过将负载平衡器直接连接到容器上

  • 问题内容: 我不确定这个问题的正确说法是什么,但是就这样。 我想设置两个Web应用程序。一种基于golang,另一种基于apache / php(wordpress) 这些应用程序将作为单独的Google Cloud Platform API引擎托管。 我希望这些内容可以在同一域下发布,例如,主要的golang应用程序网址为www.mygolangapp.com,而wordpress网址为www.

  • 我在VPC上有一个极光数据库。今天我需要通过lambda连接到数据库。这并不是一个问题,只是我需要在Lambda中访问互联网,所以我必须设置以下内容: 我为公共NAT添加了新的子网。 我添加了NAT网关,并将其分配给新的EIP和新的子网。 我添加了一个新的路由表,该表将所有流量路由到并将该表与在步骤1中创建的新子网相关联。 我修改了路由表,并将所有流量路由到NAT。

  • 我正在尝试将所有http流量重定向到https。我尚未在服务器上安装SSL证书,并且正在使用cloudflare灵活SSL选项。 以下代码工作文件 但这让http://www.example.com转向了https://example.com 但是当我添加这个 重定向所有非www网址,如http://example.com到https://example.com 网站没有加载,并给我一个错误,说浏

  • 我在Tomcat Server上有JAVA REST API Web Server,它在AWS EC2实例中的端口8080上运行。 还有一个传统负载均衡器来管理此实例的所有流量。因此,在此之前,ELB在HTTP上,有时,它是从HTTPS(443:ELB端口)路由到ELB侦听器上的HTTP(8080:实例端口)。 我在HTTPS(443)的ELB安全组中添加了入站规则。 弹性负载均衡器图片 弹性负载