Loading

Harbor部署

一、 下载Harbor

harbor的官方地址:https://github.com/goharbor/harbor/releases

然后按照官方安装文档进行安装操作:https://github.com/goharbor/harbor/blob/master/docs/install-config/_index.md

这里的设置方法,我把自己的域名粘贴上来了,如果自己实际操作,需要将harbor.test.cn替换成你自己的域名

下载离线包

wget https://github.com/goharbor/harbor/releases/download/v1.10.4/harbor-offline-installer-v2.2.1.tgz

解压安装包

tar zxvf harbor-offline-installer-v2.2.1.tgz

二、 准备证书

设置 https

生成 CA 证书私钥

openssl genrsa -out ca.key 4096

生成 CA 证书

openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.test.cn" \
 -key ca.key \
 -out ca.crt

生成服务器证书

证书通常包含文件和文件,例如 .crt``.key ``yourdomain.com.crt ``yourdomain.com.key

生成私钥

openssl genrsa -out harbor.test.cn.key 4096

生成证书签名请求 (CSR)

调整选项中的值以反映您的组织。如果使用 FQDN 连接港口主机,则必须将其指定为公共名称 () 属性,并在密钥和 CSR 文件名中使用它。-subj ``CN

openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.test.cn" \
    -key harbor.test.cn.key \
    -out harbor.test.cn.csr

生成 x509 v3 扩展文件

无论您使用 FQDN 还是 IP 地址连接到港口主机,都必须创建此文件,以便可以为符合主题替代名称 (SAN) 和 x509 v3 扩展要求的港湾主机生成证书。替换条目以反映您的域。

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=test.cn
DNS.2=test
DNS.3=harbor.test.cn
EOF

为港口主机生成证书

将 CRS 和 CRT 文件名中的替换为harbor主机名

openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in harbor.test.cn.csr \
    -out harbor.test.cn.crt

三、向harbor和docker提供证书

生成ca.crt 、yourdomain.com.crt和 yourdomain.com.key文件后,必须将它们提供给harbor和docker,并重新配置harbor 以使用它们

将服务器证书和密钥复制到港湾主机上的证书文件夹中

cp harbor.test.cn.crt /data/cert/
cp harbor.test.cn.key /data/cert/

转换harbor.test.cn.crt为harbor.test.cn.cert ,供 Docker 使用

Docker 守护进程将crt文件解释为 CA 证书,cert文件解释为客户端证书

openssl x509 -inform PEM -in yourdomain.com.crt -out yourdomain.com.cert

将服务器证书、密钥和 CA 文件复制到港湾主机上的 Docker 证书文件夹中。您必须先创建相应的文件夹

cp harbor.test.cn.cert /etc/docker/certs.d/harbor.test.cn/
cp harbor.test.cn.key /etc/docker/certs.d/harbor.test.cn/
cp harbor.test.cn.crt /etc/docker/certs.d/harbor.test.cn/

重启docker

systemctl restart docker

四、 部署harbor

修改配置文件harbor.yml

两处需要修改

  • 修改hostname

  • 修改certificate 和key的路径

运行脚本以启用 HTTPS

[root@soft ~]# cd harbor
[root@soft harbor]# ./prepare 

结束后执行install.sh

[root@soft harbor]# ./install.sh 

harbor相关命令

查看结果,可以看到已经都是up的状态,同时启动了80和443端口映射

[root@soft harbor]# docker-compose ps
      Name                     Command                  State                          Ports                   
---------------------------------------------------------------------------------------------------------------
harbor-core         /harbor/harbor_core              Up (healthy)                                              
harbor-db           /docker-entrypoint.sh            Up (healthy)   5432/tcp                                   
harbor-jobservice   /harbor/harbor_jobservice  ...   Up (healthy)                                              
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcp                  
harbor-portal       nginx -g daemon off;             Up (healthy)   8080/tcp                                   
nginx               nginx -g daemon off;             Up (healthy)   0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp
redis               redis-server /etc/redis.conf     Up (healthy)   6379/tcp                                   
registry            /home/harbor/entrypoint.sh       Up (healthy)   5000/tcp                                   
registryctl         /home/harbor/start.sh            Up (healthy)      

停止harbor运行

[root@soft harbor]# docker-compose down -v
Stopping nginx             ... done
Stopping harbor-jobservice ... done
Stopping harbor-core       ... done
Stopping harbor-portal     ... done
Stopping redis             ... done
Stopping registryctl       ... done
Stopping harbor-db         ... done
Stopping registry          ... done
Stopping harbor-log        ... done
Removing nginx             ... done
Removing harbor-jobservice ... done
Removing harbor-core       ... done
Removing harbor-portal     ... done
Removing redis             ... done
Removing registryctl       ... done
Removing harbor-db         ... done
Removing registry          ... done
Removing harbor-log        ... done
Removing network harbor_harbor

启动harbor进程

[root@soft harbor]# docker-compose up -d
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating registry      ... done
Creating harbor-db     ... done
Creating redis         ... done
Creating harbor-portal ... done
Creating registryctl   ... done
Creating harbor-core   ... done
Creating nginx             ... done
Creating harbor-jobservice ... done

自定义 端口

在harbor目录内的docker-compose.yml文件最下面

 proxy:
    image: goharbor/nginx-photon:v2.2.1
    container_name: nginx
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
      - NET_BIND_SERVICE
    volumes:
      - ./common/config/nginx:/etc/nginx:z
      - /data/secret/cert:/etc/cert:z
      - type: bind
        source: ./common/config/shared/trust-certificates
        target: /harbor_cust_cert
    networks:
      - harbor
    dns_search: .
    ports:
      - 9084:8080
      - 9443:8443
    depends_on:
      - registry
      - core
      - portal
      - log
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "proxy"

五、 登录测试

浏览器登录https://harbor.test.cn 需要电脑配置hosts.账号admin 密码Harbor12345

在需要上传镜像的服务器上修改docker仓库连接方式为http,否则默认https无法连接。这里以harbor.test.cn上我修改的sonarqube镜像为例

vim /etc/docker/daemon.json加入

{

"insecure-registries" : ["harbor.test.cn"]

}

重启Docker生效

systemctl restart docker
posted @ 2021-04-06 14:58  zzxaaas  阅读(241)  评论(0编辑  收藏  举报