gitlab - 在 gitlab CI/CD 中验证 gcloud 服务帐户
问题描述
我正在使用 gcloud-service-key.json 从 gitlab-ci.yml 文件将服务部署到 gcloud。我收到这个错误
$ google-cloud-sdk/bin/gcloud auth activate-service-account --key-file ${HOME}/gcloud-service-key.json 错误:gcloud 崩溃(ValueError):无法检测到密钥。
在下面找到代码片段的子集
- apk add --update make ca-certificates openssl python --repository https://alpine.global.ssl.fastly.net/alpine/v3.10/community --repository https://alpine.global.ssl.fastly.net/alpine/v3.10/main && rm -fR /var/cache/apk/*
- update-ca-certificates
# Write our GCP service account private key into a file
- echo $GCLOUD_SERVICE_KEY > ${HOME}/gcloud-service-key.json
# Download and install Google Cloud SDK
- wget https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz
- tar zxvf google-cloud-sdk.tar.gz && ./google-cloud-sdk/install.sh --usage-reporting=false --path-update=true
- google-cloud-sdk/bin/gcloud --quiet components update
- google-cloud-sdk/bin/gcloud auth activate-service-account --key-file ${HOME}/gcloud-service-key.json
任何帮助都会得到帮助,我已经在这几天了。
解决方案
看来您的密钥文件有问题。尝试使用 gcloud 生成新的:
$ gcloud iam service-accounts keys create key1.json --iam-account=test123@xxxxx.iam.gserviceaccount.com
created key [6ca5ffc929f31d1f1915d430887a7fa3689eb69d] of type [json] as [key1.json] for [test123@xxxxx.iam.gserviceaccount.com]
还有一个官方文档如何生成密钥- 如果有疑问,请随时查看。
您的json
密钥文件应如下所示:
{
"type": "service_account",
"project_id": "xxxxxx,
"private_key_id": "6ca5ffc929f31d1f1915d430887a7fa3689eb69d",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAAsdfsd234fesSiAgEAAoIBAQDKnmI67Aw3DgHM\n1b25LH1jRAV0pt6hjTEeJGH$
"client_email": "test123@xxxxx.iam.gserviceaccount.com",
"client_id": "110107674812168412361",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/test123@xxxxx.iam.gserviceaccount.com"
}
如果您的文件看起来不同,请检查该echo $GCLOUD_SERVICE_KEY > ${HOME}/gcloud-service-key.json
部分。这可能是$GCLOUD_SERVICE_KEY
变量的问题。
此外,如果您对激活帐户有任何疑问,还有另一篇关于如何操作的文档。
推荐阅读
- amazon-web-services - 将我的本地环境变量值传递给我的 ec2 用户数据
- python - ValueError:无法将字符串转换为浮点数:'571,2'
- c++ - gem5:在 BaseCPU 中使用 xbar stat
- python - 在 scikit learn/pandas 函数中出现错误提示列不存在
- flutter - 如何在三元运算符中使用不仅仅是 if/else?
- c - 打印一个额外的下划线,我不知道为什么,在清除屏幕之前只发生一次
- azure-logic-apps - “发送电子邮件”参数“附件内容”不能为空
- reactjs - 如何通过 API 数据设置 useState 来处理延迟
- scheme - 使用 readline 时如何抑制回显输入
- javascript - Javascript 在鼠标悬停时播放视频(多个视频)