部署Harbor并启用Https

下载安装包

harbor 版本 下载需要的在线或离线安装包

  • 下载安装包

    以离线安装包为例

    wget https://github.com/goharbor/harbor/releases/download/v2.8.2/harbor-offline-installer-v2.8.2.tgz
    
  • 解压

    tar -zxvf harbor-offline-installer-v2.8.2.tgz
    harbor/harbor.v2.8.2.tar.gz
    harbor/prepare
    harbor/LICENSE
    harbor/install.sh
    harbor/common.sh
    harbor/harbor.yml.tmpl
    

启用HTTPS

要配置HTTPS,必须创建SSL证书。可以使用由受信任的第三方CA签名的证书,也可以使用自签名证书。本节介绍如何使用OpenSSL创建CA以及如何使用CA签署服务器证书和客户端证书。也可以使用其他CA提供商。

生成证书颁发机构证书

在生产环境中,应该从 CA 获得证书。在测试或开发环境中,您可以生成自己的 CA。要生成 CA 证书,请运行以下命令

  • 生成 CA 证书私钥

    openssl genrsa -out ca.key 4096
    
  • 生成 CA 证书

    调整 -subj 选项中的值以反映您的组织。如果使用 FQDN 连接 Harbor 主机,则必须将其指定为通用名称 (CN) 属性

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

生成服务器证书

证书通常包含一个.crt文件和一个.key文件,例如harbor.com.crt和harbor.com.key

  • 生成私钥

    openssl genrsa -out harbor.com.key 4096
    
  • 生成证书签名请求 (CSR)

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

    openssl req -sha512 -new \
        -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.com" \
        -key harbor.com.key \
        -out harbor.com.csr
    
  • Generate an x509 v3 extension file

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

    cat > v3.ext <<-EOF
    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1=harbor.com
    DNS.2=harbor
    DNS.3=hostname
    EOF
    
  • 使用 v3.ext 文件为您的 Harbor 主机生成证书

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

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

向 Harbor 和 Docker 提供证书

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

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

    cp harbor.com.crt /data/cert/
    cp harbor.com.key /data/cert/
    
  • 将 harbor.com.crt 转换为 harbor.com.cert,供 Docker 使用

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

    openssl x509 -inform PEM -in harbor.com.crt -out harbor.com.cert
    
  • 将服务器证书、密钥和 CA 文件复制到 Harbor 主机上的 Docker 证书文件夹中。必须先创建适当的文件夹

    cp harbor.com.cert /etc/docker/certs.d/harbor.com/
    cp harbor.com.key /etc/docker/certs.d/harbor.com/
    cp ca.crt /etc/docker/certs.d/harbor.com/
    

    如果将默认 nginx 端口 443 映射到其他端口,请创建文件夹 /etc/docker/certs.d/harbor.com:port 或 /etc/docker/certs.d/harbor_IP:port

  • 重启Docker

    systemctl restart docker
    

修改harbor.yml

  • 修改文件名

    mv harbor.yml.tmpl harbor.yml
    
  • 编辑harbor.yml

    # 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.com
    
    ......
    # https related config
    https:
    # https port for harbor, default is 443
    port: 443
    # The path of cert and key files for nginx
    certificate: /data/cert/harbor.com.crt
    private_key: /data/cert/harbor.com.key
    .......
    

安装docker-compose

  • 下载docker-compose
    docker-compose版本下载对应的文件

    sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
  • 给docker-compose执行权限

    chmod +x /usr/local/bin/docker-compose
    

部署Harbor

  • 运行脚本 prepare 以启用 HTTPS

    ./prepare
    
  • 运行脚本 install.sh 以安装Harbor

    ./instal.sh
    

本地登录

  • 配置hosts文件即可实现本地登录

    vi /etc/hosts
    
    # 添加如下内容   部署harbor的服务器地址   harbor域名
    192.168.0.3  harbor.com
    
  • 登录
    # 用户名密码已在harbor.yml中设置,默认为admin/harbor12345

    docker login harbor.com
    
    Username: admin
    Password: 
    WARNING! Your password will be stored unencrypted in /root/.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

    • 将部署harbor的服务器上的证书复制到目的节点docker证书目录

      scp /etc/docker/certs.d/harbor.com/ca.crt  root@node:/etc/docker/certs.d/harbor.com/
      
    • 在目的节点的hosts文件中添加 192.168.0.3 harbor.com

    • 登录

      docker login harbor.com
      

WEB登录

harbor安装后,默认的端口是443,访问 https://localhost:443 即可登录,若是云服务器则需要做端口转发

posted @ 2023-06-20 23:58  文十七  阅读(474)  评论(0编辑  收藏  举报