? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 企业级Registry服务(harbor)部署

?

修订记录

修订日期

修订者

???修订内容

??备注

?20180527

? ? ? brekalinux

?Harbor部署

?初稿









?

?

使用参考地址:?https://vmware.github.io/harbor/cn/

部署参考地址:?https://github.com/vmware/harbor/blob/master/docs/installation_guide.md

Github地址:?https://github.com/vmware/harbor.git

HTTPS配置:https://github.com/goharbor/harbor/blob/master/docs/configure_https.md?

1.?技术背景介绍;

Harbor Vmwar 公司开源的 企业级的 Docker Registry 管理项;

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,??通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

2.功能介绍;

??基于角色的访问控制?- 用户与Docker镜像仓库通过项目进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。

??镜像复制?- 镜像可以在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。

??图形化用户界面?- 用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。

??AD/LDAP 支持?- Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。

??审计管理?- 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。

??国际化?- 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。

??RESTful API?- RESTful API 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。

??部署简单?- 提供在线和离线两种安装工具,?也可以安装到vSphere平台(OVA方式)虚拟设备。

?

3.硬件支持要求;

?

????

资 源

??

最低配置

??

最佳配置

?

?

????CPU

?

??2CPU

?

?4CPU 或更高 ?

?

????Mem

?

??4GB

?

?8GB 或更高 ?

?

????Disk

?

?

??40GB

?

?160GB或更高

?

4.软件版本要求;

?

?

软件名

?

?

???软件版本

?

?

????????????????????相关描述

?

Python

?

?

2.7 版本或更高

?

默认cenots?系统自带,注意:2.7版本以上

?

Docker engine

?

?

1.10版本或更高

?

参考地址https://docs.docker.com/engine/installation/

?

Docker Compose

?

1.6版本或更高

?

?

?

参考地址:?https://docs.docker.com/compose/install/

?

Openssl

?

?最新优先

?

?

???生成证书和密钥

?

?

5.网络和端口;

?

?

服务监听端口

?

?

???协议

?

????????????描述

?

?443?

?

?HTTPS

Harbor UIAPI请求这个端口上的https协议请求。

?

?4443

?

?HTTS

连接到Docker信任服务,只有在启认证时才需要。

?

??80?

?

?HTTP

Harbor UIAPI请求这个端口上的http协议请求

?

?

?

6.?harbor部署实战;


6.0?部署NGINX反向代理harbor;

yum -y install nginx



upstream reg {

? ? ? ? server your ip:80 max_fails=3 fail_timeout=10s;

}

server{

? ? ? ? listen? ? ?80;

? ? ? ? server_name xxxx;? ?访问域名

client_max_body_size 5000000m; # 限制客户端最大的Body-Size

? ? ? ? access_log /data/log/nginx/reg.log;


? ? ? ? location / {


rewrite ^(.*)$? https://$host$1 permanent;

? ? ? ? }

}



server{

? ? ? ? listen? ? ?443? ssl http2;

? ? ? ? server_name? xxx;? #访问域名?

? ? ? ? client_max_body_size 5000000m; # 限制客户端最大的Body-Size

? ? ? ? access_log /data/log/nginx/reg.log;

? ? ? ? ssl_certificate? ? ? ? ###证书路径;

? ? ? ? ssl_certificate_key? ##证书私钥;

? ? ? ? location / {

? ? ? ? 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_pass http://reg;

? ? ? ? proxy_store off;

? ? ? ? proxy_buffering off;

? ? ? ? proxy_cache_use_stale off;

? ? ? ? proxy_connect_timeout 10s;

? ? ? ? proxy_send_timeout 30s;

? ? ? ? proxy_read_timeout 30s;

? ? ? ? add_header Access-Control-Allow-Origin *;

? ? ? ? add_header Access-Control-Allow-Headers X-Requested-With;

? ? ? ? add_header Access-Control-Allow-Methods GET,POST,OPTIONS,HEAD;


? ? ? ? }

}


6.1 部署流程;

?

?????(1).获取相关harbor软件;?(需提前安装docker,Docker Compose,openssl)

?????(2).生成证书和密钥;

?????(3).配置harbor.cfg;

