「开源摘星计划」harbor配置文件解析

679 阅读6分钟

本文已参与「开源摘星计划」,欢迎正在阅读的你加入。

活动链接:github.com/weopenproje…


前言

在部署harbor的时候,需要对配置文件做一些修改,以此来适配我们的业务环境。

​​Harbor的安装包并不直接提供harbor的配置文件,而是需要我们自己去创建配置文件​​。

那如何去创建配置文件呢?harbor官方也提供了一个配置文件的模板,我们可以将模板文件复制过来,再修改下就可以制作成harbor的配置文件了!

本篇文章仅讲配置文件的内容,Harbor其它知识点请参考楼主主页文章。

1、根据模板文件创建harbor配置文件

在harbor安装包解压后,在目录下的​harbor.yml.tmpl文件是配置文件模板,将其复制为​harbor.yml​(harbor配置文件)

说明:本文以​2.3.1​版本为演示,其它版本可以参考。

[root@Over app]# cd harbor/
[root@Over harbor]# cp harbor.yml.tmpl  harbor.yml

2、打开harbor配置文件

使用vi/vim打开刚才创建的配置文件harbor.yml查看配置文件详细情况。

[root@Over harbor]# vim harbor.yml
#服务访问地址:
hostname: 192.168.2.250
# 访问管理UI和注册表服务的IP地址或主机名。不能使用localhost或127.0.0.1,因为Harbor需要由外部客户端访问。值填写Harbor服务的主机IP或主机名(域名访问方式)。
# 服务访问方式(端口)
http:
  port: 80
#http的端口,默认为80。如果启用https,此端口将重定向到https端口。模板文件模式禁用https安全访问方式(适合初学者或测试环境的配置)。生产环境需要将https部分取消注释,以增加Harbor的安全性。
https:
  port: 443  # https安全访问端口,默认443
  certificate: /etc/docker/CA/harbor.pem   # 访问harbor的证书
  private_key: /etc/docker/CA/harbor-key.pem   # 访问harbor的私钥

#启用https安全端口,还需要手动配置证书。官方是以openssl工具创建证书。

# https证书证书配置部分参考楼主文章:企业内网如何搭建安全的Harbor服务?(超详细)

# 是否启用Harbor组件之间的tls通信​
# 默认为禁用状态。

# internal_tls:   # 是否启用所有Harbor组件之间的tls通信
#   enabled: true    # 将enabled设置为true表示内部tls已启用
#   dir: /etc/harbor/tls/internal   #证书和密钥文件的存放目录
# 是否启用外部代理
# 如果启用,那么主机名将不再使用,默认禁用,值为外部代理的地址。
# external_url: https://reg.mydomain.com:8433

# 配置管理员密码
# 管理员admin的初始密码,默认为Harbor12345,只在第一次安装harbor时起作用,安装时不需要修改,登录Harbor UI管理界面后,为保证密码的安全性,强烈建议修改。
harbor_admin_password: Harbor12345

## 数据库配置:
## harbor数据库配置部分,harbor使用​postgresql​作为数据库。

database:
  password: root123
  max_idle_conns: 100
  max_open_conns: 900
data_volume: /app/harbor/data
password:     # harbor数据库root用户的密码,生产环境建议修改;
max_idle_conns:  # 空闲连接池中的最大连接数。如果小于等于0,则不保留空闲连接。
max_open_conns:  #打开到数据库的最大连接数。如果小于等于0,则对打开的连接数没有限制。
data_volume:   #数据存储目录,harbor中的每个组件的数据都存储在该指定路径下的子目录中。
#是否启用外部存储​
#如果需要使用外部存储,则将该部分的注释去掉,生产环境建议使用外部存储,
# storage_service:
#   ca_bundle
#   filesystem:
#     maxthreads: 100    # 最大线程数
#   redirect:  # 是否启用重定向
#     disabled: false
ca_bundle:   #自定义根ca证书的路径,该证书将被注入信任库。
filesystem:   #存储后端,默认为文件系统,选项包括文件系统、azure、gcs、s3、swift、NFS和oss存储。本专栏后面会出后端存储的文章。

#扫描器配置
#是否启用Trivy扫描器来扫描镜像的漏洞,默认未启用。

trivy:
  ignore_unfixed: true  # 是否显示已修复的漏洞
  skip_update: false  # 是否启用从github上下载的Trivy数据
  insecure: false # 是否跳过证书验证
  # github_token: xxx   # github的token值
