k8s:docker compose离线部署haborV2.13.1及采用外部的postgresql及redis数据库

发布于:2025-07-24 ⋅ 阅读:(21) ⋅ 点赞:(0)

本文介绍了在离线环境(Hygon C86 32核处理器+麒麟系统)部署Harbor 2.13.1的详细过程。主要内容包括:1)准备离线安装包并解压;2)配置harbor.yml文件(设置访问地址、HTTPS证书、管理员密码等);3)修改docker-compose.yml为关键服务添加privileged权限;4)调整docker配置添加insecure-registries并重启服务;5)最后执行docker-compose启动Harbor服务。文中特别强调了HTTPS证书配置、权限问题处理等关键步骤,为离线环境搭建企业级Docker镜像仓库提供了完整解决方案。

一、离线环境


CPU:Hygon C86 7285 32-core Processor
操作系统:麒麟操作系统
containerd:1.7.27

二、harbor概述

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。

2.1依赖组件

2.2软件环境

2.3下载离线版本


https://github.com/goharbor/harbor/releases 

2.4上传服务及解压

cd /app/KubeSphere/setup

#tar -zxvf harbor-offline-installer-v2.13.1.tgz  

2.5.修改harbor.yml配置

cd /app/KubeSphere/setup/harbor

cp harbor.yml.tmpl harbor.yml

采用外部的postgresql及redis数据库
 

hostname: 172.23.123.117
http:
  port: 8082
https:
  port: 8443
  certificate: /usr/local/cert/server.crt
  private_key: /usr/local/cert/server.key
harbor_admin_password: Harbor12345
data_volume: /app/harbor

external_database:
   harbor:
     host: "172.23.123.118"
     port: "5432"
     db_name: "registry"
     username: "registry"
     password: "Sinops1234~"
     ssl_mode: disable
     max_idle_conns: 2
     max_open_conns: 0


external_redis:
   host: 172.23.123.118:6379
   password: Sinops1234~
   tlsOptions:
     enable: false
   registry_db_index: 1
   jobservice_db_index: 2
   trivy_db_index: 5
   idle_timeout_seconds: 30

 注:必须保障/usr/local/cert下有两个证书,否则执行./prepare脚本时会报错。

🔹 hostname: 172.23.123.117

  • 含义:Harbor 服务的访问地址(主机名或 IP 地址)。

  • 说明:用户通过浏览器或 Docker 客户端访问 Harbor 时使用的地址。这里配置的是 IP 地址 172.23.123.117,也可以配置为域名(如 harbor.example.com)。

  • 注意:如果配置为 IP 地址,使用 HTTPS 时可能需要额外处理证书信任问题。


🔹 http:

port: 8082

  • 含义:Harbor 的 HTTP 协议监听端口。

  • 说明:如果不启用 HTTPS,可以通过 http://172.23.123.117:8082 访问 Harbor 的 Web 页面或 API。

  • 注意:生产环境中建议启用 HTTPS,禁用 HTTP。


🔹 https:

port: 8443

certificate: /usr/local/cert/server.crt

private_key: /usr/local/cert/server.key

  • 含义:HTTPS 配置,用于启用安全访问。

  • port:HTTPS 协议监听端口,用户可通过 https://172.23.123.117:8443 访问 Harbor。

  • certificate:SSL 证书文件路径。

  • private_key:SSL 证书对应的私钥文件路径。

  • 说明:通过 HTTPS 可以加密传输数据,提升安全性。需要确保证书有效且被客户端信任。


🔹 harbor_admin_password: Harbor12345

  • 含义:Harbor 管理员账号(默认用户名为 admin)的初始密码。

  • 说明:首次登录 Harbor Web 界面时使用用户名 admin 和此密码登录。建议登录后立即修改为更安全的密码。

  • 注意:该配置只在首次部署时生效,修改密码后不会自动更新此配置项。


🔹 data_volume: /app/harbor

  • 含义:Harbor 数据的持久化存储路径。

  • 说明:Harbor 所有持久化数据(如镜像、数据库、日志、配置等)将存储在此目录下。

  • 用途:通常用于 Docker 容器挂载宿主机目录,以保证数据持久化,即使容器被删除也不会丢失数据。

  • 注意:需确保该路径在宿主机上存在,并具有合适的权限。

2.5.证书详见我另外一篇博客

通过HTTPS访问Harbor2.13.1 的配置_docker-compose harbor 2.13.1 配置-CSDN博客

三、harbor概述

3.1、执行prepare脚本


用于生成安装Harbor所需的文件
./prepare 

3.2、修改docker-compose.yml文件

将registry、registryctl、core、jobservice、proxy加上privileged: true,防止出现各种权限错误。

