使用Pulumi和Typescript创建秘密(k8s)



我想用Typescript中的Pulumi创建一个秘密它应该包含以下数据:

remote_write:
- url: "example.com"
basic_auth:
username: "user"
password: "XXX"  

代码看起来像:

const databaseSecret = new k8s.core.v1.Secret(
"secret-config", 
{
data: { 
remote_write: [
{
url: "example.com",
basic_auth:
{
username: "user",
password: "XXX",
}
}
], 
}
}, 
k8sOpts
);

但这显示了以下错误消息:

"类型"{url:string;basic_auth:{username:string;密码:"字符串;};}[]"不可分配给类型"Input">

我不知道如何解决这个问题?如何将这样的嵌套数据转换为机密?

这里有几个问题。

首先:一个Kubernetes秘密接受一个带有密钥名称的输入,然后是一些字符串数据。您将密钥名称作为remote_write传递,然后尝试传递TypeScript对象——您需要首先将其字符串化。您可以利用YAML作为JSON的超集来处理以下问题:

let secret = [
{
url: "example.com",
basic_auth: {
username: "user",
password: "XXX",
},
},
];
const databaseSecret = new k8s.core.v1.Secret("secret-config", {
data: {
remote_write: JSON.stringify(secret),
},
});

然而,这里还有一个额外的问题:Kubernetes希望机密中的对象是base64编码的,所以您需要首先对其进行编码:

const databaseSecret = new k8s.core.v1.Secret("secret-config", {
data: {
remote_write: Buffer.from(JSON.stringify(secret), 'binary').toString('base64'),
},
});

最新更新