如何在Kubernetes上部署不启用SSL的InnoDB Cluster
配置InnoDB Cluster允许非TLS/SSL连接
要让你的InnoDB Cluster支持非SSL连接,需要从MySQL Server参数配置和MySQL Router端口/协议配置两部分入手,以下是具体的Helm配置方案:
1. 关闭MySQL Server的强制SSL要求
MySQL Server默认会强制客户端使用SSL连接(require_secure_transport=ON),需要通过Helm参数覆盖该配置,允许非SSL连接:
--set mysql.conf.d.require_secure_transport=OFF
2. 配置MySQL Router开放非SSL端口
默认Router仅开放SSL端口,需要添加非SSL端口并关闭其SSL强制要求,让应用可以通过普通端口连接:
--set router.extraPorts[0].name=mysql \ --set router.extraPorts[0].port=3306 \ --set router.extraPorts[0].targetPort=6446 \ --set router.conf.router.options.default.protocol=classic \ --set router.conf.router.options.default.ssl-mode=DISABLED
参数说明:
router.extraPorts:给Router新增3306端口(标准MySQL非SSL端口),映射到Router内部的经典协议端口6446ssl-mode=DISABLED:明确关闭Router的SSL强制校验,允许非SSL连接
3. 完整的Helm安装命令
将上述参数整合到你的原有命令中,最终命令如下:
helm install mycluster mysql-operator/mysql-innodbcluster \ --set credentials.root.user='root' \ --set credentials.root.password='sakila' \ --set credentials.root.host='%' \ --set serverInstances=3 \ --set routerInstances=1 \ --set tls.useSelfSigned=false \ --set mysql.conf.d.require_secure_transport=OFF \ --set router.extraPorts[0].name=mysql \ --set router.extraPorts[0].port=3306 \ --set router.extraPorts[0].targetPort=6446 \ --set router.conf.router.options.default.protocol=classic \ --set router.conf.router.options.default.ssl-mode=DISABLED
4. 验证配置有效性
安装完成后,可通过以下方式验证非SSL连接是否正常:
- 进入Router Pod,使用非SSL方式连接本地端口:
kubectl exec -it mycluster-router-0 -- mysql -uroot -psakila -h127.0.0.1 -P3306 --ssl-mode=DISABLED - 从应用Pod连接Router的Service(
mycluster-router)的3306端口,确认能正常访问数据库。
注意事项
非SSL连接会导致数据明文传输,仅建议在K8s集群内部信任网络中使用,切勿暴露到公网环境;若部分应用支持SSL,可保留Router的默认SSL端口(6446),同时开放3306非SSL端口供不同应用按需使用。
内容的提问来源于stack exchange,提问作者Jakob Hürlemann
相关产品推荐
相关产品推荐

