热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

原力计划云原生(三十六)|Kubernetes篇之Harbor入门和安装

原力计划云原生(三十六)|Kubernetes篇之Harbor入门和安装-文章目录Harbor入门和安装一、入门1、简介2、核心组件3、安装二、docker使用1


文章目录

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.io
helm 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.com
externalURL: https://harbor.lanson.com
internalTLS:
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: 5Gi
metrics:
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.com
externalURL: https://harbor.lanson.com
internalTLS: #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: 5Gi
metrics:
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文件


​​​​​​​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

 




  • ?博客主页:https://lansonli.blog.csdn.net
  • ?欢迎点赞 ? 收藏 ⭐留言 ? 如有错误敬请指正!
  • ?本文由 Lansonli 原创,首发于 CSDN博客?
  • ?停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨ 




推荐阅读
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 文章目录题目:二叉搜索树中的两个节点被错误地交换。基本思想1:中序遍历题目:二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下 ... [详细]
author-avatar
DOOD眷顾
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有