Harbor安装和配置指导python
Harbor 可使用如下三种方式进行安装部署:mysql
官方下载页面 请点击我 .linux
须要安装Harbor's virtual appliance,请点击我.nginx
本篇指导主要讲解经过使用在线和离线方式去一步步安装和配置Harbor.安装的步骤基本上都是相同的。git
若是用户运行了老版本的harbor,可能须要迁移数据到新的数据库队列中,详细的步骤请**点击我**github
另外在kubernetes上面部署的步骤和看如下连接**harbor on kubernets **sql
Harbor依赖docker
Harbor 被做为一个docker容器部署在服务区上,所以,他可以被部署在任何linux发行版本。目标主机上须要安装python,docker,以及docker-compose工具。数据库
Harbor安装与配置swift
安装步骤为如下几个部分:
1.下载安装包
点击连接下载二进制包 Harbor下载 . 选择一个在线或者离线包进行下载. 使用 tar 命令解压下载的源码包
在线包安装:
$ tar xvf harbor-online-installer-<version>.tgz
离线包安装:
$ tar xvf harbor-offline-installer-<version>.tgz
2.配置 Harbor
配置参数被放在文件 harbor.cfg 中. 详细参数讲解 至少得配置 hostname 参数
* 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
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
持久化数据和日志文件
默认状况下,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
故障排查
$ 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;