kubernetes - terraform-kubernetes-provider 如何从文件中创建秘密?
问题描述
我正在使用 terraform kubernetes-provider,我想将这样的kubectl
命令翻译成 TF:
kubectl create secret generic my-secret --from-file mysecret.json
secret
然而,资源的data
字段似乎只需要一个 TF map。
我试过类似的东西
data "template_file" "my-secret" {
template = "${file("${path.module}/my-secret.json")}"
}
resource "kubernetes_secret" "sgw-config" {
metadata {
name = "my-secret"
}
type = "Opaque"
data = "{data.template_file.my-secret.template}"
}
但它抱怨这不是一张地图。所以,我可以做这样的事情:
data = {
"my-secret.json" = "{data.template_file.my-secret.template}"
}
但这将使用名为的顶级字段写入机密,my-secret.json
并且当我卷挂载它时,它不会与其他资源一起使用。
这里的诀窍是什么?
解决方案
只要文件是 UTF-8 编码的,你就可以使用这样的东西
resource "kubernetes_secret" "some-secret" {
metadata {
name = "some-secret"
namespace = kubernetes_namespace.some-ns.metadata.0.name
labels = {
"sensitive" = "true"
"app" = "my-app"
}
}
data = {
"file.txt" = file("${path.cwd}/your/relative/path/to/file.txt")
}
}
如果文件是二进制文件,则会出现类似错误
调用函数“文件”失败:/your/relative/path/to/file.txt 的内容不是有效的 UTF-8;使用 filebase64 函数来获取 Base64 编码的内容或其他文件函数(例如 filemd5、filesha256)来获取文件哈希结果。
我尝试在 base64 中编码文件,但问题是生成的文本将由提供程序在 base64 中重新编码。所以我想目前没有二进制文件的解决方案......我将用我接下来找到的二进制文件进行编辑。
推荐阅读
- python - 如何使用 matplotlib 绘制一对多图
- python - 将数据框转换为枢轴,并将值分组为列表
- angular - Angular Typescript cookie 存在逻辑
- javascript - array.splice(index, 1) 返回删除项目的数组
- reactjs - 从 Spring Boot 获取时,employees.map 不是随机函数
- mongodb - 如何使用文件系统 mern 处理图像
- python - 我可以制作散点图,但我不能在同一张图中用 matplotlib 画线
- ansible - 在安全环境中使用 become/ansible 进行权限提升
- react-native - 在 React Native 中设置大数组状态时如何消除 UI 的延迟?
- php - 如何访问名称和值对