文章目录
一、harbor简介
1.1、harbor核心组件
1、Proxy:他是一个nginx的前端代理,代理Harbor的registry,UI, token等服务。
2、db:负责储存用户权限、审计日志、Dockerimage分组信息等数据。
3、UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权。
4、jobsevice:jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log。
5、Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置。
6、Registry:镜像仓库,负责存储镜像文件。
7、Log:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。
1.2、Harbor和Registry的比较
Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势。
1、提供分层传输机制,优化网络传输
Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。
2、提供WEB界面,优化用户体验
只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。
3、支持水平扩展集群
当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。
4、良好的安全机制
企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。
5、Harbor提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制。kubernetes中通过namespace来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将kubernetes使用的镜像资源进行管理和访问控制,增强镜像使用的安全性。尤其是在多租户场景下,可以通过租户、namespace和项目相结合的方式来实现对多租户镜像资源的管理和访问控制。
二、环境信息
系统要求:
在Linux主机上: docker 17.06.0-ce +和docker-compose 1.18.0+。
下载Harbor版本的二进制文件,并按照安装和配置指南安装Harbour。
如果要在Kubernetes上部署Harbor,请使用Harbor chart。
三、部署操作
说明:harbor部署分为两部分,这里定义为服务端部署和客户端部署,服务端部署指的是harbor服务本身部署,客户端部署指的是需要从harbor镜像仓库pull镜像的主机上的操作。
3.1、服务端部署
#1、二进制包下载
wget https://github.com/goharbor/harbor/releases/download/v1.10.1/harbor-offline-installer-v1.10.1.tgz
tar axf harbor-offline-installer-v1.10.1.tgz
cd harbor
#2、创建harbor数据目录
mkdir /data/harbor
#3、编辑harbor.yml配置文件
#注释部分
https:
port: 443
certificate: /your/certificate/path
private_key: /your/private/key/path
#修改部分
hostname: server.harbor.com
http:
port: 8888
harbor_admin_password: admin #这里设置成默认,建议修改
data_volume: /data/harbor #可以根据实际情况修改,建议选择磁盘空间最大目录
#4、执行脚本
进入harbor目录
bash install.sh
#5、添加hosts
192.168.1.212 server.harbor.com
#6、配置仓库镜像地址
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["server.harbor.com:8888"],
"bip": "172.17.0.1/24",
"storage-driver": "overlay2",
"graph": "/data/docker",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
systemctl daemon-reload
systemctl restart docker
#7、login登录验证
docker login server.harbor.com:8888
输入harbor登录账号和密码
3.2、客户端部署
#1、添加hosts
192.168.1.212 server.harbor.com
#2、配置仓库镜像地址
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["server.harbor.com:8888"], #添加内容
"bip": "172.17.0.1/24",
"storage-driver": "overlay2",
"graph": "/data/docker",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
systemctl daemon-reload
systemctl restart docker
#3、login登录验证
docker login server.harbor.com:8888
输入harbor登录账号和密码
四、harbor配置https
说明:harbor配置https使用的是Nginx,配置文件可参考如下内容:
server {
server_name harbor.xxx.com;
listen 80;
location / {
proxy_pass http://172.18.1.xxx:8888;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
proxy_request_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 443 ssl;
server_name harrbor.xxx.com;
client_max_body_size 500M;
root /usr/share/nginx/html;
index index.html index.htm;
ssl_certificate /etc/nginx/4983683__xxx.com.pem;
ssl_certificate_key /etc/nginx/4983683__xxx.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://172.18.1.xxx:8888;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
proxy_request_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
}
}
效果如如下:
五、harbor自动化部署工具
由于公司业务系统特性,经常需要给不同的客户部署harbor仓库服务,所以为了快速提升部署效率,专门写了一个harbor自动化部署工具。
操作步骤如下:
#setp1:复制env.conf文件
cp env.conf.tpl env.conf
#setp2:编辑env.conf文件
vim env.conf
#setp3:
服务端部署: bash op.sh build harbor-server
客户端部署: bash op.sh build harbor-client
总结:
1、这是一个通用环境的部署工具,大家有兴趣可以下载!
2、CSDN下载地址:https://download.csdn.net/download/m0_37814112/15740092
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:企业级k8s集群监控实战