我正在尝试使用Cloud Build触发作业动态地构建新的Docker镜像,但是我看不到如何安全地检索我的凭据以使用服务帐户针对GCP进行身份验证。
步骤如下:
第一步失败是因为:
1.)默认情况下,由于某种原因,在GCP中运行Dockerfile的用户未针对GCP进行身份验证。它不是默认的Google Cloud Build帐户,而是匿名用户。
2.)我可以将BUT认证为服务帐户
a。)我不想在本地或存储库中存储未加密的JSON私钥。
b。)如果我将其加密存储在GCP存储库中,则需要先进行身份验证,然后再使用KMS对其进行解密。但是我没有密钥,因为它仍然是加密的。所以我回到了我的问题。
c。)如果我将其存储在GCP存储桶中,我也需要进行身份验证。所以我回到了我的问题。
还有其他方法可以执行云构建触发作业并保留/获取GCP服务帐户上下文吗?
最佳答案
@ParthMehta的#1解决方案是正确的。
在调用Docker Build之前,请在Cloud Build中添加此步骤,以使用Cloud Build环境的许可从Cloud Storage下载文件(服务帐户如下:<PROJECT_NUMBER>@cloudbuild.gserviceaccount.com
)
- name: gcr.io/cloud-builders/gsutil
args: ['cp', 'gs://mybucket/my_file', 'my_file']
该文件被复制到Cloud Build执行
/workspace
的当前目录中。然后通过在COPY
中添加一个简单的Dockerfile
将文件添加到您的容器中....
COPY ./my_file ./my_file
....
通常,在GCP环境中工作时,您永远不必使用JSON密钥文件。
关于docker - 如何从容器化的Dockerfile向GCP进行身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59325936/