摘要:用户访问通过使用负载均衡服务的和端口。的负载均衡服务,需要做源会话保持配置。其次,自身没有基于角色权限访问控制,所有可以访问负载均衡服务的用户都能随意的推送和拉取镜像。
在正文之前,我们先来看一下,如果没有容器,通常会如何部署 Docker Registry?关于这个问题,我简单画了一个草图:
下面简单解释一下:
Nginx:用来做 Docker Registry 的代理和软件负载均衡Keepalived 采用主备加虚拟 IP 的方式,解决 Nginx 的单点问题,保证 Nginx 服务的高可用性。
Docker Registry:这是 Docker 官方开源的私有镜像仓库项目,对应 github 上的 docker-distribution 项目,也是私有镜像仓库的核心。
Redis:大名鼎鼎的 Key-Value 数据库,很多应用场景中,将其作为缓存使用。在 Docker Registry中也不例外,用来缓存 Docker Image 的 laryer metadata,带来的好处即是 laryer metadata 的快速访问。
Storage Cluster Docker Registry:以存储驱动的方式支持多种后端存储。例如:Docker Registry2.3 目前支持如下的存储驱动:
这里简单做个补充,官方文档也有介绍如何贡献新的 Docker Registry 存储驱动。
下面我们来看一下,在 Rancher 环境下,一个简化版 Docker Registry 的部署结构图,如下图所示:
这个图是以 Rancher 下服务的视角画的,部署这样一个简单的 Docker Registry,需要四个服务,分别是外部存储服务、Redis Cache 服务、Docker Registry 服务和负载均衡服务。用户访问 Docker Registry 通过使用负载均衡服务的IP和端口。Docker Registry 的负载均衡服务,需要做源 IP会话保持配置。
到此为止,我们就在 Rancher 环境下部署了一个简化版的 Docker Registry 服务。至于我为什么说其是简化版呢?是因为现在这个版本存在一些问题。
首先,Docker Registry 本身没有 Web UI,镜像的检索,只能通过命令行工具完成,使用起来非常不方便。
其次,Docker Registry 自身没有基于角色权限访问控制,所有可以访问负载均衡服务的用户都能随意的推送和拉取镜像。
最后,Docker Registry 本身是提供了基于 token 的认证机制,需要接入 Authorization Service,这个服务官方没有实现,需要我们自己实现或者借助开源实现。
SUSE Portus 完美地解决了上述问题。下面我们看一下,在 Rancher 环境下加入 SUSE Portus的服务结构图:
Portus Core Cluster 服务负责给 Docker Registry 提供 token 认证服务和接收 Docker Registry 发送的镜像推送的通知,同步 Docker Registry 中的镜像信息到 SUSE Portus 的数据库中。该服务本身无状态,可以水平扩展PortusCronSync负责定时请求DockerRegistryAPI 同步镜像数据到SUSEPortus的数据库中。
当用户向 Docker Registry 推送一个镜像后,Docker Registry 会发送通知给 SUSE Portus,如果网络闪断,或者 SUSE Portu 服务中断,会做有限次数的重试。这样可能会导致 SUSE Portu 无法收到镜像推送的通知,造成两端数据的不一致。Portus Cron Sync 就是为了解决这个问题而存在的。
SUSE Portus 的 token 认证服务完全满足官方的认证模型,Docker 官方的认证模型如下图所示:
Docker Registry 关于认证服务的配置和通知目标服务的配置,都在 Docker Registry 容器的/etc/docker/registry/config.yml 中:
最后,我们可以按照 Rancher Catalog 的规范,制作一些基础镜像,然后把这个服务 Catalog化,做成一键部署。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/27959.html
摘要:第一部分的内容介绍了如何部署配置和确保在的运行。这一部分中,我们将介绍如何使用构建容器,以及如何使用容器配置项目。除此之外,我们还将涉及如何用建立容器并部署到上。 这是我们使用GitLab和Rancher构建CI/CD流水线系列教程的第二部分。第一部分的内容介绍了如何部署、配置和确保GitLab在Rancher的运行。这一部分中,我们将介绍如何使用GitLab CI Multi-Run...
摘要:当面临这些挑战在短短半天的时间里,使用和现有的主机,我们已经将部署好并成功运行。使用来创建应用并定义服务。 在这一部分,我们将一步步的走进Rancher,细致的探讨Rancher将如何解决在部署与容器管理时出现的种种的问题。回顾教程的第二部分,你会发现我们已经将应用的部署迁移至Docker Compose,并且已经建立了一系列工作步骤来部署我们的应用。这将使得开发人员能够轻松的对他们的...
摘要:主机端口非常昂贵,因此稍后我们会使用一个负载均衡器。注册完成后,将的配置添加到负载均衡器上。部署负载均衡器在栈中,单击添加服务旁边的下拉菜单,然后选择添加负载均衡器。如果你收到状态或的错误报告,那么需要检查负载均衡器配置,确认设置无误。 介绍 GitLab核心是集成管理Git存储库的工具。比如你希望创建一个提供服务的平台,那么GitLab将提供强大的身份验证和授权机制、工作组、问题跟踪...
摘要:注册器监视每个守护进程的事件,并在生命周期事件期间自动更新。条件可以包括亲和规则否定至软强制意味着尽可能地避免。当使用通用标记如或部署服务时,可能会出现意外的后果。月日,北京海航万豪酒店,容器技术大会即将举行。 在这篇文章中,我们将讨论如何用Rancher实现consul的服务发现。 如果你还没有准备好,推荐你阅读本系列中先前的文章:第一篇:CI /CD和Docker入门第二篇:使部署...
摘要:这相当于在原始安装程序中调整文件。警告我并没有告诉这件事,因为这可能会吓到他或任何其他专家。在创建应用商店条目的过程中,还有两个问题需要解决变量需要设置为确切值,这样用户就可以通过它连接到该实例。 Harbor Registry是VMware公司的Docker镜像管理产品。相较于其他镜像仓库,Harbor提供身份管理功能,安全性更高,支持单个主机上的多个registry,这些功能正是很...
阅读 1537·2021-11-04 16:10
阅读 2774·2021-09-30 09:48
阅读 2838·2019-08-29 11:31
阅读 1577·2019-08-28 18:22
阅读 3225·2019-08-26 13:44
阅读 1319·2019-08-26 13:42
阅读 2844·2019-08-26 10:20
阅读 753·2019-08-23 17:00