如何解决在 Pulumi 中,在定义 GCP CloudBuild 触发器时,我应该使用什么作为 kmsKeyName 来表示托管机密?
我的目标是使用 Pulumi 创建 GCP CloudBuild 触发器。我正在使用 Typescript 客户端。
在创建 Google 管理的机密(而不是客户管理的机密)时,我不使用 KMS。
我会在所需的 (!) 变量 build.secrets[0].kmsKeyName 中放入什么?这在使用 KMS 时很简单,但我发现没有“默认”或“全局”KMS 名称可以在使用 Google 管理的机密运行触发器时起作用。我可以使用“假”KMS 名称创建触发器,但它无法运行,并抱怨:
Failed to trigger build: generic::invalid_argument: invalid build: invalid secrets: kmsKeyName "?WHAT TO PUT HERE?" is not a valid KMS key resource
。
预先感谢您的任何建议。
import * as gcp from "@pulumi/gcp";
const ghToken = new gcp.secretmanager.Secret("gh-token",{
secretId: "gh-token",replication: {
automatic: true,},})
const ghTokenSecretVersion = new gcp.secretmanager.SecretVersion("secret-version",{
secret: ghToken.id,secretData: "the-secret-token",});
const cloudBuild = new gcp.cloudbuild.Trigger("trigger-name",{
github: {
owner: "the-org",name: "repo-name",push: {
branch: "^main$"
}
},build: {
substitutions: {
"_SERVICE_NAME": "service-name","_DEPLOY_REGION": "deploy-region","_GCR_HOSTNAME": "gcr.io",steps: [
{
id: "Build",name: "gcr.io/cloud-builders/docker",entrypoint: "bash",args: [
"-c",`docker build --no-cache
-t $_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA
--build-arg GH_TOKEN=$$GH_TOKEN
.
-f Dockerfile
`,],secretEnvs: ["GH_TOKEN"],tags: ["my-tag"],secrets: [
{
kmsKeyName: "?WHAT TO PUT HERE?",secretEnv: {
"GH_TOKEN": ghTokenSecretVersion.secretData
}
}
]
},})
解决方法
我认为您不能通过 Pulumi 将 SecretManager
秘密用于云构建。我通过创建 kms 密钥并使用 gcp.kms.Ciphertext
加密我的数据解决了这个问题。这是它的样子:
import * as gcp from "@pulumi/gcp";
import * as pulumi from "@pulumi/pulumi";
export const keyRing = new gcp.kms.KeyRing("keyring",{
location: "global",},{protect: true});
export const secretsEncryptionKey = new gcp.kms.CryptoKey("secrets-key",{
keyRing: keyRing.id,rotationPeriod: "100000s",{ protect: true });
const config = new pulumi.Config();
export const githubTokenCiphertext = new gcp.kms.SecretCiphertext("github-token",{
cryptoKey: secretsEncryptionKey.id,plaintext: config.requireSecret("github-token"),});
const cloudBuild = new gcp.cloudbuild.Trigger("trigger-name",{
github: {...},build: {
...,secrets: [
{
kmsKeyName: githubTokenCiphertext.cryptoKey,secretEnv: {
"GH_TOKEN": githubTokenCiphertext.ciphertext,}
}
]
},})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。