美文网首页
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