文章目录
Harbor入门和安装
一、入门
1、简介
2、核心组件
3、安装
二、docker使用
1、基本配置
2、镜像代理
Harbor入门和安装
一、入门
1、简介
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。
作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
基于角色的访问控制 - 用户与 Docker 镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。镜像复制 - 镜像可以在多个 Registry 实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。图形化用户界面 - 用户可以通过浏览器来浏览,检索当前 Docker 镜像仓库,管理项目和命名空间。AD/LDAP 支持 - Harbor 可以集成企业内部已有的 AD/LDAP,用于鉴权认证管理。审计管理 - 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。国际化 - 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。RESTful API - RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。部署简单 - 提供在线和离线两种安装工具, 也可以安装到 vSphere 平台(OVA 方式)虚拟设备。
2、核心组件
Nginx(Proxy):用于代理Harbor的registry,UI, token等服务
db:负责储存用户权限、审计日志、Dockerimage分组信息等数据。
UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权
jobsevice:负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log
Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置。
Registry:原生的docker镜像仓库,负责存储镜像文件。
Log:为了帮助监控Harbor运行,负责收集其他组件的log,记录到syslog中
3、安装
3.1、helm下载charts
helm repo add harbor https://helm.goharbor.iohelm pull harbor/harbor
3.2、定制配置
3.2.1、TLS证书
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ${KEY_FILE:tls.key} -out ${CERT_FILE:tls.cert} -subj "/CN=${HOST:lanson.com}/O=${HOST:lanson.com}"kubectl create secret tls ${CERT_NAME:lanson-tls} --key ${KEY_FILE:tls.key} --cert ${CERT_FILE:tls.cert}## 示例命令如下openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=*.lanson.com/O=*.lanson.com"kubectl create secret tls harbor.lanson.com --key tls.key --cert tls.crt -n devops
原来证书是lanson.com 域名
现在用的是harbor.lanson.com 域名的。
单独创建一个
3.2.2、values-overrides.yaml配置
旧版本配置;使用自己的证书。自己的证书要兼容harbor里面的组件很麻烦
expose: type: ingress tls: certSource: "secret" secret: secretName: "harbor.lanson.com" notarySecretName: "harbor.lanson.com" ingress: hosts: core: harbor.lanson.com notary: notary-harbor.lanson.comexternalURL: https://harbor.lanson.cominternalTLS: enabled: true certSource: "secret" # core: secretName: "harbor.lanson.com" jobservice: secretName: "harbor.lanson.com" registry: secretName: "harbor.lanson.com" portal: secretName: "harbor.lanson.com" chartmuseum: secretName: "harbor.lanson.com" trivy: secretName: "harbor.lanson.com"persistence: enabled: true resourcePolicy: "keep" persistentVolumeClaim: registry: # 存镜像的 storageClass: "rook-ceph-block" accessMode: ReadWriteOnce size: 5Gi chartmuseum: #存helm的chart storageClass: "rook-ceph-block" accessMode: ReadWriteOnce size: 5Gi jobservice: # storageClass: "rook-ceph-block" accessMode: ReadWriteOnce size: 1Gi database: #数据库 pgsql storageClass: "rook-ceph-block" accessMode: ReadWriteOnce size: 1Gi redis: # storageClass: "rook-ceph-block" accessMode: ReadWriteOnce size: 1Gi trivy: # 漏洞扫描 storageClass: "rook-ceph-block" accessMode: ReadWriteOnce size: 5Gimetrics: enabled: true
新版本配置,harbor内部组件用默认证书。ingress需要用自己证书
自己的证书信息给每个namespace配置同一个
expose: #web浏览器访问用的证书 type: ingress tls: certSource: "secret" secret: secretName: "harbor.lanson.com" notarySecretName: "harbor.lanson.com" ingress: hosts: core: harbor.lanson.com notary: notary-harbor.lanson.comexternalURL: https://harbor.lanson.cominternalTLS: #harbor内部组件用的证书 enabled: true certSource: "auto"persistence: enabled: true resourcePolicy: "keep" persistentVolumeClaim: registry: # 存镜像的 storageClass: "rook-ceph-block" accessMode: ReadWriteOnce size: 5Gi chartmuseum: #存helm的chart storageClass: "rook-ceph-block" accessMode: ReadWriteOnce size: 5Gi jobservice: # storageClass: "rook-ceph-block" accessMode: ReadWriteOnce size: 1Gi database: #数据库 pgsql storageClass: "rook-ceph-block" accessMode: ReadWriteOnce size: 1Gi redis: # storageClass: "rook-ceph-block" accessMode: ReadWriteOnce size: 1Gi trivy: # 漏洞扫描 storageClass: "rook-ceph-block" accessMode: ReadWriteOnce size: 5Gimetrics: enabled: true
3.2.3、安装
#注意,由于配置文件用到secret,所以提前在这个名称空间创建好 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.cert -subj "/CN=*.lanson.com/O=*.lanson.com"kubectl create secret tls lanson.com --key tls.key --cert tls.cert -n devops helm install itharbor ./ -f values.yaml -f override.yaml -n devops
3.2.4、卸载
#卸载helm uninstall itharbor -n devops
二、docker使用
1、基本配置
1.1、使用https方式访问
由于harbor使用的是https。需要docker信任这个https;
# 把xx.cert文件 复制到 /etc/docker/certs.d/harbor.lanson.com/tls.crt
云上自定义域名
如下操作:
1、配置每个主机的 /etc/hosts文件。可指定域名地址为 公网ip
或者ingress节点所在ip
2、在 /etc/docker/certs.d/
下面准备域名文件夹(包含非默认的端口号),并把域名的 cert/crt
文件复制进去。并且修改文件名叫 xxx.crt
,不能是cert文件
1.2、不使用https访问
#修改docker配置文件{"insecure-registries":["https://test.com","192.168.1.13","更多的...."]}
2、镜像代理
# 拉取docker官方镜像。并缓存起来。harbor.lanson.com/自己的仓库名/ + /library + /镜像名:版本docker pull harbor.lanson.com/harbor-hub/library/busybox:latest# 第三方。用第三方全名 harbor.lanson.com/objs + 第三方docker pull harbor.lanson.com/objs/redislabs/redis
?博客主页:https://lansonli.blog.csdn.net?欢迎点赞 ? 收藏 ⭐留言 ? 如有错误敬请指正!?本文由 Lansonli 原创,首发于 CSDN博客??停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