标签: traefik

记一次 Traefik 无法代理 MySQL 问题

Traefik 从 2.0 版本开始支持 TCP route,我也使用 Traefik 作为 kubernetes 集群的 Ingress,但是在使用过程中,发现 Traefik 为 MySQL 创建的 TCP route 无法正常工作,经过排查搜索后发现了官方人员关于这个疑惑的解答,以下截取片段:

But be careful: not all protocols based on TCP and using TLS supports the SNI routing or the passthrough. It requires the protocol supporting SNI (for instance MySQL doesn't) and doing a TLS handshake (if it is a STARTTLS, then it does not work).

虽然找到了问题是由于 MySQL 不支持,但也勾起了我的好奇心,什么是 SNI?Traefik 为什么要使用 HostSNI 创建 TCP route 呢?为什么 MySQL 不支持 SNI 呢?于是带着这些问题,我开始寻找答案。