美文网首页
2022-11-08-Harbor,TLS部署

2022-11-08-Harbor,TLS部署

作者: DGFM | 来源:发表于2022-11-07 22:52 被阅读0次

Harbor,TLS部署

环境:

Ubuntu20.04

harbor版本:harbor-offline-installer-v2.6.1.tgz

下载连接:https://github.com/goharbor/harbor/releases/tag/v2.6.1

1.环境准备安装docker-ce,docker-compose;

2.安装harbor;

3.修改harbor文件,并签发证书;证书签发方法参考文档:https://goharbor.io/docs/2.6.0/install-config/configure-https/

自签名CA机构:

    # mkdir /usr/local/src/Harbor/certs        #创建证书的保存目录;

    # cd /usr/local/src/Harbor/certs

    # openssl genrsa -out ca.key 4096        #创建ca.key;

    # openssl req -x509 -new -nodes -sha512 -days 3650 \

>  -subj "/C=CN/ST=LiaoNing/L=ShenYang/O=example/OU=Personal/CN=guofei.com" \

>  -key ca.key \

>  -out ca.crt        #自签证书;

生成服务器证书:

    # mkdir harbor_private_key

    # openssl genrsa -out guofei.com.key 4096        #创建harbor用的私钥;

    # openssl req -sha512 -new \

>     -subj "/C=CN/ST=LiaoNing/L=ShenYang/O=example/OU=Personal/CN=guofei.com" \

>     -key guofei.com.key \

>     -out guofei.com.csr        #生成证书签名请求;

    # cat > v3.ext <<-EOF

> authorityKeyIdentifier=keyid,issuer

> basicConstraints=CA:FALSE

> keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment

> extendedKeyUsage = serverAuth

> subjectAltName = @alt_names

>

> [alt_names]

> DNS.1=guofei.com

> DNS.2=guofei

> DNS.3=harbor.guofei.com

> EOF        #生成x509 v3的扩展文件;

使用v3.ext文件,为harbor主机生成证书;

    # openssl x509 -req -sha512 -days 3650 \

>     -extfile v3.ext \

>     -CA ca.crt -CAkey ca.key -CAcreateserial \

>     -in guofei.com.csr \

>     -out harbor.guofei.com.crt

修改harbor.yml配置文件:/usr/local/src/Hardor/harbor/harbor.yml

    6 hostname: harbor.guofei.com

20   certificate:/usr/local/src/Harbor/certs/harbor.guofei.com.crt

    21   private_key:/usr/local/src/Harbor/certs/guofei.com.key

    37 harbor_admin_password: harbor@12345        #harbor管理用户密码;

    42   password: root@123        #数据库密码;

    50 data_volume: /data        #数据保存映射路径,一般为单独的镜像盘或者共享存储等;

4.安装harbor:

    # ./install.sh --with-trivy --with-chartmuseum        #--with-trivy:让harbor支持代码扫描;

5.客户端上传测试:

5.1    客户端想要登录https创建的harbor必须要由公钥文件(xxx.crt);

    harbor服务端:

    # scp -P 2200 ./harbor.guofei.com.crt  test@192.168.1.20:/tmp        #将公钥文件传输给目标主机;

    客户端:

    # mkdir /etc/docker/certs.d/harbor.guofei.com/        #创建公钥保存目录;

    # mv /tmp/harbor.guofei.com.crt /etc/docker/certs.d/harbor.guofei.com/        #注意目录一定不要写错;

    # chown root:root /etc/docker/certs.d/harbor.guofei.com/harbor.guofei.com.crt

    # vim /etc/hosts        #客户端配置域名解析;

192.168.1.30 harbor.guofei.com

    5.2    测试

    # docker login harbor.guofei.com        #直接使用域名登录,输入harbor账号密码;

    上传镜像测试,步骤略;

6.配置haproxy负载均衡和keepalived高可用

    环境:Harbor-LB-A,192.168.1.23,Harbor-LB-B,192.168.1.24,双节点,VIP:192.168.1.200-204;

    # find / -name keepalived*        #查找keepalived配置模板;

    # cp /usr/share/doc/keepalived/samples/keepalived.conf.vrrp /etc/keepalived/keepalived.conf

    # vim /etc/keepalived/keepalived.conf        #B节点同样配置不过要修改权重和state为BACKUP;

Harbor-LB-A:

vrrp_instance VI_1 {

    state MASTER

    interface ens33

    garp_master_delay 10

    smtp_alert

    virtual_router_id 51

priority 100        #优先级数值越大越优先;

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.200 dev ens33 label ens33:0

        192.168.1.201 dev ens33 label ens33:1

        192.168.1.202 dev ens33 label ens33:2

        192.168.1.203 dev ens33 label ens33:3

        192.168.1.204 dev ens33 label ens33:4

    }

nopreempt|preempt        #配置抢占模式;

preempt delay 300        #定义抢占模式下延迟多久再抢占;

}

Harbor-LB-B:

vrrp_instance VI_1 {

    state BACKUP

    interface ens33

    garp_master_delay 10

    smtp_alert

    virtual_router_id 51

    priority 80s

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.200 dev ens33 label ens33:0

        192.168.1.201 dev ens33 label ens33:1

        192.168.1.202 dev ens33 label ens33:2

        192.168.1.203 dev ens33 label ens33:3

        192.168.1.204 dev ens33 label ens33:4

    }

    nopreempt|preempt

    preempt delay 300

}

    重启keepalived并配置自启动;

7.配置haproxy

listen harbor-80

bind 192.168.1.200:80        #由keepalive声明的VIP;

mode tcp        

        balance source

        server 192.168.1.30 192.168.1.30:80 check inter 3s fall 3 rise 5

        server 192.168.1.31 192.168.1.31:80 check inter 3s fall 3 rise 5

listen harbor-443

        bind 192.168.1.200:443

        mode tcp

        balance source

        server 192.168.1.30 192.168.1.30:443 check inter 3s fall 3 rise 5

        server 192.168.1.31 192.168.1.31:443 check inter 3s fall 3 rise 5

如果出现haproxy因为没有绑定VIP而无法启动的状况,可以配置sysctl.conf,增加net.ipv4.ip_nonlocal_bind = 1即可;

8.访问测试https://192.168.1.200/

相关文章

网友评论

      本文标题:2022-11-08-Harbor,TLS部署

      本文链接:https://www.haomeiwen.com/subject/klygtdtx.html