在微服务迁移过程中,在进行流量切换的过程中,旧的服务和微服务会共存一段时间。当用户从前端访问时,流量分别会被转发到旧服务和新服务上。
为了使用户可以同时访问旧服务和新服务,需要共用一个redis。因为以前使用的都是各自集群内部的redis(新旧服务在不同的k8s集群上),因此为了让集群外的服务也能访问另一集群的redis服务,所以需要将redis暴露到集群外。
我们ingress使用的是nginx controller
.
1.找到nginx controller
对应的serviceingress-nginx
,一般在kube-system
命名空间下,并编辑。1
2
3
4
5
6
7
8
9kubectl get svc -n kube-system
# 编辑ingress-nginx并新增6379端口
kubectl edit svc ingress-nginx -n kube-system
- name: tcp-redis
port: 6379
protocol: TCP
targetPort: 6379
2.修改ingress-nginx
对应TCP
协议的configmap。1
2
3
4
5
6kubectl edit cm tcp-services -n kube-system
# 在data字段下添加如下内容
data:
<namespace/service name>:<service port>:[PROXY]:[PROXY]
6379: <namespace>/redis:6379
3.然后就可以通过redis-cli
在集群外访问redis
服务了。
参考:
1.https://kubernetes.github.io/ingress-nginx/user-guide/exposing-tcp-udp-services/