先编辑Traefik的Helm的values配置文件,新增如下的配置项,新增一个Traefik的entryPoint配置:
ports:
mysql:
port: 3306
# 老版本的helm-chart配置expose: true
# 下面是新版本的helm-chart配置
expose:
default: true
exposedPort: 3306
注意一定要加expose.default=true才会通过Service的方式进行暴露,接着使用如下的命令更新Traefik:
helm upgrade --install traefik traefik/traefik -n traefik -f values.yaml --create-namespace
到这里,我们就可以在Dashboard+Service当中进行确认,MySQL的entryPoint是否已经配置好:

查看Service暴露的端口号,发现已经通过Loadbalancer去暴露3306端口:
kubectl get svc -n traefik
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
traefik LoadBalancer 10.43.81.246 192.168.11.200 3306:32142/TCP,80:30595/TCP,443:32650/TCP 5d19h
接着我们需要基于K8S的IngressRouteTCP资源,去配置我们的TCP规则,将3306端口绑定上具体的Service(其中mysql-external是我这里要去进行绑定的Service):
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
name: mysql-tcp
namespace: mysql
spec:
entryPoints:
- mysql
routes:
- match: HostSNI(`*`)
priority: 10
services:
- name: mysql-external
port: 3306
weight: 10
接着我们使用MySQL客户端基于Traefik代理的方式,去连接目标MySQL服务器,发现可以正常连接:

评论