首页 文章

在没有Jenkins的gcloud SDK的情况下,在Google Container Engine上授权Kubernetes

提问于
浏览
3

我正在尝试设置一个持续集成作业,该作业将从Jenkins作业部署到kubernetes / google容器引擎 . jenkins服务器受到相对严格的控制,因此我无法安装插件 .

我有一个来自Google Cloud IAM的服务器帐户的JSON密钥文件 .

我正在尝试从那里下载google cloud sdk和auth,但我没有运气(如果来自Jenkinsfile):

sh 'export KUBECONFIG=$(pwd)/.kubeconfig'
sh 'export GOOGLE_APPLICATION_CREDENTIALS=$JSON'
sh 'google-cloud-sdk/bin/gcloud auth activate-service-account --key-file=$JSON'
sh 'google-cloud-sdk/bin/gcloud config set core/project proj-1'
sh 'google-cloud-sdk/bin/gcloud container clusters list'
sh 'google-cloud-sdk/bin/gcloud container clusters get-credentials clust-1 --zone us-east1-c'
sh 'kubectl get pods'

我收到错误消息:错误:谷歌:找不到默认凭据 . 有关更多信息,请参见https://developers.google.com/accounts/docs/application-default-credentials . 我还需要能够进行gcloud docker push,所以使用gcloud是可以的 .

1 回答

  • 3

    这个行为有一个神秘的github问题:

    https://github.com/kubernetes/kubernetes/issues/30617

    根据那个问题,我一直在做的一切都应该有效:

    以前,gcloud会配置kubectl以使用群集的静态客户端证书进行身份验证 . 现在,gcloud正在配置kubectl以使用服务帐户的凭据 . Kubectl只使用Application Default Credentials库,看起来这是使用JSON密钥服务帐户的ADC流程的一部分 . 我会看看是否有办法可以让这个更好 . 如果您不想将导出GOOGLE_APPLICATION_CREDENTIALS =“/ path / to / keyfile.json”添加到您的流,则可以通过将cloudsdk container / use_client_certificate属性设置为true来重新启用旧方法(使用客户端证书) . 要么:gcloud config set container / use_client_certificate True或导出CLOUDSDK_CONTAINER_USE_CLIENT_CERTIFICATE = True

    我正在使用GOOGLE_APPLICATION_CREDENTIALS变量,但唉,无法正常工作 . 我在上面尝试了“gcloud config set”选项,但这也没有用 . 最后,我使用了env变量CLOUDSDK_CONTAINER_USE_CLIENT_CERTIFCIATE,实际上最终确实有效 .

相关问题