如何将服务帐户动态传递给 Cloud Build 配置?
How to dynamically pass service account to Cloud Build config?
我试图在 Cloud Build 配置中参数化服务帐户:
steps:
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
args: [ 'gcloud', '--help']
substitutions:
_SERVICE_ACCOUNT: my-service-account@developer.gserviceaccount.com
serviceAccount: 'projects/$PROJECT_ID/serviceAccounts/${_SERVICE_ACCOUNT}'
options:
logging: CLOUD_LOGGING_ONLY
但是这个 returns 错误:
ERROR: (gcloud.builds.submit) INVALID_ARGUMENT: could not parse service account URL
所以,我猜,服务帐户字段不支持自定义替换。
如果是这种情况,使用不同服务帐户重用云构建配置的推荐方法是什么?
从我对云构建的深刻理解,它不能工作。
想想架构。当您启动 Cloud Build 实例时,您必须加载所有 Google 云标准上下文,例如元数据服务器。元数据服务器提供凭据,实例启动时必须知道它。
替换变量在运行时解释,所以在实例启动后。
因此,您无法在实例启动之前使用替代变量解释服务帐户电子邮件,只能在实例启动之后。但是之后,在元数据服务器中加载正确的服务帐户为时已晚。
我试图在 Cloud Build 配置中参数化服务帐户:
steps:
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
args: [ 'gcloud', '--help']
substitutions:
_SERVICE_ACCOUNT: my-service-account@developer.gserviceaccount.com
serviceAccount: 'projects/$PROJECT_ID/serviceAccounts/${_SERVICE_ACCOUNT}'
options:
logging: CLOUD_LOGGING_ONLY
但是这个 returns 错误:
ERROR: (gcloud.builds.submit) INVALID_ARGUMENT: could not parse service account URL
所以,我猜,服务帐户字段不支持自定义替换。 如果是这种情况,使用不同服务帐户重用云构建配置的推荐方法是什么?
从我对云构建的深刻理解,它不能工作。
想想架构。当您启动 Cloud Build 实例时,您必须加载所有 Google 云标准上下文,例如元数据服务器。元数据服务器提供凭据,实例启动时必须知道它。
替换变量在运行时解释,所以在实例启动后。
因此,您无法在实例启动之前使用替代变量解释服务帐户电子邮件,只能在实例启动之后。但是之后,在元数据服务器中加载正确的服务帐户为时已晚。