伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

Harbor部署-Docker Compose方式

来源:本站原创 浏览:93次 时间:2022-07-23

部署准备
环境准备

  • 确认操作系统版本

[root@linuxfdc ~]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)

  • 禁用防火墙和Selinux

禁用防火墙、更新SElinux。

  • 确保cfssl工具已经安装

安装证书管理工具cfssl。

  • 安装Docker、Docker Compose

安装Docker,安装Docker Compose。

准备安装包
下载最新稳定版:https://github.com/goharbor/harbor/releases/download/v2.1.0/harbor-offline-installer-v2.1.0.tgz

准备自签名证书
X.509证书包含三个文件:key,csr,crt:

  • csr

Certificate Signing Request,即证书签名请求,这个并不是证书,而是向权威证书颁发机构获得签名证书的申请,用于提交给证书颁发机构(CA)对证书进行签名的;其核心内容是一个公钥(当然还附带了一些别的信息),在生成这个申请的时候,同时也会生成一个私钥,私钥要自己保管好。

  • key

是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密。

  • crt

是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息。

创建证书存放目录

mkdir -pv /root/harbor/certcd /root/harbor/cert

生成自签CA证书配置文件
根据自己的需要自定义ca-config.json,修改为如下配置:

[kevin@linuxfdc cert]$ cat > ca-config.json << EOF{    "signing": {      "default": {        "expiry": "8760h"      },      "profiles": {        "harbor": {          "usages": [            "signing",            "key encipherment",            "server auth",            "client auth"          ],          "expiry": "8760h"        }      }    }}EOF

这个策略,有一个default默认的配置,和一个profiles,profiles可以设置多个profile,这里的profile是harbor。

  • default

默认策略,指定了证书的默认有效期是一年(8760h);

  • harbor

表示该配置(profile)的用途是为harbor生成证书及相关的校验工作;

  • signing

表示该证书可用于签名其它证书;生成的ca.pem证书中CA=TRUE;

  • server auth

表示可以该CA对server提供的证书进行验证;

  • client auth

表示可以用该CA对client提供的证书进行验证;

  • expiry

也表示过期时间,如果不写以default中的为准。

生成自签CA证书请求文件

[root@K8S-HARBOR cert]# cat > ca-csr.json << EOF{    "CN": "harbor.cluster.local",       "key": {        "algo": "rsa",        "size": 2048    },    "names": [{        "C": "CN",        "ST": "Shaanxi",        "L": "Xi'an",        "O": "Harbor",        "OU": "Harbor Security"    }]}EOF

参数介绍:

  • CN

Common Name,浏览器使用该字段验证网站是否合法,一般写的是域名。

  • key

生成证书的算法;

  • hosts

表示哪些主机名(域名)或者IP可以使用此csr申请的证书,为空或者""表示所有的都可以使用;

  • names

一些其它的属性:

  • C: Country,国家
  • ST: State,州或者是省份
  • L: Locality Name,地区,城市
  • O: Organization Name,组织名称,公司名称(在K8S中常用于指定Group,进行RBAC绑定)
  • OU: Organization Unit Name,组织单位名称,公司部门
    生成自签名证书
[root@K8S-HARBOR cert]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca  2020/09/08 16:38:48 [INFO] generating a new CA key and certificate from CSR2020/09/08 16:38:48 [INFO] generate received request2020/09/08 16:38:48 [INFO] received CSR2020/09/08 16:38:48 [INFO] generating key: rsa-20482020/09/08 16:38:49 [INFO] encoded CSR2020/09/08 16:38:49 [INFO] signed certificate with serial number 262743830065161790985636603005551175222856124160[root@K8S-HARBOR cert]# lltotal 24-rw-r--r-- 1 10000 kevin  310 Sep  8 16:30 ca-config.json-rw-r--r-- 1 root  root  1029 Sep 18 15:18 ca.csr-rw-r--r-- 1 10000 kevin  246 Sep 18 15:15 ca-csr.json-rw------- 1 root  root  1679 Sep 18 15:18 ca-key.pem-rw-r--r-- 1 root  root  1411 Sep 18 15:18 ca.pem

该命令会生成运行CA所必需的文件ca-key.pem(私钥)和ca.pem(证书),还会生成ca.csr(证书签名请求),用于交叉签名或重新签名。

将ca.pem转换为ca.crt
[root@K8S-HARBOR cert]# openssl x509 -outform der -in ca.pem -out ca.crt

  • .crt:是用于存放证书,它是2进制形式存放的,不含私钥。
  • .pem:跟crt的区别是它以ASCII来表示的,可查看。
    生成harbor.cluster.local证书请求文件
[root@K8S-HARBOR cert]# cat > harbor-csr.json << EOF{    "CN": "harbor.cluster.local",    "hosts": [      "local",      "cluster.local",      "harbor.cluster.local"    ],    "key": {        "algo": "rsa",        "size": 2048    },    "names": [{        "C": "CN",        "ST": "Shaanxi",        "L": "Xi'an",        "O": "Harbor",        "OU": "Harbor Security"    }]}EOF

生成harbor.cluster.local证书

