You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kubernetes的Spring应用中用环境变量配置MySQL URL主机名?

解决Kubernetes中Spring应用连接MySQL无需手动修改Pod IP的方案

核心思路

Kubernetes里Pod的IP是临时且动态变化的,重建Pod后IP会自动更新。要实现稳定的数据库访问,必须通过Kubernetes的Service资源暴露MySQL——Service会提供一个稳定的DNS域名和ClusterIP,即使Pod重建,Service的访问地址也不会改变。

具体步骤

1. 为MySQL创建Service

首先给你的MySQL Deployment创建对应的Service,注意Service的selector必须匹配MySQL Pod的标签(比如假设你的MySQL Pod标签是app: mysql,请根据实际配置调整)。

创建mysql-service.yml文件:

apiVersion: v1
kind: Service
metadata:
  name: mysql-service
spec:
  selector:
    app: mysql  # 此处需与MySQL Pod的labels完全一致
  ports:
    - protocol: TCP
      port: 3306
      targetPort: 3306
  type: ClusterIP  # 默认类型,仅集群内部可访问,满足Spring应用的访问需求

执行命令创建Service:

kubectl apply -f mysql-service.yml

2. 修改Spring应用的数据库连接地址

将Spring Deployment配置中SPRING_DATASOURCE_URL里的Pod IP替换为MySQL Service的名称(同命名空间下直接用Service名即可;跨命名空间则需使用mysql-service.your-mysql-namespace.svc.cluster.local格式)。

修改后的Spring Deployment环境变量片段:

env:
- name: SPRING_DATASOURCE_URL
  value: jdbc:mysql://mysql-service:3306/buddyto_mstr_local?useSSL=false&allowPublicKeyRetrieval=true
- name: SPRING_DATASOURCE_USERNAME
  value: root
- name: SPRING_DATASOURCE_PASSWORD
  value: root

3. 重新部署Spring应用

执行命令更新Spring Deployment:

kubectl apply -f spring-deployment.yml

额外优化与问题修正

  • 敏感信息管理:不要在YAML中明文存储数据库用户名和密码,建议用Kubernetes的Secret资源管理:
    env:
    - name: SPRING_DATASOURCE_USERNAME
      valueFrom:
        secretKeyRef:
          name: mysql-secret
          key: username
    - name: SPRING_DATASOURCE_PASSWORD
      valueFrom:
        secretKeyRef:
          name: mysql-secret
          key: password
    
    创建Secret的命令示例:
    kubectl create secret generic mysql-secret --from-literal=username=root --from-literal=password=root
    
  • 修正Spring Service配置:你的Spring Service中selector设置为app: sample-service,但Spring Deployment的Pod标签是app: spring,这会导致Service无法关联到Pod。请将Spring Service的selector改为app: spring,确保外部流量能正确路由到Spring应用。

内容的提问来源于stack exchange,提问作者DarkDead

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:01:08