services:
  log:
    image: goharbor/harbor-log:v2.13.1
    container_name: harbor-log
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - DAC_OVERRIDE
      - SETGID
      - SETUID
    volumes:
      - /var/log/harbor/:/var/log/docker/:z
      - type: bind
        source: ./common/config/log/logrotate.conf
        target: /etc/logrotate.d/logrotate.conf
      - type: bind
        source: ./common/config/log/rsyslog_docker.conf
        target: /etc/rsyslog.d/rsyslog_docker.conf
    ports:
      - 127.0.0.1:1514:10514
    networks:
      - harbor
  registry:
    image: goharbor/registry-photon:v2.13.1
    container_name: registry
    restart: always
    privileged: true
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    volumes:
      - /app/harbor/registry:/storage:z
      - ./common/config/registry/:/etc/registry/:z
      - type: bind
        source: /app/harbor/secret/registry/root.crt
        target: /etc/registry/root.crt
      - type: bind
        source: ./common/config/shared/trust-certificates
        target: /harbor_cust_cert
    networks:
      - harbor
    depends_on:
      - log
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://localhost:1514"
        tag: "registry"
  registryctl:
    image: goharbor/harbor-registryctl:v2.13.1
    container_name: registryctl
    env_file:
      - ./common/config/registryctl/env
    restart: always
    privileged: true
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    volumes:
      - /app/harbor/registry:/storage:z
      - ./common/config/registry/:/etc/registry/:z
      - type: bind
        source: ./common/config/registryctl/config.yml
        target: /etc/registryctl/config.yml
      - type: bind
        source: ./common/config/shared/trust-certificates
        target: /harbor_cust_cert
    networks:
      - harbor
    depends_on:
      - log
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://localhost:1514"
        tag: "registryctl"
  core:
    image: goharbor/harbor-core:v2.13.1
    container_name: harbor-core
    env_file:
      - ./common/config/core/env
    restart: always
    privileged: true
    cap_drop:
      - ALL
    cap_add:
      - SETGID
      - SETUID
    volumes:
      - /app/harbor/ca_download/:/etc/core/ca/:z
      - /app/harbor/:/data/:z
      - ./common/config/core/certificates/:/etc/core/certificates/:z
      - type: bind
        source: ./common/config/core/app.conf
        target: /etc/core/app.conf
      - type: bind
        source: /app/harbor/secret/core/private_key.pem
        target: /etc/core/private_key.pem
      - type: bind
        source: /app/harbor/secret/keys/secretkey
        target: /etc/core/key
      - type: bind
        source: ./common/config/shared/trust-certificates
        target: /harbor_cust_cert
    networks:
      harbor:
    depends_on:
      - log
      - registry
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://localhost:1514"
        tag: "core"
  portal:
    image: goharbor/harbor-portal:v2.13.1
    container_name: harbor-portal
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
      - NET_BIND_SERVICE
    volumes:
      - type: bind
        source: ./common/config/portal/nginx.conf
        target: /etc/nginx/nginx.conf
    networks:
      - harbor
    depends_on:
      - log
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://localhost:1514"
        tag: "portal"

  jobservice:
    image: goharbor/harbor-jobservice:v2.13.1
    container_name: harbor-jobservice
    env_file:
      - ./common/config/jobservice/env
    restart: always
    privileged: true
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    volumes:
      - /app/harbor/job_logs:/var/log/jobs:z
      - type: bind
        source: ./common/config/jobservice/config.yml
        target: /etc/jobservice/config.yml
      - type: bind
        source: ./common/config/shared/trust-certificates
        target: /harbor_cust_cert
    networks:
      - harbor
    depends_on:
      - core
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://localhost:1514"
        tag: "jobservice"
  proxy:
    image: goharbor/nginx-photon:v2.13.1
    container_name: harbor-nginx
    restart: always
    privileged: true
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
      - NET_BIND_SERVICE
    volumes:
      - ./common/config/nginx:/etc/nginx:z
      - /app/harbor/secret/cert:/etc/cert:z
      - type: bind
        source: ./common/config/shared/trust-certificates
        target: /harbor_cust_cert
    networks:
      - harbor
    ports:
      - 8082:8080
      - 8443:8443
    depends_on:
      - registry
      - core
      - portal
      - log
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://localhost:1514"
        tag: "proxy"
networks:
  harbor:
    external: false
 

3.3、修改docker配置文件

// 1、打开daemon.json

vi /etc/docker/daemon.json

 {
  "insecure-registries": ["172.23.123.117", "172.23.123.117:8443"],
  "selinux-enabled": false,
  "iptables": true
}

其中主机ip“172.23.123.117”是安装harbor的主机ip,而端口“8443”是harbor.yml中设置的https.port值。

// 2、应用docker配置,并重启docker

systemctl daemon-reload

systemctl restart docker

3.4、安装harbor

#cd /app/KubeSphere/setup/harbor

docker compose up -d


网站公告

今日签到

点亮在社区的每一天
去签到