我正在尝试创建一个 Cloud Build 触发器,其中使用 Cloud KMS 对秘密环境变量进行加密并存储为 Cloud Build 中的替换变量。这样我的云构建 yaml 是相当通用的,并且在我们部署到的所有环境中都是相同的。
这个云构建 yaml 工作正常:
steps:
- name: 'ubuntu'
entrypoint: 'bash'
args: ['-c', 'echo "$$APP_NAME HAS A VALUE $$HELLO_WORLD"']
env:
- 'APP_NAME=${_APP_NAME}'
secretEnv:
- 'HELLO_WORLD'
secrets:
- kmsKeyName: 'projects/my-first-cicd-project/locations/europe-west1/keyRings/keyring-dev/cryptoKeys/key-backend'
secretEnv:
HELLO_WORLD: xxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)
构建步骤生成此日志行:
My App Name HAS A VALUE Hello there world!
Run Code Online (Sandbox Code Playgroud)
完全符合预期。
现在对于不起作用的事情,或者至少我无法上班。假设我想让密钥环名称动态化。然后我将该 yaml 中的“keyring-dev”替换为${_KMS_KEYRING_NAME}. 这将产生如下错误:
invalid build: failed to check access to "projects/my-first-cicd-project/locations/europe-west1/keyRings/${_KMS_KEYRING_NAME}/cryptoKeys/key-backend"
Run Code Online (Sandbox Code Playgroud)
如果我将 YAML 中的 base64 字符串(以“CiQAH...”开头)更改为诸如 ${_KMS_VAR_HELLO_WORLD} 之类的替换变量,我将收到此错误:
failed unmarshalling build config cloudbuild.yaml: illegal …Run Code Online (Sandbox Code Playgroud) 我一直在尝试创建一个新的 CloudSQL 实例,并从一开始就附加了私有 IP。文档唯一提示我的是添加 VPC 网络。我正在尝试添加默认的。
首先,我为我的项目启用正确的 API/服务:
gcloud services enable servicenetworking.googleapis.com servicemanagement.googleapis.com --project=my-project
Run Code Online (Sandbox Code Playgroud)
然后我尝试创建 CloudSQL 实例:
gcloud beta sql instances create cloudsql-instance-name --region=europe-west1 --project=my-project --network=projects/my-project/global/networks/default
Run Code Online (Sandbox Code Playgroud)
然而,这给了我这个非描述性错误:
ERROR: (gcloud.beta.sql.instances.create) [INTERNAL_ERROR] Failed to create subnetwork. Please create Service Networking connection with service 'servicenetworking.googleapis.com' from consumer project '1234567890' network 'default' again.
Run Code Online (Sandbox Code Playgroud)
两个问题:
谢谢!
google-cloud-sql google-compute-engine google-cloud-platform