我正在尝试在需要访问配置文件的程序中使用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-token
,my-cert
和my-server
作为环境变量,因为由于安全原因,我无法在存储库中的文件中对此进行硬编码原因。我怎样才能做到这一点?
答案 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()
}
这将在运行时进行所需的替换。