前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >集成Harbor镜像仓库(HTTPS)

集成Harbor镜像仓库(HTTPS)

作者头像
Criss@陈磊
发布2019-08-01 19:20:15
1.9K0
发布2019-08-01 19:20:15
举报
文章被收录于专栏:测试技术圈测试技术圈

一、下拉镜像

Harbor主页在:https://vmware.github.io/harbor/,Harbor是由Vmware中国团队开发并开源的Docker镜像仓库。

点击“INSTALL GUIDE OFHARBOR“链接到github。

安装方式非常简便,https://github.com/vmware/harbor/releases页面选择要下载的安装包。有在线安装与离线安装两类可选,建议先在线安装实验一次(离线安装是把依赖的镜像数下载下来)。

比如下载了harbor-online-installer-v1.1.2.tgz,

wgethttps://github.com/vmware/harbor/releases/download/v1.1.2/harbor-online-installer-v1.1.2.tgz

解压它:tar xvf harbor-online-installer-v1.1.2.tgz,进入解压后的目录:

在线安装时在此步并不下拉镜像,在下面的启动部分才开始下拉镜像。

二、配置

  1. 配置harbor.cfg。

重点关注下面几项:

hostname = reg.myhub.comui_url_protocol = httpsssl_cert = /root/cert/reg.myhub.com.crtssl_cert_key = /root/cert/reg.myhub.com.keyharbor_admin_password = Harbor12345

hostname =reg.myhub.com就是你Harbor主机的hostname,也可以是IP;

ui_url_protocol=https,指定走https协议;

ssl_cert =/root/cert/reg.myhub.com.crt

ssl_cert_key =/root/cert/reg.myhub.com.key 指定证书地址,如果是内网就自己生成证书,公网用就购买证书吧。

harbor_admin_password = Harbor12345 指定你登陆Harbor的管理员密码,当然是建议你改一下,不然大家都知道这个密码了。

2 证书配置

由于咱们配置了证书,内网咱们自己生成证书。

创建证书目录:

mkdir –p /root/cert/

进入 / root /cert目录,创建CA认证:

1 创建CA证书openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt2 生成证书签名请求openssl req -newkey rsa:4096 -nodes -sha256 -keyout reg.myhub.com.key -out reg.myhub.com.csr3 生成主机证书openssl x509 -req -days 365 -in reg.myhub.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out reg.myhub.com.crt如果想用IP访问就做如下操作: echo subjectAltName = IP:192.168.4.101 > extfile.cnf openssl x509 -req -days 365 -in reg.myhub.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out reg.myhub.com.com.crt4 拷贝证书到客户端cp ca.crt /etc/docker/certs.d/reg.myhub.com/ca.crt

如果机器要通过docker loginreg.myhub.com登陆仓库,需要cp ca.crt /etc/docker/certs.d/reg.myhub.com/ca.crt。/etc/docker/certs.d/reg.myhub.com/目录不存在时自己创建,注意是复制ca.crt,不是reg.myhub.com.crt。

三、启动容器

在harbor目录:

./install

一切顺利可以看到

docker ps可以看到有7个容器

Proxy:Harbor 的 registry,UI, token 等服务,通过一个前置的反向代理统一接收浏览器、Docker 客户端的请求,并将请求转发给后端不同的服务。

Registry:负责储存 Docker 镜像,并处理 dockerpush/pull 命令。由于我们要对用户进行访问控制,即不同用户对 Docker image 有不同的读写权限,Registry 会指向一个 token 服务,强制用户的每次 docker pull/push 请求都要携带一个合法的 token, Registry 会通过公钥对 token 进行解密验证。

Coreservices:这是 Harbor 的核心功能,主要提供以下服务:

UI:提供图形化界面,帮助用户管理 registry 上的镜像(image),并对用户进行授权;

webhook:为了及时获取registry 上 image 状态变化的情况,在 Registry 上配置 webhook,把状态变化传递给 UI 模块;

token 服务:负责根据用户权限给每个 docker push/pull 命令签发 token。Docker 客户端向Registry 服务发起的请求,如果不包含 token,会被重定向到这里,获得 token 后再重新向 Registry进行请求;

Database:为 coreservices 提供数据库服务,负责储存用户权限、审计日志、Docker image 分组信息等数据。

Log collector:为了帮助监控 Harbor 运行,负责收集其他组件的 log,供日后进行分析。各个组件之间的关系如下图所示:

通过https://reg.myhub.com进行访问,如果你是在Window机器上访问时无法解析reg.myhub.com,请在hosts中加一行配置:

[ip] reg.myhub.com

docker登陆:

四、修改默认的https端口

默认Https端口是443,如果你想修改访问端口。修改三个文件:

Harbor目录下的docker-compose.yml文件:

主要是红色圈住部分,8088是Http访问端口,8443是Https访问端口,80是nginx的默认端口,443是nginx默认的https访问端口。

common/templates/nginx/nginx.https.conf,此文件作为harbor配置模板,我们修改如下部分:

指定转发的https端口。

common/templates/registry/config.yml 文件,修改如下:

加上一个端口,默认是443。

然后再一次./install。会删除先前的配置,重新配置,然后启动Harhor相关的容器。

访问http://reg.myhub.com:8088时自动定向到https://reg.myhub.com:8443。

此时我们用docker login reg.myhub.com:8443登陆时会报错,需要在登陆的机器上加上证书,路径是

/etc/docker/certs.d/reg.myhub.com:8433/ca.crt。先前咱们的路径是/etc/docker/certs.d/reg.myhub.com,由于端口变了此路径要随之变化。

五、集成Harbro到Rancher

INFRASTRUCTURE-Registries中添加一个注册,Rancher会读取此配置。

前面咱们配置的Https端口是8443,在此配置如下:

如果Harbor admin密码没修改就填写Harbor12345。

如果你不修443端口为8443,在此就不用设置端口,直接https://reg.myhub.com。

如果你不想在此配置镜像仓库的访问账号,你可以修改Docker的启动参数,可以参考官网:

https://docs.docker.com/engine/reference/commandline/dockerd/

使用--registry-mirror指定镜像仓库地址。

也可以修改/etc/docker/daemon.json文件(与版本有关,我使用的是docker1.13版本),加入registry-mirrors的地址,然后重启docker(servicedocker restart)。

{ "registry-mirrors": ["https://192.168.4.101:8443"]}

六、测试连通

Shell容器打一个镜像tag,然后上传到reg.myhub.com:8443。

1 从官方下载一个nginx镜像:docker pull nginx

2 Harbor仓库中建立一个devops项目,并且设置为公开。

3 打一个tag:

docker tag nginx:latest reg.myhub.com:8443/devops/nginx:0.1

4 上传些镜像到reg.myhub.com:8443仓库:

docker push reg.myhub.com:8443/devops/nginx:0.1

5 Rancher中建立容器:

有人可能不喜欢有端口(8443)在地址栏,在镜像连接串中,你可以保持默认的443端口。

Harbor现在已经加入到了Rancher的应用商店,所以还可以直接在Rancher Catalog中加入Harbor。

在Catalog中搜索Harbor

View Details:

其中harbor-host=192.168.4.102,habor-lb-host=192.168.4.102是label,需要在Host中进行配置。

配置完成后提交,Rancher帮助建立一个名为project-harbor的栈,harbor-lb是Rancher提供的Haproxy代理,proxy是Harbor自带的nginx代理。

登陆密码默认是Vmware123!。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 质问 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、下拉镜像
  • 二、配置
  • 三、启动容器
  • 四、修改默认的https端口
  • 五、集成Harbro到Rancher
  • 六、测试连通
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档