如何添加并配置GKE节点池访问权限范围以拉取容器注册表私有镜像
解决方案
操作前提
GKE 节点的 OAuth 授权范围绑定在节点池配置上,修改配置会触发节点池滚动重建,建议提前做好业务高可用保障,或选择业务低峰期操作。
方法1:通过gcloud命令手动修改
如果需要直接快速修改现有节点池,可使用--add-scopes参数追加权限,不会覆盖原有已配置的scope:
- 先查询集群下的节点池名称
gcloud container node-pools list --cluster [CLUSTER_NAME] --region [REGION]
- 执行节点池更新命令,添加镜像拉取所需权限
gcloud container node-pools update [NODE_POOL_NAME] \ --cluster [CLUSTER_NAME] \ --region [REGION] \ --add-scopes https://www.googleapis.com/auth/devstorage.read_only
方法2:适配Ansible自动化部署配置
使用Ansible的google.cloud.gcp_container_node_pool模块管理节点池配置时,在config.oauth_scopes字段中加入目标权限即可,注意要同时保留原有需要的其他权限,避免权限丢失:
- name: 配置GKE节点池OAuth权限范围 google.cloud.gcp_container_node_pool: name: 你的节点池名称 cluster: "{{ gke_cluster_name }}" location: "{{ gke_region }}" project: "{{ gcp_project_id }}" config: oauth_scopes: # 新增的私有镜像拉取权限 - https://www.googleapis.com/auth/devstorage.read_only # 原有需保留的其他权限,示例如下,可按实际场景调整 - https://www.googleapis.com/auth/logging.write - https://www.googleapis.com/auth/monitoring - https://www.googleapis.com/auth/cloud-platform state: present
无节点重建替代方案
如果不想触发节点重建,也可以直接给节点池关联的服务账号授予存储只读权限,效果和添加OAuth scope一致:
- 手动命令:
gcloud projects add-iam-policy-binding [PROJECT_ID] --member serviceAccount:[节点池服务账号邮箱] --role roles/storage.objectViewer - Ansible可通过
google.cloud.gcp_iam_binding模块实现对应权限配置。
内容的提问来源于stack exchange,提问作者Azeez Lukman
相关产品推荐
相关产品推荐

