内容纲要
概要描述
TDC环境中,某些场景下我们无法查看到链接相关服务的真实ip地址,TDC3.0.0/TCOS-3.1版本中支持真实源IP功能,即外部通过SLB访问时后端Pod可以获取真实的源IP地址。但这个功能目前只在隐私计算区进行了产品化,标准SLB没有该功能,需要后台手动配置。 本文描述相关场景的实现方案
PS:当前功能仅适用于vxlan模式
详细描述
以查询quark-server的链接地址的详细信息为例,配置之前,我们无法获取到链接quark服务的真实ip,pod内以及相关的audit日志里面,链接的地址均为代理地址。
实验背景:
版本:TDC320
地址:
172.22.28.21
172.22.28.22
172.22.28.23
创建/更新VIP CR 资源
https://172.22.28.21/tdc/eco
同网段确认一个空闲ip地址
配置VIP
配置完成后进行测试
kubectl get vip
需要编辑该vip配置disablesnat部分
kubectl edit vip 2024-04-10-10-55-05-005 -oyaml
添加红框所示三行
apiVersion: tos.transwarp.io/v1alpha1
kind: Vip
metadata:
creationTimestamp: "2024-04-10T02:55:05Z"
generation: 5
labels:
io.transwarp.tdc/slb-source: eco
name: 2024-04-10-10-55-05-005
resourceVersion: "9766305"
selfLink: /apis/tos.transwarp.io/v1alpha1/vips/2024-04-10-10-55-05-005
uid: a9da3020-4114-4053-9216-0add55a25141
spec:
az:
- az-77fca585
disablesnat: true
disablesnatrule:
- port: "65530"
protocol: TCP
firewallmode: stateless
ip:
- 172.22.28.188
prio:
- name: gts-tdc2x-023
prio: "14"
vrid: "1"
status: {}
其中65530 是对外暴露的连接端口,在SLB中也会用到
创建SLB
创建Egress资源
cat egress_cr.yaml
apiVersion: crd.antrea.io/v1alpha2
kind: Egress
metadata:
name: quark-gwhkz-egress
spec:
appliedTo:
podSelector:
matchLabels:
statefulset.kubernetes.io/pod-name: quark-server-gwhkz-0
transwarp.install: gwhkz
transwarp.name: quark-server
transwarp.product: quark
egressIP: 172.22.28.188
其中matchLabels中指明pod的label
可以从SLB中获取
kubectl get svc slb-2svl5h -n fzd -oyaml
kubectl apply -f egress_cr.yaml
链接验证
本地电脑ip地址为172.22.202.132
waterdrop链接quark进行相关测试,观察quark-server内的audit日志,以及dbaservice信息,可以看到真实ip