当前位置: 首页 > news >正文

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

本文介绍了在离线环境(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

http://www.dtcms.com/a/293826.html

相关文章:

  • 设计模式九:构建器模式 (Builder Pattern)
  • Hexo - 免费搭建个人博客01 - 安装软件工具
  • 在 Ubuntu 22.04 上运行 cAdvisor 时遇到 mountpoint for cpu not found 错误
  • DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar),日历_家庭维护示例(CalendarView01_31)
  • Linux 环境下安装 MySQL 8.0.34 二进制 详细教程 附docker+k8s启动
  • 【Redis】在Ubentu环境下安装Redis
  • 探索 Linux 权限的奥秘:守护系统安全的关键
  • Cell Meb | 国自然热点DNA甲基化和蛋氨酸代谢共同解析癌症恶病质肌肉萎缩的机制
  • 嵌入式平台DMXRDM协议开源项目说明
  • DIOR-ViT:用于病理图像癌症分类的差分序数学习视觉Transformer|文献速递-医学影像算法文献分享
  • 总结CRC算法的几个知识点【防止遗忘】
  • C#与WPF使用mvvm简单案例点击按钮触发弹窗
  • 【Spring Cloud Gateway 实战系列】进阶篇:过滤器高级用法、动态路由配置与性能优化
  • 2025年股指期货期权交割日一览表
  • 第五章 W55MH32 UDP示例
  • 算法笔记之归并排序
  • 分享鸢尾花数据集:iris.csv,以及简单数据分析与分类预测示例(决策树)
  • Deep learning--模型压缩的五种方法
  • 沪银本周想法
  • Spring DeferredResult 实现长轮询
  • Http证书体系及证书加密流程(通信流程)
  • 第九章 W55MH32 HTTP Server示例
  • ARM入门学习方法分享
  • 2025年华为HCIA人工智能认证发展前景如何?客观分析!
  • 7月23日华为机考真题第一题100分
  • LazyVim 加载顺序
  • react18更新哪些东西
  • 5G时代PCB设计新突破:猎板三大创新技术重塑高频信号完整性
  • ES6 标签模板:前端框架的灵活利器
  • 2025年电赛--电源题赛前押题