zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    vue03
    vue02
    vue01
    VMware下Linux配置局域网和外网访问
    以太坊solidity编程常见错误(不定期更新)
    elasticsearch的探索之路
    一个rails项目连多个mongo数据库
    分析rails日志,计算响应率
    PostgreSQL新手上路PG::ConnectionBad (FATAL: Peer authentication failed
    cache目录没有权限
  • 原文地址:https://www.cnblogs.com/zzxaaas/p/14621930.html
Copyright © 2011-2022 走看看