登录
首页 >  Golang >  Go问答

Kubernetes中如何利用Golang环境变量动态传递数据库连接值

来源:stackoverflow

时间:2024-03-02 22:18:24 358浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《Kubernetes中如何利用Golang环境变量动态传递数据库连接值》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

我目前正在 golang 中开发一个小型 api,它将连接到 sql 数据库。下面是我静态传递数据库连接字符串详细信息的片段(在代码中硬编码)。

const (
db_user     = "username"
db_password = "password"
db_name     = "db_name"
db_host     = "db_server_name"
db_port     = db_port )

现在我想使用 env 变量使这个静态硬编码值变为动态,因此任何人都可以使用 env 变量设置这些详细信息。有人可以帮助我如何实现这一目标。如何从代码中以这种方式设置它们,以便可以在 k8 的部署中作为 env 变量动态传递?

我当前的deployment.yaml文件如下

apiVersion: apps/v1
kind: Deployment
metadata:
  name: go-demo-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: go-demo-app
  template:
    metadata:
      labels:
        app: go-demo-app
    spec:
      containers:
        - name: go-demo-app
          image: dockerhub/go-api:latest
          resources: {}
          ports:
            - containerPort: 8001

上面的代码工作正常,因为数据库服务器名称是硬编码在代码中的,现在我可以通过代码使用 env 变量动态传递它,我可以在 k8 的部署中引用它


正确答案


将 .yaml 更改为

apiversion: apps/v1
kind: deployment
metadata:
  name: go-demo-app
spec:
  replicas: 1
  selector:
    matchlabels:
      app: go-demo-app
  template:
    metadata:
      labels:
        app: go-demo-app
    spec:
      containers:
        - name: go-demo-app
          image: dockerhub/go-api:latest
          resources: {}
          ports:
            - containerport: 8001
          env:
            - name: db_user
              value: username
            - name: db_password 
              value: password
            - name: db_name     
              value: db_name
            - name: db_host     
              value: db_server_name
            - name: db_port     
              value: "3306"

kubectl apply -f /path/to/file

在您的代码中,将初始化更改为

var (
    DB_USER     = os.Getenv("DB_USER")
    DB_PASSWORD = os.Getenv("DB_PASSWORD")
    DB_NAME     = os.Getenv("DB_NAME")
    DB_HOST     = os.Getenv("DB_HOST")
    DB_PORT     = os.Getenv("DB_PORT")
)

我将 const 更改为 var,因为这是不允许的

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>