我需要为 GKE 节点池配置哪些最低权限才能从同一项目中的专用 GCR 存储库中提取?



我正在尝试将我的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权限是否足够?

此问题的根本原因是没有在群集实例上设置访问(OAuth(作用域,从而阻止服务帐户按预期工作。

来自GCP关于计算服务帐户的文档:

必须在实例上设置访问作用域才能授权访问

创建虚拟机实例时,不能仅在服务帐户上设置IAM角色并省略访问作用域。服务帐户的访问级别由访问作用域和IAM角色的组合决定,因此您必须同时配置访问范围和IAM角色,才能使服务帐户正常工作。

访问GCR中的私有映像时所需的最小作用域可以在此处找到,这些作用域的含义可以在此处发现。然后,可以按照此处的说明创建集群节点的最低权限服务帐户。

如本文所述,一种替代方案是仅向授权访问所有云平台服务的集群节点授予https://www.googleapis.com/auth/cloud-platform作用域,然后限制通过节点服务帐户上的IAM角色进行访问。

通过如上所述配置集群节点,imagePullSecrets不需要在同一项目中从GCR中提取私有映像。

最新更新