是否需要在Kubernetes的MySQL相关Deployment配置中添加MYSQL_URI环境变量?
是否需要在Kubernetes的MySQL相关Deployment配置中添加MYSQL_URI环境变量?
嘿,我来帮你梳理清楚这个问题!
核心结论是:要不要加MYSQL_URI完全取决于你的auth服务代码逻辑,具体来说:
- 如果你的
auth应用代码里是通过读取MYSQL_URI这个环境变量来建立MySQL数据库连接的,那你必须添加这个环境变量——不然程序找不到数据库的连接地址,根本连不上MySQL。 - 如果你的代码是通过硬编码连接地址、或者读取其他配置文件/环境变量来获取MySQL连接信息的,那可以不用加,但硬编码绝对是不推荐的做法,用环境变量来管理这类配置会让你的部署更灵活、更符合最佳实践。
另外,你示例里写的MYSQL_URI值有个小问题:
- name: MYSQL_URI value: 'mysql://auth-mongo-srv:3306/auth'
这里的auth-mongo-srv是你MongoDB的服务名称,MySQL的连接地址应该指向你为MySQL部署创建的Service的名字(比如如果你的MySQL Deployment叫auth-mysql-depl,对应的Service通常会命名为auth-mysql-srv),端口3306是对的,后面的auth是数据库名没问题,但服务名一定要改对,否则会出现连接失败的情况。
如果你的应用需要通过MYSQL_URI来连接,推荐的配置方式是先注入密码环境变量,再在连接串里引用它,比如:
env: - name: MONGO_URI value: 'mongodb://auth-mongo-srv:27017/auth' - name: JWT_KEY valueFrom: secretKeyRef: name: jwt-secret key: JWT_KEY - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: MYSQL_KEY - name: MYSQL_URI value: 'mysql://root:$(MYSQL_ROOT_PASSWORD)@auth-mysql-srv:3306/auth'
这样既保证了密码的安全性(从Secret读取),又能让连接串动态获取密码值,避免硬编码敏感信息。
备注:内容来源于stack exchange,提问作者best_of_man
相关产品推荐
相关产品推荐

