gpt4 book ai didi

kubernetes - 在 Kubernetes 中,将文件中的 secret 公开为环境变量

转载 作者:行者123 更新时间:2023-12-02 11:39:37 25 4
gpt4 key购买 nike

在 Kubernetes 中,如何将文件(在 Kubernetes 卷中)中的 secret 公开为环境变量?

背景:
我关注了Google Cloud Platform GKE Vault Demo在其中,他们展示了如何“不断地将 secret 的内容提取到本地文件位置。这允许应用程序正常地从 pod 内的文件中读取 secret ,而无需进行修改以直接与 Vault 交互。”

我想知道如何将这些 secret 公开为环境变量(而不是文件)以供其他应用程序容器使用。

最佳答案

我发现了如何将文件中的 secret 注入(inject)到应用程序容器中。

首先, secret 文件的格式应为 KEY="VALUE"在每一行。
对于那些使用 Consul Template 从 Vault 获取 secret 的人,您可以这样做:

- name: CT_LOCAL_CONFIG
value: |
vault {
ssl {
ca_cert = "/etc/vault/tls/ca.pem"
}
retry {
backoff = "1s"
}
}
template {
contents = <<EOH
{{- with secret "secret/myproject/dev/module1/mongo-readonly" }}
MONGO_READ_HOSTNAME="{{ .Data.hostname }}"
MONGO_READ_PORT="{{ .Data.port }}"
MONGO_READ_USERNAME="{{ .Data.username }}"
MONGO_READ_PASSWORD="{{ .Data.password }}"
{{- end }}
{{- with secret "secret/myproject/dev/module2/postgres-readonly" }}
POSTGRES_READ_HOSTNAME="{{ .Data.hostname }}"
POSTGRES_READ_PORT="{{ .Data.port }}"
POSTGRES_READ_USERNAME="{{ .Data.username }}"
POSTGRES_READ_PASSWORD="{{ .Data.password }}"
{{- end }}
EOH
destination = "/etc/secrets/myproject/config"
}

这将在正确的 KEY="VALUE" 中生成一个 secret 文件。形式。

来自 secret 文件,通过 volumeMount 共享到应用程序容器,我们可以像这样将 secret 作为环境变量注入(inject):
command: ["/bin/bash", "-c"]  # for Python image, /bin/sh doesn't work, /bin/bash has source
args:
- source /etc/secrets/myproject/config;
export MONGO_READ_HOSTNAME;
export MONGO_READ_PORT;
export MONGO_READ_USERNAME;
export MONGO_READ_PASSWORD;
export POSTGRES_READ_HOSTNAME;
export POSTGRES_READ_PORT;
export POSTGRES_READ_USERNAME;
export POSTGRES_READ_PASSWORD;
python3 my_app.py;

通过这种方式,我们不必修改现有的应用程序代码,这些代码需要来自环境变量的 secret (用于使用 Kubernetes secret )。

关于kubernetes - 在 Kubernetes 中,将文件中的 secret 公开为环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55962949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com