如何在Kubernetes配置文件中添加环境变量?

时间:2019-12-13 14:16:56

标签: kubernetes config

我正在尝试在需要访问配置文件的程序中使用Kubernetes Go-Client(它将在我的Kubernetes集群外部运行)。配置文件需要一些令牌,服务帐户详细信息等,以便程序可以访问Kubernetes集群。

配置文件的格式如下:

apiVersion: v1
kind: Config
users:
- name: testsa
  user:
    token: my-token
clusters:
- cluster:
    certificate-authority-data: my-cert
    server: my-server
  name: self-hosted-cluster
contexts:
- context:
    cluster: self-hosted-cluster
    user: testsa
  name: test-name
current-context: test-context

在上面的文件中,我需要给my-tokenmy-certmy-server作为环境变量,因为由于安全原因,我无法在存储库中的文件中对此进行硬编码原因。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

感谢Markus提供的提示链接。

我正在用Go编写答案,因为原始链接显示了如何从命令行执行该操作。步骤如下:

  • 使用${X}格式替换文件中要修改的字段。就我而言我用my-token取代了${my-token},依此类推。
  • 您可以在此处将X设置为环境变量,以便您的代码在运行时可以访问它。例如通过在命令行中执行export X="abcd"
  • 说文件名为config
  • 执行以下代码:
package main

import (
    "os"
    "os/exec"
)

func main() {
    mytoken := os.Getenv("mytoken")
    part := fmt.Sprintf("s/${mytoken}/%s/g", mytoken)
    command := exec.Command("sed", "-i", "", "-e", part, "config")
    command.Run()
}

这将在运行时进行所需的替换。