[root@K8S-HARBOR cert]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=harbor harbor-csr.json | cfssljson -bare harbor2020/09/18 15:38:18 [INFO] generate received request2020/09/18 15:38:18 [INFO] received CSR2020/09/18 15:38:18 [INFO] generating key: rsa-20482020/09/18 15:38:19 [INFO] encoded CSR2020/09/18 15:38:19 [INFO] signed certificate with serial number 1603817886858326945020091932057509312669645658232020/09/18 15:38:19 [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable forwebsites. For more information see the Baseline Requirements for the Issuance and Managementof Publicly-Trusted Certificates, v.1.1.6, from the CA/Browser Forum (https://cabforum.org);specifically, section 10.2.3 ("Information Requirements").[root@K8S-HARBOR cert]# lltotal 40-rw-r--r-- 1 10000 kevin  310 Sep  8 16:30 ca-config.json-rw-r--r-- 1 root  root  1002 Sep 18 15:21 ca.crt-rw-r--r-- 1 root  root  1029 Sep 18 15:18 ca.csr-rw-r--r-- 1 10000 kevin  246 Sep 18 15:15 ca-csr.json-rw------- 1 root  root  1679 Sep 18 15:18 ca-key.pem-rw-r--r-- 1 root  root  1411 Sep 18 15:18 ca.pem-rw-r--r-- 1 root  root  1127 Sep 18 15:38 harbor.csr-rw-r--r-- 1 10000 kevin  341 Sep 18 15:15 harbor-csr.json-rw------- 1 root  root  1679 Sep 18 15:38 harbor-key.pem-rw-r--r-- 1 root  root  1525 Sep 18 15:38 harbor.pem

查看证书信息

  • 查看cert(证书信息)**

[root@K8S-HARBOR cert]# cfssl certinfo -cert harbor.pem

  • 查看CSR(证书签名请求)信息

[root@K8S-HARBOR cert]# cfssl certinfo -csr harbor.csr
部署Harbor
不建议在Harbor上启用https,而是在将Harbor放置到一个LB的后边,配置LB的SSL访问,并在LB上做SSL termination。

解压

[root@K8S-HARBOR ~]# tar -vxf harbor-offline-installer-v2.1.0.tgz -C /root/

修改配置

[root@K8S-HARBOR harbor]# cp harbor.yml.tmpl harbor.yml

修改harbor.yml里hostname、certificate、private_key、data_vo
lume等参数:

# Configuration file of Harbor# The IP address or hostname to access admin UI and registry service.# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.hostname: harbor.cluster.local #修改主机名# http related confighttp:  # port for http, default is 80. If https enabled, this port will redirect to https port  port: 80# https related confighttps:  # https port for harbor, default is 443  port: 443  # The path of cert and key files for nginx  certificate: /root/harbor/cert/harbor.pem      #修改证书地址  private_key: /root/harbor/cert/harbor-key.pem  #修改证书地址...# The default data volumedata_volume: /data/apps/harbor  #修改数据存放目录...

安装Harbor

  • Load镜像

[root@K8S-HARBOR harbor]# docker load -i harbor.v2.1.0.tar.gz

  • 生成docker-compose.yml配置文件,增加其他功能

[root@K8S-HARBOR harbor]# ./prepare --with-clair --with-notary --with-trivy --with-chartmuseum
#--with-clair 镜像安全扫描插件
#--with_notary 内容信任(镜像签名)插件
#--with-trivy 镜像漏洞检测插件
#--with-chartmuseum Chart仓库服务

  • 启动Harbor

docker-compose up -d

  • 查看日志

Harbor采用的是Log Driver是syslog,所以产生的日志目录为:

/var/log/harbor/
使用Harbor
下面操作需要在访问harbor.cluster.local的节点上执行,以K8S-PROD-M1节点为例展示。

配置证书
因为我们配置使用的是自签名的证书,因此需要将前面生成的CA证书拷贝到需要访问Harbor仓库的每个Docker主机的/etc/docker/certs.d/{registry-hostname}/下。

  • 创建证书存放目录

[root@K8S-PROD-M1 ~]# mkdir -p /etc/docker/certs.d/harbor.cluster.local

* 获取自签证书

[root@K8S-PROD-M1 ~]# scp root@192.168.122.90:/root/harbor/cert/ca.pem /etc/docker/certs.d/harbor.cluster.local/

**配置域名解析**

[root@K8S-PROD-M1 ~]# vi /etc/hosts
...

添加Harbor域名解析

192.168.122.90 harbor.cluster.local

**更新Docker配置**

vi /etc/docker/daemon.json
{
"insecure-registries": ["harbor.cluster.local"]
}
[root@K8S-PROD-M1 ~]# systemctl reload docker && systemctl status docker

**Docker Client访问**默认管理员账户:admin/Harbor12345.

[kevin@linuxfdc ~]$ docker login harbor.cluster.local
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /home/kevin/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

**Harbor UI测试访问*** NAT配置iptables -t nat -A PREROUTING -m tcp -p tcp -d 192.168.191.32 --dport 8080 -j DNAT --to-destination 192.168.122.90:80iptables -t nat -A PREROUTING -m tcp -p tcp -d 192.168.191.32 --dport 8443 -j DNAT --to-destination 192.168.122.90:443* 访问Harbor UI默认管理员账户:admin/Harbor12345.https://harbor.cluster.local

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net