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