对于与ECI同一账号下的ACR镜像,如果ACR实例是个人版或者使用标准域名的企业版,则默认免密;对于使用自定义域名的ACR企业版镜像,需要指定ACR实例来配置免密,以便简化配置,加速镜像拉取。本文为您介绍如何免密拉取使用自定义域名的ACR企业版镜像。
前提条件
请确保您已完成以下操作:
已开通容器镜像服务ACR服务,并完成了相关的RAM角色授权。
已创建ACR企业版实例并完成镜像仓库相关配置。具体操作,请参见使用企业版实例推送拉取镜像。
背景信息
阿里云容器镜像服务ACR分为个人版和企业版。其中,企业版是企业级云原生应用制品管理平台,提供容器镜像、Helm Chart ,以及符合OCI规范制品的生命周期管理,能够与容器服务Kubernetes版无缝集成,适用于业务大规模部署场景,帮助企业降低交付复杂度。更多信息,请参见容器镜像服务ACR简介。
对于ACR镜像,默认的免密支持情况如下:
与ECI同一账号下的ACR个人版镜像自动免密。
与ECI同一账号下的ACR企业版镜像,如果使用标准域名(
格式为****-registry.[Region].cr.aliyuncs.com
),则自动免密。与ECI同一账号下的ACR企业版镜像,如果使用自定义域名,则无法自动免密,需要指定ACR实例来配置免密。
非ECI同一账号下的ACR镜像不支持免密,需要下发镜像仓库认证密钥。
非ACR镜像(例如Docker镜像)不支持免密。
本文主要介绍对于使用自定义域名的ACR企业版镜像,如何配置免密。
配置ACR企业版免密访问
新创建的ACR企业版实例默认处于非连接状态,需要配置相应的ACL策略后,才可以通过公网或者专有网络访问该实例。
公网访问
开启公网访问入口后,可以直接通过公网域名地址来访问ACR企业版实例的镜像(可跨域)。具体操作,请参见配置公网的访问控制。
专有网络访问
使用专有网络VPC访问ACR企业版实例,需要开启相关授权。具体操作,请参见配置专有网络的访问控制。
配置完成后,如果ACR企业版实例使用标准域名,则无需其他配置,即可免密拉取该实例中的镜像。如果ACR实例使用自定义域名,则需要指定ACR实例来配置免密。
指定ACR实例来配置免密
对于使用自定义域名的ACR企业版镜像,需要指定ACR实例来配置免密。
OpenAPI
调用CreateContainerGroup接口创建ECI实例时,您可以设置AcrRegistryInfo相关参数来指定ACR实例。相关参数说明如下表所示。更多信息,请参见CreateContainerGroup。
设置AcrRegistryInfo相关参数时,必须设置AcrRegistryInfo.N.InstanceId。
名称 | 类型 | 示例值 | 描述 |
AcrRegistryInfo.N.RegionId | string | cn-beijing | ACR企业版实例所属地域。 |
AcrRegistryInfo.N.InstanceId | string | cri-nwj395hgf6f3**** | ACR企业版实例ID。 |
AcrRegistryInfo.N.Domain.N | array | test****-registry.example.com | ACR企业版实例的域名。 |
AcrRegistryInfo.N.InstanceName | string | test**** | ACR企业版实例的名称。 |
您可以通过OpenAPI传入AcrRegistryInfo相关参数进行配置:
示例一:指定地域、ACR实例ID和域名。
'Container.1.Image': 'test****-registry.example.com/eci_test/nginx:1.0', 'Container.1.Name': 'c1', 'Container.2.Image': 'test****-registry.example.com/eci_test/busybox:1.0', 'Container.2.Name': 'c2', #AcrRegistryInfo 'AcrRegistryInfo.1.InstanceId': 'cri-nwj395hg********', 'AcrRegistryInfo.1.Domain.1': 'test****-registry.example.com',
示例二:仅指定ACR实例ID
'Container.1.Image': 'test****-registry.example.com/eci_test/nginx:1.0', 'Container.1.Name': 'c1', #AcrRegistryInfo 'AcrRegistryInfo.1.InstanceId': 'cri-nwj395hg********'
您也可以通过SDK方式进行配置。以下为Python示例:
#!/usr/bin/env python
#coding=utf-8
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkeci.request.v20180808.CreateContainerGroupRequest import CreateContainerGroupRequest
client = AcsClient('<accessKeyId>', '<accessSecret>', 'cn-beijing')
request = CreateContainerGroupRequest()
request.set_accept_format('json')
request.set_SecurityGroupId("sg-2zeh4cev9y7ulbr*****")
request.set_VSwitchId("vsw-2zejlv7xjnw61w6z*****")
request.set_ContainerGroupName("test-cri")
request.set_Containers([
{
"Image": "test****-registry.example.com/eci_test/nginx:1.0",
"Name": "nginx"
},
{
"Image": "test****-registry.example.com/eci_test/nginx:1.2",
"Name": "nginx2"
}
])
request.set_AcrRegistryInfos([
{
"RegionId": "cn-beijing",
"InstanceId": "cri-nwj395hgf6f*****",
"Domains": [
"test****-registry.example.com"
]
}
])
response = client.do_action_with_exception(request)
# python2: print(response)
print(str(response, encoding='utf-8'))
控制台
通过弹性容器实例售卖页创建ECI实例时,您可以在容器配置处为各个容器选择镜像。选择容器镜像时,在企业镜像页签下,可以指定ACR实例中的镜像。
