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

How to add environment variables in Kubernetes config file?

我正在尝试在我的程序中使用 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 作为环境变量,因为我无法在存储库中的文件中对其进行硬编码,因为出于安全原因。我怎样才能做到这一点?

感谢 Markus 的提示 link。

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

  • 将文件中要修改的字段替换为 ${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()
}

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