? ? ? ? ?(4.运行install.sh 启动harbor;

?

6.2?获取软件;

???

???软件获取地址:?https://github.com/vmware/harbor/releases

????https://github.com/vmware/harbor/archive/v1.5.0.zip

????$ tar xvf harbor-online-installer-<version>.tgz (在线安装)

? ?$ tar xvf harbor-offline-installer-<version>.tgz (离线安装)

?

6.3 配置https证书;

?

6.3.1 配置自签名证书;

?

(1).进入目录创建CA认证;

?cd?/app/harbor/cert

?[root@docker-harbor]#localdomain=reg.ops.com

?

(2).根据自己需要进行修改

openssl?req?-nodes?-subj?"/C=CN/ST=GuangDong/L=DongGuan/CN=$localdomain"?-newkey?rsa:2048?-keyout?$localdomain.key?-out?$localdomain.csr?

?

openssl?x509?-req?-days?3650?-in?$localdomain.csr?-signkey?$localdomain.key?-out?$localdomain.crt?

?

openssl?x509?-req?-in?$localdomain.csr?-CA?$localdomain.crt?-CAkey?$localdomain.key?-CAcreateserial?-out?$localdomain.crt?-days?10000?

?

?

6.3.2?配置商业证书;

?

注意:

https 商业证书需要提前在证书的提供商进行购买;

?

1.将商业的的证书和密钥放置到harbor.cfg 配置文件下:

例如:

ssl_cert = /app/harbor/cert/ops.com.crt ?#证书

ssl_cert_key = //app/harbor/cert/ops.com.key.pem #密钥

?

?

?6.3.3?docker 配置自签名客户端认证;

?

?

注意:

??????1.自签名docker?需要配置客户端认证

??????2.商业证书则不用配置,因客户端能识别;???

??????3.否则docker login reg.chehejia.com 会出现如下错误??

???????ping?attempt?failed?with?error:?Get?https://reg.chehejia/v2/:?x509:

? ?????certificate?is?valid?for?server,?not?reg.chehejia.com?

??

[root@docker-harbor]#?mkdir -p?/etc/docker/certs.d/reg.chehejia.com/

[root@docker-harbor]#?cp /app/harbor/cert/reg.ops.com.crt /etc/docker/certs.d/reg.ops.com//ca.crt

?

?

?

6.4?调整配置文件;

?

?

[root@k8s-cluster-master01 harbor]# grep -v "^#" harbor.cfg |grep -v "^$"

_version = 1.5.0

hostname = reg.ops.com ??###访问域名地址

ui_url_protocol = https ?#配置访问协议,默认为http;如果要启动SSl认证https

max_job_workers = 50

customize_crt = on

#######可选的https证书配置地址?

ssl_cert = /app/harbor/cert/ops.com.crt ?#证书

ssl_cert_key = /chj/app/harbor/cert/ops.com.key.pem #密钥#

secretkey_path = /data

######################

admiral_url = NA

log_rotate_count = 50

log_rotate_size = 200M

http_proxy =

https_proxy =

no_proxy = 127.0.0.1,localhost,ui

email_identity =

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

email_insecure = false

harbor_admin_password = Harbor12345 ?##web控制台登录密码

auth_mode = db_auth

ldap_url = ldaps://ldap.mydomain.com配置####ldap###

ldap_basedn = ou=people,dc=mydomain,dc=com

ldap_uid = uid

ldap_scope = 2

ldap_timeout = 5

ldap_verify_cert = true

ldap_group_basedn = ou=group,dc=mydomain,dc=com

ldap_group_filter = objectclass=group

ldap_group_gid = cn

ldap_group_scope = 2 ####配置ldap?完毕########

self_registration = on

##数据库密码###

token_expiration = 30 #?token过期时间,默认为30分钟

project_creation_restriction = everyone

db_host = mysql

db_password = root123

db_port = 3306

db_user = root

redis_url = redis:6379

clair_db_host = postgres

clair_db_password = password

clair_db_port = 5432

clair_db_username = postgres

clair_db = postgres

uaa_endpoint = uaa.mydomain.org

uaa_clientid = id

uaa_clientsecret = secret

uaa_verify_cert = true

uaa_ca_cert = /path/to/ca.pem

registry_storage_provider_name = filesystem

registry_storage_provider_config =

?

6.5?运行harbor 服务;

?

[root@docker-harbor]# ./install.sh

?

注意:

???1.运行前必须安装docker?并启动docker?服务,Docker Compose服务;

???2.运行启动过程中会拉去对应的docker?镜像 比较慢,耐心等待完毕后自动启动;

???3.?建议提前配置docker?加速器(可选择阿里云加速器);

?

[root@docker-harbor]# docker-compose stop ###关闭harbor

?

?

7.docker部署;

7.1 docker 部署;

?

?
[root@docker-harbor]#?yum?install?-y?yum-utils?\
??device-mapper-persistent-data?\
??lvm2
?
[root@docker-harbor]#?yum-config-manager?\
????--add-repo?\
????https://download.docker.com/linux/centos/docker-ce.repo
?
?
[root@docker-harbor]#?yum-config-manager?--enable?docker-ce-edge
?
?
[root@docker-harbor]#?yum?install?docker-ce
?
[root@docker-harbor]#?systemctl?start?docker

?

?

7.2?部署Docker Compose

?

[root@docker-harbor]#?curl?-L?https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname?-s)-$(uname?-m)?-o?/usr/local/bin/docker-compose
?
[root@docker-harbor]#?chmod?+x?/usr/local/bin/docker-compose
?
[root@docker-harbor]#?docker-compose?--version
docker-compose?version?1.21.2,?build?a133471

?

8.使用教程;

8.1?harbor?测试;

?

1.访问域名;

?image.png

?

?

?

(2).默认管理员账号密码;

????

?????admin/Harbor12345

?

?

(3)新建项目;

?image.png


4.添加用户;

image.png

?

?

(5).添加项目成员;

image.png


image.png

?

8.2 使用docker?上传镜像至harbor;

(1).网拉取一个测试镜像(nginx)

image.png

?

(2)标记本地镜像,将其归入harbor仓库。

?

[root@docker-harbor ~]# docker tag docker.io/nginx:latest reg.chehejia.com/public/nginx:v1

?

(3).配置登录harbor;

?

image.png

?

(4).push?镜像到harbor;

图片3_WPS图片.png?

(5).?Harbor?控制台查看;

image.png

?image.png

?

9.技术总结;

???

1.?harbor?使用非常便捷,

? ? ? 2.? ?严格的权限划分,对应镜像使用权限严格控制;

???3? ? . k8s?docker?易用;

???4.?部署技术成本较小(Compose 统一管理)

???5.? ??方便支持ldap接入适用企业用户;

???6.? ??审计查询方便;

?

?

?

?