Dav*_*ord 10 kubernetes terraform terraform-template-file
我正在使用 terraform kubernetes-provider,我想将此kubectl
命令转换为 TF:
kubectl create secret generic my-secret --from-file mysecret.json
Run Code Online (Sandbox Code Playgroud)
然而,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}"
}
Run Code Online (Sandbox Code Playgroud)
但它抱怨这不是一张地图。所以,我可以做这样的事情:
data = {
"my-secret.json" = "{data.template_file.my-secret.template}"
}
Run Code Online (Sandbox Code Playgroud)
但这将使用名为的顶级字段写入机密,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")
}
}
Run Code Online (Sandbox Code Playgroud)
如果文件是二进制文件,则会出现类似错误
调用函数“文件”失败:/your/relative/path/to/file.txt 的内容不是有效的 UTF-8;使用filebase64 函数获取Base64 编码内容或使用其他文件函数(例如filemd5、filesha256)获取文件散列结果。
我尝试在 base64 中对文件进行编码,但问题是生成的文本将由提供程序以 base64 重新编码。所以我想目前没有二进制文件的解决方案......我将使用我接下来找到的二进制文件进行编辑。
小智 -2
基本上你需要提供这样的地图:
resource "kubernetes_secret" "sgw-config" {
metadata {
name = "my-secret"
}
type = "Opaque"
data {
"key1" = "value1"
"key2" = "value2"
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用引用您的内部变量
resource "kubernetes_secret" "sgw-config" {
metadata {
name = "my-secret"
}
type = "Opaque"
data {
"USERNAME" = "${var.some_variable}"
"PASSWORD" = "${random_string.root_password.result}"
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6772 次 |
最近记录: |