本文介绍如何使用阿里云容器镜像服务提供的免密插件拉取容器镜像。
前提条件 创建Kubernetes集群
注意 如需使用免密插件,请避免手工配置拉取凭证(imagePullSecret)。因为在Kubernetes资源(例如无状态应用 Deployment)模板中配置拉取凭证(imagePullSecret)会导致免密插件失效。 如果部署的Kubernetes 资源(例如无状态应用Deployment)使用了自定义的ServiceAccount,必须先调整免密插件配置文件中service-account字段,使其作用于自定义的ServiceAccount,再进行部署资源操作。 背景信息 支持拉取容器镜像服务企业版实例和默认实例中的私有镜像。 支持拉取集群当前用户容器镜像服务中的私有镜像,通过跨账号授权可以拉取其他用户的私有镜像。 支持跨地域拉取容器镜像服务中的私有镜像。 支持集群多命名空间免密拉取。 支持的集群: 专有版Kubernetes集群:高于或等于1.11.2的版本默认支持免密拉取镜像。低于1.11.2版本的用户请手动升级,请参见升级集群。 托管版Kubernetes集群:所有版本。 Serverless Kubernetes集群:所有版本。 升级组件并对组件进行配置 升级组件。 请登录容器服务管理控制台。 在左侧导航栏选择集群 > 集群,在集群列表中对需要升级的集群单击更多 > 系统组件升级。 在组件列表区域中找到aliyun-acr-credential-helper,单击升级。系统组建升级 配置组件。 在容器服务管理控制台左侧导航栏选择应用配置 > 配置项。 选择您的集群和命名空间,单击创建。在弹出的编辑页面中的配置项名称文本框中输入acr-configuration。acr配置项 以下是一个组件的配置示例。
#acr-registry-info: | # - instanceId: cri-xxx # regionId: cn-hangzhou # domains: xxx.com,yyy.com #watch-namespace: "all" #service-account: "default" #expiring-threshold: "15m" 配置项 配置项说明 默认值 service-account 使免密插件作用于指定的服务账号。 default。 说明 若要配置多个请以逗号分隔, 若为"*", 表示支持 Namespace 下的所有 ServiceAccount。 acr-registry-info 实例信息数组, yaml多行字符串格式, 每个实例以三元组方式配置。 说明 实例信息三元组: instanceId: 实例ID,,企业版实例必须。 regionId: 可选,,默认为本地region。 domains::可选,,默认为相应实例的所有域名;。若要指定个别域名, 多个以逗号分隔。 空,表示免密拉取本地 Region 的默认实例仓库。 watch-namespace 期望能免密拉取镜像的Namespace。 default。 说明 当取值为all时,表示期望所有Namespace都能免密拉取。如果需要配置多个Namespace时,以逗号分隔。 expiring-threshold 本地Cache Token过期阈值。 15m(建议使用 15m)。 场景一:跨账号拉取私有镜像 支持A用户集群拉取B用户的私有镜像。
创建B用户的RAM角色,并确保该RAM角色拥有拉取B用户私有镜像(应在RAM上限定特定的Resource资源)的权限。在RAM访问控制页面,点击 RAM角色管理, 创建RAM角色。 在创建的B用户RAM角色上配置trust policy,允许A用户的Worker RAM角色来扮演B用户,在策略Principal处填写A用户的Worker RAM角色的RamRoleARN。RamRoleARN 确认A用户的Worker RAM角色拥有AssumeRule权限。AssumeRule权限 调整组件配置,新增assumeRoleARN配置,内容为B用户RAM角色的ramRoleARN。配置示例: data:
service-account: "default" watch-namespace: "all" expiring-threshold: "15m" notify-email: "cs@aliyuncs.com" acr-registry-info: | - instanceId: "" regionId: cn-beijing domains: registry.cn-beijing.aliyuncs.com assumeRoleARN: acs:ram::.*:role/kubernetesworkerrole-test 场景二:当前账号免密拉取失败 您需要检查当前账号 ACR 拉取的权限。
在集群控制台左侧导航栏选择集群 > 集群,在集群列表中对需要操作的集群名称进行单击。 在集群资源区域中选择 Worker RAM角色。WorkRam 在RAM访问控制页面,单击权限管理 > 权限策略管理,查看具体的权限策略。 单击 RAM角色管理,在右侧角色列表中,找到与您的角色相关联的策略。拉取权限1 在策略内容区域增加以下字段后,单击确定。 { "Action": [ "cr:Get*", "cr:List*", "cr:PullRepository" ], "Resource": "*", "Effect": "Allow" } 添加字段位置如下图所示。 修改示例
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。