简介: 本文会先介绍镜像推送/拉取过程的交互逻辑来梳理需要代理的所有服务,再通过搭建一个公网 HTTPS 反向代理来访问容器镜像服务来向您展示多场景代理访问模式原理。
真实业务场景可能很复杂,因安全、合规、访问限制等原因可能需要:
- 在线下 IDC 通过代理来访问云上资源。
- 在地域 A 通过云企业网来访问地域 B 的云资源。
- 金融云环境下,因金融云网络架构限制,金融云内网类型的只能在金融云内部访问,不支持在互联网上直接访问,需要通过代理来访问。
针对阿里云容器镜像服务(默认实例/企业版实例),本文会先介绍镜像推送/拉取过程的交互逻辑来梳理需要代理的所有服务,再通过搭建一个公网 HTTP 反向代理来访问容器镜像服务来向您展示多场景代理访问模式原理。
镜像推拉过程
上图展现了阿里云容器镜像服务推送/拉取的整个交互过程:
- 向 registry 发起镜像推拉请求。
- registry 返回 401 Unauthorized 的 HTTP 返回值,并且携带鉴权服务(authorization service)的地址,需要客户端去做鉴权。
- 客户端向鉴权服务发起请求以获取一个授权 token。
- 鉴权服务返回一个携带权限的 token 给客户端。
- 客户端将 token 嵌入 HTTP Authorization header 头中,再次向 registry 发起请求。
- registry 验证 token 权限无问题后,在镜像推送过程中,客户端可以向 registry 推送镜像数据;在镜像拉取过程中,registry 会向客户端颁发有时效的 OSS url 地址。
- 客户端通过 OSS url 地址拉取保存在 OSS 中的镜像数据。
整个访问阿里云容器镜像服务实例的过程涉及 Registry、Authorization Service 和 OSS 三部分。
容器镜像相关服务地址
客户端访问容器镜像服务,需要与 registry、authorization service 和 oss 三种服务通信。
域名
通过代理方式访问容器镜像服务,一般需要知道所有相关域名。
- registry 地址
-
- 公网默认实例地址格式:registry.${RegionId}.aliyuncs.com
- 内网默认实例地址格式:registry-vpc.${RegionId}.aliyuncs.com
- 企业版实例公网/内网地址:实例内可见。
- authorization service 地址
-
- 公网默认鉴权服务地址格式:dockerauth.${RegionId}.aliyuncs.com
- 内网默认鉴权服务格式:dockerauth-vpc.${RegionId}.aliyuncs.com
- 公网企业版实例服务地址格式:dockerauth-ee.${RegionId}.aliyuncs.com