打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PaaS系列:如何在企业内网构建容器镜像代理缓存

第七期 启迪云解决方案技术顾问 林文炜

近年来,互联网技术给与我们的日常生活带来了很大的变化,随着互联网技术应用的深入,我们也看到越来越多的企业用户开始探索利用互联网技术创造新的商业机会,这其中,既有银行、保险等金融行业利用互联网技术快速提升产品上线和迭代效率,也有汽车制造、物流等行业利用互联网技术应对随时变化的业务流量,其中,容器技术给予了这个时代新的动能,使得传统企业能够借助容器,以及通过容器构筑的高效、敏捷的微服务技术栈实现业务快速上线。

相对于互联网公司来说,我国的金融、制造业由于数据安全、行业竞争等方面的要求,往往均主要采用以私有云的建设形式,经过近几年的建设,其私有云环境已经承载了大量的虚拟或物理机;随着容器、微服务、DevOps应用的深入,传统企业也开始对这些新技术在云平台的PaaS层上进行探索和运用。

在企业中采用容器技术的最大区别就是,企业往往采用严格的网络管理措施,也就是说,并不是所有用户的设备都能够直接访问互联网;但是,我们知道,容器中的很多标准化镜像都在互联网中(如Docker Hub),而且很多服务器都在国外,不仅访问速度慢,而且,众多人员频繁下载容器镜像,给予企业出口带宽造成了很大的影响。


解决方案

方案概述

首先,我们将具体架构设计如下:



可以看到,我们假设企业内部通过三层路由设备为不同网段分配不同的访问路由,这里我们假设企业内的两个子网:





最终用户访问的是VLAN102网络内的虚拟机,而VLAN102网络由于企业网络安全策略的限制,不能够访问互联网,因此,我们要解决VLAN102用户能够下载到互联网的容器镜像,并通过缓存技术,让重复下载的镜像能够缓存并实现内网容器镜像的加速。

架构介绍

这里,我们使用了Harbor作为镜像缓存和代理的节点,将其部署在VLAN101网络中的一台虚拟机上,由于需要作为缓存服务器,因此,为该虚拟机添加了外部存储卷(建议使用LVM的方式加入到Linux中,以便后期扩容)。

为了加速国内镜像的访问,我们还申请了第三方的国内镜像缓存代理,如阿里云等提供的容器镜像缓存代理,如下图所示:



安装和配置镜像代理缓存服务器

本步骤包括如下几个内容

安装Harbor → 配置Harbor基本设置 → 启动 Harbor部署 → 添加Harbor镜像代理缓存设置 →完成。

安装Harbor

这里我们以CentOS7为示例,安装部署Harbor

(1) 在VLAN101网络中,通过私有云(VMware或Openstack)平台申请一台CentOS7的虚拟机。

(2) 安装基础组件

注意:以下版本为本次部署所使用的版本,Harbor最新版本所需组件的版本,请参照Harbor官方Github所述。



安装Python

yum -y install python

python #查验python版本号



Docker compose安装

在https://github.com/docker/compose/releases页面中,查找Docker compose安装包



wget https://github.com/docker/compose/releases/download/1.18.0/docker-compose-Linux-x86_64

如果wget无法下载,则通过其他方法直接将docker-compose-Linux-x86_64文件下载下来后,手工传到服务器上

更改目录及文件、修改访问权限

mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

chmod 755 /usr/bin/docker-compose

验证是否安装成功

docker-compose --version

(3) Harbor安装

安装步骤归结为如下三个步骤

  • Download the installer;
  • Configure harbor.cfg;
  • Run install.sh to install and start Harbor;

下载地址:

https://github.com/vmware/harbor/releases



wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.3.tgz

tar xvf harbor-offline-installer-v1.5.3.tgz


配置Harbor基本设置

在Harbor的解压目录下,找到harbor.cfg,使用vi进行配置



一般情况,仅需配置hostname即可,如下所示,我们将这台服务器的访问地址命名为mirrors.tuscloud.com(提示,如果是以域名的形式添加,请预先配置好内网DNS服务器,也可以直接将IP地址作为服务器名)



启动Harbor部署

直接在当前接下目录下输入install.sh,系统会自动调用docker compose完成镜像的导入、配置和启动。

./install.sh

提示:

  • Harbor程序默认的管理员用户名/密码为admin/Harbor12345,如需要修改,则可以在部署时修改harbor.cfg中的配置。
  • 登录管理员门户,创建新的项目(project),然后就可以使用docker命令登录并推送容器镜像到该服务器上了(Harbor的镜像仓库默认侦听端口为80)。



添加Harbor镜像代理缓存设置

在Harbormu目录下,输入如下命令,将Docker服务停止

docker-compose down -v

在/ harbor/common/config/registry/config.yml文件中加入如下语句




proxy:

remoteurl: https://registry.docker-cn.com

或者使用阿里云的mirror

proxy:

remoteurl: https://XXXXXX.mirror.aliyuncs.com

重新启动Harbor服务

docker-compose up -d

到此为止,我们完成了Harbor的基本安装、基本配置、启动、添加国内镜像站点等,此时,Harbor服务器已经成为了一台具备镜像缓存、镜像代理的服务器了,接下来,我们将对Docker客户端进行设置,让其直接访问内网的Harbor镜像代理缓存服务器来获取外网镜像。

内网客户端访问


内网Docker客户端的配置

对每个Docker客户端节点或K8S节点修改配置文件/etc/sysconfig/docker

修改文件,添加私有镜像仓库为Docker的默认镜像站点

'registry-mirrors': [

'http://mirrors.tuscloud.com'

],



测试

测试下载私有仓库的images

例如,在docker hub 有下面的image:

先要在harbor UI中创建一个一样的项目(koza)



然后,用户在内网的Docker客户端上pull image:



注意:如果镜像在Docker hub的根路径下(如mysql),则无需预先在Harbor上创目录,Harbor会自动将镜像存放到默认的library目录下。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Docker Private Registry
k8s Jenkins GitLab-自动化部署项目(强推)
才云开源 ormb:像管理 Docker 容器镜像一样管理机器学习模型
老司机实战Windows Server Docker:3 单节点Windows Docker服务器简...
让Docker实现自动化运维的专业方法
Linux通过 Docker 可以托管 .NET Core啦!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服