在 kubernetes 中部署时如何在 golang 中使用 ENV var

我目前正在使用 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 vars 设置这些细节。有人可以帮助我如何实现这一目标。如何从代码中以这种方式设置它们,以便它可以在 k8 的部署中作为 ENV vars 动态传递?


我当前的 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 vars 动态传递它,我可以在 k8 的部署中引用它


陪伴而非守候
浏览 135回答 1
1回答

噜噜哒

将 .yaml 更改为apiVersion: apps/v1kind: Deploymentmetadata:  name: go-demo-appspec:  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 因为它是不允许的
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go