#扫描器的详细使用见本专栏《Harbor镜像仓库漏洞扫描_如何检测你的镜像是否安全?》一文。

jobservice:
  max_job_workers: 10  #job服务的最大数量
# webhook配置,默认启用,默认的值为10.

notification:
  webhook_job_max_retry: 10   # webhook job的最大重试次数

Chart配置
harbor不仅可以存储镜像,还可以存Chart,当helm服务器使用。

chart:
  absolute_url: disabled   # 是否启用

# 日志配置:配置harbor的日志信息
log:
  level: info   # 日志级别
  local:             # 配置本地存储中的日志
    rotate_count: 50  
    rotate_size: 200M
    location: /var/log/harbor

rotate_count:  #日志文件在被删除之前旋转的次数,如果为0,旧版本将被删除而不是旋转。
rotate_size: #只有当日志文件的大小大于该值字节时,才会对其进行旋转。如果size后跟k,则假定大小以KB为单位。如果使用M,则大小以兆字节为单位,如果使用G,则大小以千兆字节为单位。那么100、100k、100M和100G。
location:   #主机上存储日志的目录。


#是否启用外部系统日志
#是否将日志放到另外的主机上(默认关闭该功能)

# external_endpoint:
  #   protocol: tcp
  #   host: localhost
  #   port: 5140
protocol: 用于将日志传输到外部端点的协议,选项为tcp或udp。
host: 外部主机的地址(主机IP)。
port:外部主机的端口号。


Harbor版本号
因为配置文件是使用模板文件创建的,需要将版本号修改为安装包一样的版本,否则按照会失败。

_version: 2.3.1

是否启用外部数据库
如果要使用外部数据库,请取消注释该部分来启用。注意与前面的外部数据区分。

目前Harbor仅支持PostgraSQL数据库,需要手动在外部的PostgreSQL上创建harbor、notary_signer、notary_servers三个数据库,Harbor启动时会自动在对应数据库下生成表。配置如下:

# external_database:
#   harbor:
#     host: harbor_db_host   # 数据库主机地址
#     port: harbor_db_port  # 数据库端口
#     db_name: harbor_db_name  # 数据库名称
#     username: harbor_db_username  # 连接该数据库的用户名
#     password: harbor_db_password  # 连接数据库的密码
#     ssl_mode: disable   # 启用SSL模式
#     max_idle_conns: 2   # 最大空闲连接数
#     max_open_conns: 0
#   notary_signer:
#     host: notary_signer_db_host
#     port: notary_signer_db_port
#     db_name: notary_signer_db_name
#     username: notary_signer_db_username
#     password: notary_signer_db_password
#     ssl_mode: disable
#   notary_server:
#     host: notary_server_db_host
#     port: notary_server_db_port
#     db_name: notary_server_db_name
#     username: notary_server_db_username
#     password: notary_server_db_password
#     ssl_mode: disable

#是否启用外部redis缓存服务器
# external_redis:  #  配置外部 Redis 实例。
#   host: redis:6379  # redis的地址:端口
#   password:   # 连接外部redis服务的密码
#   #sentinel_master_set:    
#   registry_db_index: 1 
#   jobservice_db_index: 2
#   chartmuseum_db_index: 3
#   trivy_db_index: 5    # Trivy扫描器的数据库索引
#   idle_timeout_seconds: 30

​host: redis:  redis的地址:端口;
​sentinel_master_set:  ​必须设置为支持redis+sentinel,仅在使用 Sentinel 模式时设置;
​registry_db_index: ​注册表的数据库索引;
​jobservice_db_index:​  job服务的数据库索引;
UAA身份验证
是否通过自签名证书托管的uaa实例证书的信任,2.4.0开始不支持该配置。
# uaa:
#   ca_file: /path/to/ca

全局代理
为组件配置http代理,组件不需要通过http代理相互连接。如果要禁用代理,请从“components”中删除组件,如果要使用代理进行复制,必须启用代理。如果要禁用代理,请将域添加到“no_proxy”字段后面,

proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - trivy

#启用指标采集组件
是否启用指标采集组件来收集Harbor相关的指标,默认未启用,该部分配置主要用来监控Harbor的,详细请参考本专栏文章《Prometheus监控Harbor实战(全网首发)》
metric:
   enabled: true
   port: 9090
   path: /metrics