在 TF 的 Kubernetes 提供程序中创建 p12 密钥库密钥



经过很多努力,最终,在这篇文章的帮助下:我从Terraform google_service_account_key资源中获得了可用的P12包/私钥,很明显,Terraform不支持这样的P12密钥库。

<<p>我的要求/strong>:我正在使用TF的Kubernetes提供程序来创建部署。在这种情况下,我必须使用测试设置一个秘密。p12文件。Terraform期望文件是UTF-8编码的。但是我的p12密钥库不是UTF-8编码的。简单的编码和解码会导致UTF-8错误。

我的方法:

  1. 使用cat test.p12 | base64 -w0 > encodeout.txt将p12密钥库编码为UTF-8编码的文本文件。将其存储为地形变量encoded_p12。
  2. 接下来,我将这个文件传递到下面
resource "kubernetes_secret_v1" "test_keystore" {
metadata {
name      = "test-keystore"
namespace = test
}
type = "Opaque"
data = {
"test.p12" = base64decode(var.encoded_p12)
}
}

但是这里它将失败,因为terraform不能解码为UTF-8编码的有效的p12文件。

  1. 所以,首先解码encoded_p12如下-
resource "local_file" "decodep12" {
content = var.encoded_p12
filename = "decoded_p12.p12"
provisioner "local-exec" {
command =  "openssl enc -d -base64 -in "${content}" ${filename}" 
}
}
  1. 试图将这个动态创建的解码文件作为
  2. 传递
resource "kubernetes_secret_v1" "app_keystore" {
metadata {
name      = "test-keystore"
namespace = test
}
type = "Opaque"
data = {
"test.p12" = file(${filename})
}
}

这种方法是否有效,是否有任何修正或更好的解决方案?限制是我不能直接将。p12文件传递给数据块。

有一个更简单的选择。

对于这种情况,kubernetes_secret_v1资源有一个binary_data参数,它与Terraform语言中的filebase64函数很好地配对:

resource "kubernetes_secret_v1" "app_keystore" {
metadata {
name      = "test-keystore"
namespace = "test"
}
type = "Opaque"
binary_data = {
"test.p12" = filebase64("decoded_p12.p12")
}
}

相关内容

  • 没有找到相关文章

最新更新