共计 7582 个字符,预计需要花费 19 分钟才能阅读完成。
这篇文章主要讲解了“Harbo 如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“Harbo 如何使用”吧!
基本架构
Harbor 安装和配置指导
Harbor 可以使用以下三种方式进行安装部署:
在线安装: 使用者可以直接从 docker hub 上下载 harbor 的官方镜像。
离线安装: 使用者需要下载源码包,并进行自己构建 images。源码包比较大
Virtual Appliance: 一般使用这种方式在第三方平台搭建一个私有仓库作为平台的组建比如 vsphere 等, 需要下载 OVA 版本的 Harbor.
官方下载页面 请点击我 .
需要安装 Harbor s virtual appliance, 请点击我.
本篇指导主要讲解通过使用在线和离线方式去一步步安装和配置 Harbor. 安装的步骤基本上都是相同的。
如果用户运行了老版本的 harbor, 可能需要迁移数据到新的数据库队列中,详细的步骤请 ** 点击我 **
另外在 kubernetes 上面部署的步骤和看以下链接 **harbor on kubernets **
Harbor 依赖
Harbor 被作为一个 docker 容器部署在服务区上,因此,他能够被部署在任何 linux 发行版本。目标主机上需要安装 python,docker,以及 docker-compose 工具。
Python 需要 2.7+. 需要注意的是,最好安装对应 linux 发型版本的 python。
Docker engine 需要 1.10+ 目前比较新的版本 1.12. docker 安装
Docker Compose 需要 1.6.0+. Compose 安装
Harbor 安装与配置
安装步骤为以下几个部分:
下载安装包
修改相关配置 harbor.cfg;
运行 install.sh 去安装和启动 harbor;
1. 下载安装包
点击链接下载二进制包 Harbor 下载 . 选择一个在线或者离线包进行下载. 使用 tar 命令解压下载的源码包
在线包安装:
$ tar xvf harbor-online-installer- version .tgz
离线包安装:
$ tar xvf harbor-offline-installer- version .tgz
2. 配置 Harbor
配置参数被放在文件 harbor.cfg 中. 详细参数讲解 至少得配置 hostname 参数
hostname: 配置目标主机的主机名, 被用来访问 Harbor ui 和镜像仓库的,可以配置为 ip 地址和全域名, 比如 192.168.1.10 or reg.yourdomain.com. 不要使用 localhost or 127.0.0.1 为主机名
ui_url_protocol: (http or https. 默认协议为 http) 该协议被用来访问 the UI and the token/notification 服务. 默认是 http. 想要设置 https 协议, 请看链接 配置 Harbor 支持 https 协议.
Email settings: 配置 Harbor 来发送邮件,当然改配置并不是必须的 . 注意: 默认的 ssl 链接没有被启用, 如果 SMTP 需要 ssl 支持,可以设置以下参数以支持。
email_ssl = true
* email_server = smtp.mydomain.com
* email_server_port = 25
* email_username = sample_admin@mydomain.com
* email_password = abc
* email_from = admin sample_admin@mydomain.com
* email_ssl = false
harbor_admin_password: 设置管理员内部密码,该密码紧紧在第一次启动 Harbor 的时候生效. 在之后这个设置被忽略,管理员的密码将在 UI 中重新设置。默认的用户名和密码如下:admin/Harbor12345 .
auth_mode: 被用来认证的方式,默认使用的是 db_auth, 该认证会被肢解存储到数据库中。如果需要设置 LDAP 方式认证需要使用 ldap_auth.
ldap_url: LDAP 认证方式的 URL (e.g. ldaps://ldap.mydomain.com). 当 auth_mode 被设置为 ldap_auth 的时候。
ldap_searchdn: 链接 LDAP/AD 服务的用户域 (e.g. uid=admin,ou=people,dc=mydomain,dc=com).
ldap_search_pwd: 为上面设定的用户域设置密码 ldap_searchdn.
ldap_basedn: 基础域为方便寻找一个用户 e.g. ou=people,dc=mydomain,dc=com. 仅当 auth_mode is 设置为 ldap_auth 的时候才使用
ldap_filter: 用户搜索过滤 (object >
ldap_uid: 该参数被用来匹配一个 LDAP 搜索的用户,可以使 uid,cn,email 或者其他的方式。
ldap_scope: 用户搜索范围, 1-LDAP_SCOPE_BASE, 2-LDAP_SCOPE_ONELEVEL, 3-LDAP_SCOPE_SUBTREE. Default is 3.
db_password: mysql 数据库 root 用户密码 db_auth.
self_registration: (on or off. Default is on) 启用和关闭用户注册功能. 当被关闭,新用户职能通过 admin 用户去创建。_注意: 当 auth_mode 被设置为 ldap_auth, self-registration 会被一直关闭, 该参数也会被忽略。
use_compressed_js: (on or off. 默认为 on) 生产中使用,建议将该参数设置为 on. 在部署模式中将参数设置为 off 以至于 js 文件能够被分开去修改.
max_job_workers: (默认为 3) 设置在任务服务中最大的工作副本,每一个 image 副本任务,会有一个 worker 从仓库中将所有的 tag 同步到远端。增大这个值回允许更多当前的副本任务,然而因为每个 worker 都会去消耗一定的网络 /cpu/io 等资源,必须根据系统的资源进行合理设置该值。
secret_key: 该值为加解密在副本策略中远端仓库的密码,长度为 16 位字符。生产中必需修改该值. NOTE: After changing this key, previously encrypted password of a policy can not be decrypted.
token_expiration: token 过期时间,默认 30 分钟
verify_remote_cert: (on or off. 默认 on) 该参数决定了当 harbor 盒远端的 registry 实例交互的时候是否使用 SSL/TLS . 设置为 off 的时候,一般远端的 registry 会采用自签名或者未受信任的证书。
customize_crt: (on or off. 默认为 on) 当设置为 on 的时候,会使用脚本去创建私钥和 root 证书去认证 registry 的 token
以下参数:crt_country, crt_state, crt_location, crt_organization, crt_organizationalunit, crt_commonname, crt_email 被用来省城 key。设置为 off 的时候,key 和 root 证书可以被应用在外部的源中。为 Harbor token 服务自定义证书
3. 配置后端存储 (可选的)
默认,Harbor 会存储镜像文件到本地文件系统。在生产环境中应该考虑使用一些后端存储去代替本地文件系统,比如 S3,openstack swift 或者 ceph 等。可以在文件 templates/registry/config.yml 去选择更新存储方式。比如你想使用 Openstack Swift 作为你的存储后端,对应的配置会如下:
storage:
swift:
username: admin
password: ADMIN_PASS
authurl: http://keystone_addr:35357/v3/auth
tenant: admin
domain: default
region: regionOne
container: docker_images
注意: 关于 docker registry 在存储后端的详细信息可以查看相应链接 Registry 配置详情 .
4. 完成 Harbor 的安装并进行启动 Harbor
一旦 harbord.cfg 和存储后端被配置完成就可以使用 install.sh 脚本进行安装和启动 Harbor 服务。需要注意的是,执行该操作可能会花费一些,因为需要从 docker hub 上去下载一些 Harbor 相关依赖的 images 文件。
$ sudo ./install.sh
如果上面脚本执行完成之后,一切工作正常,你就可以在浏览器上输入配置文件 harbor.cfg 中配置的 hostname 并且使用配置的 admin 用户来访问 Harbor 服务。http://reg.yourdomain.com 默认的管理员用户名密码:username/password:admin/Harbor12345 .
使用 admin 用户登录进去后首先创建一个项目,比如 myproject. 接下来用户就可以使用 docker login reg.yourdomain.com 登录并进行 push 镜像。(默认的 registry 服务监听的 80 端口):
sh
$ docker login reg.yourdomain.com
$ docker push reg.yourdomain.com/myproject/myrepo:mytag
重要提示: 默认安装的 Harbor 使用的是 HTTP 协议,因此,当用户在使用的时候,需要在 docker daemon 的配置文件中增加以下参数 –insecure-registry reg.yourdomain.com 并且重启 docker.
更多使用 Harbor 的详情信息,请点我 **Harbor 使用指南 ** .
5. 配置 Harbor 以支持 HTTPs 访问
Harbor 不会使用任何认证进行运行,默认使用 http 来提供服务。这种方式对于部署或者测试环境会相应的简单一些,但是在生产环境中不建议那样做。为了启用 HTTPS 的支持,请看下面的链接 配置 Harbor 以支持 https.
管理 Harbor 的生命周期
你可以使用 docker-compose 去管理 Harbor 的整个生命周期。以下是相应的管理命令,需要注意的是 docker-compose 必须得在有 docker-compose.yml 文件的目录下执行:
停止 Harbor 服务:
$ sudo docker-compose stop
Stopping harbor_proxy_1 ... done
Stopping harbor_ui_1 ... done
Stopping harbor_registry_1 ... done
Stopping harbor_mysql_1 ... done
Stopping harbor_log_1 ... done
Stopping harbor_jobservice_1 ... done
启动 Harbor 服务:
$ sudo docker-compose start
Starting harbor_log_1
Starting harbor_mysql_1
Starting harbor_registry_1
Starting harbor_ui_1
Starting harbor_proxy_1
Starting harbor_jobservice_1
如果需要修改 Harbor 的配置,首先需要停掉正在运行的 Harbor 实例,更新 harbor.cfg 文件,再次运行 install.sh
$ sudo docker-compose down
$ vim harbor.cfg
$ sudo install.sh
删除 Harbor 容器,保存镜像文件和 Harbor 的数据库文件:
$ sudo docker-compose rm
Going to remove harbor_proxy_1, harbor_ui_1, harbor_registry_1, harbor_mysql_1, harbor_log_1, harbor_jobservice_1
Are you sure? [yN] y
Removing harbor_proxy_1 ... done
Removing harbor_ui_1 ... done
Removing harbor_registry_1 ... done
Removing harbor_mysql_1 ... done
Removing harbor_log_1 ... done
Removing harbor_jobservice_1 ... done
删除 Harbor 的数据库信息和镜像文件 (一般为了纯净安装):
$ rm -r /data/database
$ rm -r /data/registry
更多 docker-compose 命令使用指南
持久化数据和日志文件
默认情况下,regirstry 的数据被持久化到目标主机的 /data/ 目录。当 Harbor 的容器呗删除或者重新创建的时候,数据不会有任何改变。另外,Harbor 使用 rsyslog 去收集每个容器的日志,默认的,政协日志文件被存储在目标主机的 /var/log/harbor/ 目录以便进行 troubleshooting
配置 Harbor 监听自定义端口
默认情况下,Harbor 监听 80 和 443(需要配置) 来作为 admin 用户登录的入口,当然也可以自定义该端口。
Http 协议
1. 修改 docker-compose.yml 文件 替换 ui 中的端口映射, e.g. 8888:80.
proxy:
image: library/nginx:1.11.5
restart: always
volumes:
- ./config/nginx:/etc/nginx
ports:
- 8888:80
- 443:443
depends_on:
- mysql
- registry
- ui
- log
logging:
driver: syslog
options:
syslog-address: tcp://127.0.0.1:1514
tag: proxy
2. 修改模版文件 templates/registry/config.yml
, 在参数 $ui_url 之后增加自定义端口 :8888 .
auth:
token:
issuer: registry-token-issuer
realm: $ui_url:8888/service/token
rootcertbundle: /etc/registry/root.crt
service: token-service
3. 运行 install.sh 更新并启动 harbor.
$ sudo docker-compose down
$ sudo install.sh
HTTPS 协议
1. 启用 Https 协议指南 guide.
2. 修改 docker-compose.yml 配置文件
修改 compose 文件中的 443 端口映射,比如:4443:443.
proxy:
image: library/nginx:1.11.5
restart: always
volumes:
- ./config/nginx:/etc/nginx
ports:
- 80:80
- 4443:443
depends_on:
- mysql
- registry
- ui
- log
logging:
driver: syslog
options:
syslog-address: tcp://127.0.0.1:1514
tag: proxy
3. 修改模版文件 templates/registry/config.yml
在 $ui_url 之后增加自定义端口,比如 :4443
auth:
token:
issuer: registry-token-issuer
realm: $ui_url:4443/service/token
rootcertbundle: /etc/registry/root.crt
service: token-service
4. 运行 install.sh 更新启动 Harbor.
$ sudo docker-compose down
$ sudo install.sh
故障排查
当 harbor 不正常工作的时候,可以使用一下命令查看正在运行的容器信息:
$ sudo docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------
harbor_jobservice_1 /harbor/harbor_jobservice Up
harbor_log_1 /bin/sh -c crond rsyslo ... Up 0.0.0.0:1514- 514/tcp
harbor_mysql_1 /entrypoint.sh mysqld Up 3306/tcp
harbor_proxy_1 nginx -g daemon off; Up 0.0.0.0:443- 443/tcp, 0.0.0.0:80- 80/tcp
harbor_registry_1 /entrypoint.sh serve /etc/ ... Up 5000/tcp
harbor_ui_1 /harbor/harbor_ui Up
如果有容器处于非 up 状态,可以检查容器日志 /var/log/harbor
2. 对 harbor 进行弹性负载均衡 nginx 反响代理的时候可以查看以下文件,
make/config/nginx/nginx.conf 中的相关配置 location /, location /v2/ location /service/.
proxy_set_header X-Forwarded-Proto $scheme;
感谢各位的阅读,以上就是“Harbo 如何使用”的内容了,经过本文的学习后,相信大家对 Harbo 如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!