我正在尝试将我的GKE集群配置为从同一个项目中的私有GCR中提取。我不使用OAuth作用域,但已经将最小特权服务帐户与默认节点池相关联,并提供了roles/storage.objectViewer权限。
然而,在尝试访问此映像时,我仍然收到以下内容:Failed to pull image "eu.gcr.io/<project>/<image>": rpc error: code = Unknown desc = Error response from daemon: unauthorized: You don't have the needed permissions to perform this operation, and you may have invalid credentials. To authenticate your request, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication
我是否还需要配置imagePullSecrets,或者roles/storage.objectViewer权限是否足够?
发布于 2018-10-27 12:31:50
造成此问题的根本原因不是在群集实例上设置访问(OAuth)作用域,从而阻止服务帐户按预期工作。
来自GCP关于计算服务帐户的文档:
必须在实例上设置访问范围以授权访问. 在创建虚拟机实例时,不能只在服务帐户上设置IAM角色,而不能忽略访问作用域。服务帐户的访问级别取决于访问范围和IAM角色的组合,因此必须配置访问作用域和IAM角色才能使服务帐户正常工作。
在访问GCR中的私有图像时所需的最小作用域可以找到这里,这些作用域的含义是这里。然后,可以按照指令这里创建集群节点的最小特权服务帐户。
正如所描述的这里一样,另一种选择是只将https://www.googleapis.com/auth/cloud-platform范围授予集群节点,这些节点授权访问所有云平台服务,然后通过节点服务帐户上的IAM角色限制访问。
通过像上面一样配置集群节点,在同一个项目中从GCR中提取私有映像不需要imagePullSecrets。
https://stackoverflow.com/questions/53008125
复制相似问题