首页 > 其他分享 >Flomesh Ingress 使用实践(四)TLS 透传

Flomesh Ingress 使用实践(四)TLS 透传

时间:2023-02-08 17:06:37浏览次数:50  
标签:TLS Ingress -- ingress fsm SSL 透传

16751712878584.jpg

FSM 是 Flomesh 流量管理体系的一个开源组件,用于 Kubernetes 南北向的流量管理。FSM 以可编程代理 Pipy 为核心,提供了 Ingress 管理器、Gateway API* 实现、负载均衡器以及跨集群的服务注册发现等功能。

在文章 《使用 Flomesh Ingress 管理 osm-edge 服务网格入口流量》 中,我们使用 Flomesh Ingress 来服务网格的入口流量管理。实际上 Flomesh Ingress 的功能还有很多,我们后续会一一介绍。

今天就为大家介绍 Flomesh Ingress 的 SSL 透传功能。

什么是 SSL 透传

SSL(Secure Socket Layer)也被称作 TLS(Transport Layer Security),其通过加密的方式来保护客户端与服务端的安全通信。

16751642158553.png

SSL 透传(SSL Passthrough)是代理服务器处理 SSL 请求的两种方式之一(另一种是 SSL offload)。在 SSL 透传模式下,代理不会解密来自客户端的 SSL 请求,而是将其传递到上游服务器进行解密,这就意味着数据在通过代理的时候保持加密的状态,以此来保证重要和敏感数据的安全性。

SSL 透传的优点

  • 由于数据不在代理上解密,而是以加密的方式转发到上游服务器,数据可以免受网络入侵。
  • 加密数据未经解密到达上游服务,确保了数据的机密性。
  • 这也是代理配置 SSL 的最简单方法。

SSL 透传的缺点

  • 流量中可能会恶意代码,这些代码将直接到达后端服务器。
  • 在 SSL 透传过程中,无法切换服务器。
  • 无法做 7 层流量处理。

接下来我们看下,如何使用 FMS Ingress 的 SSL 透传。

Demo

环境准备

使用单节点的 K3s 集群,并禁用 traefik。

export INSTALL_K3S_VERSION=v1.23.8+k3s1
curl -sfL https://get.k3s.io | sh -s - --disable traefik --disable servicelb --write-kubeconfig-mode 644 --write-kubeconfig ~/.kube/config

安装 FSM

通过 Helm 安装 FSM。在安装时通过参数 fsm.ingress.tls=true 开启 TLS,并使用 fsm.ingress.sslPassthrough=true 开启 SSL 透传。

helm repo add fsm https://charts.flomesh.io

helm install --namespace fsm --create-namespace \
  --version=0.2.1-alpha.2 \
  --set fsm.ingress.tls.sslPassthrough.enabled=true \
  --set fsm.serviceLB.enabled=true \
  --set fsm.ingress.tls.enabled=true \
  fsm fsm/fsm

确认相应组件 pod 启动并正常运行。

kubectl get po -n fsm
NAME                                               READY   STATUS    RESTARTS   AGE
fsm-repo-5f6dc647c7-w45sl                          1/1     Running   0          26s
fsm-manager-864c74b978-fdks9                       1/1     Running   0          26s
svclb-fsm-ingress-pipy-controller-26382000-scgt2   2/2     Running   0          19s
fsm-ingress-pipy-5cfc98bb48-v9x5s                  1/1     Running   0          26s

获取 Ingress 的 IP 和 端口。

export ingress_host="$(kubectl -n fsm get service fsm-ingress-pipy-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')"
export ingress_port="$(kubectl -n fsm get service fsm-ingress-pipy-controller -o jsonpath='{.spec.ports[?(@.name=="https")].port}')"

测试

为简单起见,这里我们不部署上游服务,而是直接将 https://httpbin.org 作为上游,通过 curlrevolve 参数,将其解析到上面拿到的 ingress 地址。如果 ingress 的端口不是 433,可以使用 connect-to 参数 --connect-to httpbin.org:443:$ingress_host:$ingress_port

curl https://httpbin.org/get -i --resolve httpbin.org:443:$ingress_host:$ingress_port
HTTP/2 200
date: Tue, 31 Jan 2023 11:21:41 GMT
content-type: application/json
content-length: 255
server: gunicorn/19.9.0
access-control-allow-origin: *
access-control-allow-credentials: true

{
  "args": {},
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.68.0",
    "X-Amzn-Trace-Id": "Root=1-63d8f9c5-5af02436470161040dc68f1e"
  },
  "origin": "20.205.11.203",
  "url": "https://httpbin.org/get"
}

总结

SSL 透传有优点也有缺点,需要根据使用场景来灵活选择是使用 SSL 透传还是 SSL 卸载。

标签:TLS,Ingress,--,ingress,fsm,SSL,透传
From: https://blog.51cto.com/u_15923771/6044624

相关文章

  • DaemonSet方式部署nginx-ingress
    前言nginx-ingress是k8s官方维护的一个IngressController,具体使用,官方有详细的文档:https://kubernetes.github.io/ingress-nginx/deploy/直接按照官方文档进行安装,一般......
  • k8s集群安装nginx-ingress报错解决
    可能是因为之前集群内安装过nginx-ingress,没有删除彻底,再次安装nginx-ingress的时候就提示有资源存在。报错如下:Error:INSTALLATIONFAILED:renderedmanifestscontai......
  • k8s05- Ingress Controller 的安装部署
    目录1、IngressController的实现方案2、安装3、部署3.1Deployment+Service(NodePort)3.2、DaemonSet+HostNetwork+nodeSelector3.3Nodeport和HostNetwork方案的比较......
  • 《istio-in-action系列》3. istio VirtualService 和 k8s Ingress
    《istio-in-action系列》3.istioVirtualService和k8sIngress可以简单的认为Ingress是k8s中提出的流量入口转发的一个标准定义规范(只是认为)。怎么实现,需要根据......
  • helm与ingress
    https://helm.sh/zh/docs/intro/install/https://kubernetes.github.io/ingress-nginx/deploy/......
  • Flomesh Ingress 使用实践(三)多租户 Ingress
    背景在当下的云计算时代,我们经常会听到“租户”、“多租户”。“租户”是多租户架构技术中的概念,这种技术是用来处理多个组织共用同一个系统或者组件时的数据隔离性。在Ku......
  • k8s部署nginx-ingress
    Kubernetes暴露服务的有三种方式,分别为LoadBlancerService、NodePortService、Ingress。官网对Ingress的定义为管理对外服务到集群内服务之间规则的集合,通俗点讲就是......
  • curl_cffi: 支持原生模拟浏览器 TLS/JA3 指纹的 Python 库
    原文首发于我的博客:https://yifei.me/note/2719越来越多的网站开始使用TLS指纹反爬虫,而Python中竟然没有任何方法解决这个问题。前一阵看到由国外大神写了一个curl-......
  • composer安装tp5.1时提示You are running Composer with SSL/TLS protection disabled
    今天想安装个tp5.1来学习一下,然后就提示这个错误百度了半天,什么php.ini里的打开extension=php_openssl.dll,ca证书重新下载都试过了,依旧如此。究竟还差了些什么呢......
  • 处理高危漏洞SSL/TLS协议信息泄露漏洞
    处理高危漏洞SSL/TLS协议信息泄露漏洞一、问题探讨话说我们9月份上线的系统,在做等保三级漏扫的时候,被扫出个高危漏洞:SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理......