当前位置:网站首页>云原生(三十六) | Kubernetes篇之Harbor入门和安装
云原生(三十六) | Kubernetes篇之Harbor入门和安装
2022-07-26 09:40:00 【华为云】
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/harbor3.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: true3.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 devops3.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节点所在ip2、在/etc/docker/certs.d/下面准备域名文件夹(包含非默认的端口号),并把域名的cert/crt文件复制进去。并且修改文件名叫xxx.crt,不能是cert文件 3、建议配置 ingress节点所在ip 。这样我们使用域名来到了ingress节点。ingress节点的nginx监听到了此域名,则转发给指定服务
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边栏推荐
- QT handy notes (III) use qtcharts to draw a line chart in VS
- Matlab Simulink realizes fuzzy PID control of time-delay temperature control system of central air conditioning
- 苹果独占鳌头,三星大举复兴,国产手机在高端市场颗粒无收
- (二)面扫描仪与机械臂的手眼标定(眼在手外:九点标定)
- 网络流学习笔记
- Network flow learning notes
- 解决ProxyError: Conda cannot proceed due to an error in your proxy configuration.
- Development to testing: a six-year road to automation starting from 0
- CSV data file settings of JMeter configuration components
- Qt随手笔记(二)Edit控件及float,QString转化、
猜你喜欢

Solve NPM -v sudden failure and no response

正则表达式

挡不住了,纯国产PC已就位,美国的软硬件体系垄断正式被破

高斯消元求解矩阵的逆(gauss)

A new paradigm of distributed deep learning programming: Global tensor

R语言ggplot2可视化: 将图例标题(legend title)对齐到ggplot2中图例框的中间(默认左对齐、align legend title to middle of legend)

Does volatile rely on the MESI protocol to solve the visibility problem? (top)

Fiddler download and installation

Redis sentinel mode setup under Windows

登录模块用例编写
随机推荐
Node 内存溢出及V8垃圾回收机制
[untitled]
2022年中科磐云——服务器内部信息获取 解析flag
【信息系统项目管理师】初见高项系列精华汇总
JS判断数据类型 Object.prototype.toString.call和typeof
JS one line code to obtain the maximum and minimum values of the array
如何添加一个PDB
网站设计需要的基本知识
Fiddler download and installation
antd TreeSelect获取父节点的值
面试突击68:为什么 TCP 需要 3 次握手?
OFDM Lecture 16 - OFDM
Gauss elimination for solving XOR linear equations
C# 托管与非托管
The combination of officially issued SSL certificate and self signed certificate realizes website two-way authentication
高斯消元求解异或线性方程组
MySQL的逻辑架构
[MySQL database] a collection of basic MySQL operations - the basis of seeing (adding, deleting, modifying, and querying)
QT handy notes (III) use qtcharts to draw a line chart in VS
Double authentication of server and client