目录

一、Harbor介绍

二、Harbor部署


一、Harbor介绍

  • 基于策略的镜像复制:可以在不同的镜像仓库中对镜像进行复制传送,比如我们可以在官方镜像仓库中定义一个策略,让他实时地同步到我们自己的私有镜像仓库中。
  • 镜像的漏洞扫描:在我们真正的生产运维环境中,当一台机器需要上架,需要安装linux或windows系统,以及可能安装了我们的应用,如果需要对外发布的话,我们需要接入到漏洞扫描机器,出具一个漏扫的报告,只有当漏扫通过,这样的机器才允许上架,接入整个数据中心。那么对于镜像也一样,需要通过漏扫才能正常去使用。
  • AD/LDAP集成:在 Kubernetes 环境中实现 Active Directory (AD) 和 Lightweight Directory Access Protocol (LDAP) 集成,通常是为了实现身份验证和授权服务,例如通过使用 Active Directory 作为用户的中央身份存储库。这可以通过几种不同的方法实现,包括使用 Kubernetes 的 RBAC(Role-Based Access Control)与外部身份提供商(如 AD 或 LDAP)集成。
  • 镜像的删除和空间清理:我们可以把一些没有标签或者悬空的镜像,进行清理。
  • 审计日志:哪些用户登陆到镜像仓库平台,做了哪些事情,我们都需要一个完整的日志记录,事后可以分析。
  • Harbor提供了Restful API,我们可以通过接口调用执行一些自动化的事情。
  • Harbor的部署也相对简单,比如使用docker compose,在k8s里面可以基于Helm。

 Harbor仓库组件介绍

  • Notary:安全验证的服务。
  • Registry V2:镜像仓库服务。负责储存 Docker 镜像,并处理 Docker push/pull 命令。
  • nginx : 是一个 nginx 的前端代理,Harbor 的 Registry、UI、Token 服务等组件,都处在 nginx 反向代理后边。 该代理将来自浏览器、docker clients 的请求转发到后端不同的服务上。
  • Registry:
  • UI(harbor-ui): 提供图形化界面,帮助用户管理 Registry 上的镜像(image), 并对用户进行授权。
  • Database(harbor-db):为core services提供数据库服务,负责储存用户权限、审计日志、Docker 镜像分组信息等数据。
  • Job services: 主要用于镜像复制,本地镜像可以被同步到远程 Harbor 实例上。
  • Log collector(harbor-log): 负责收集其他组件的日志到一个地方。                  

二、Harbor部署

1、创建namespace

我们针对harbor的组件以及pod都会放在namespace为harbor的空间之下。

[root@k8s-master helm]# cat namespace-harbor.yaml
apiVersion: v1
kind: Namespace
metadata:
name: harbor
[root@k8s-master helm]# kubectl apply -f namespace-harbor.yaml

2、选择节点进行 harbor 安装「可选」

编辑harbor命名空间配置参数, scheduler.alpha.kubernetes.io/node-selector: harbor=env表示选择一个具备harbor=env标签的节点上进行部署pod。

比如想让我们的harbor仓库只运行在有打k=v标签的node节点上的话,那么你可以进行这部分的设置。好处是,可以对这些运行harbor仓库的pod进行节点部署上的约束,避免在太多节点上分散。

[root@k8s-master helm]# kubectl edit ns harbor -o yaml
apiVersion: v1
kind: Namespace
metadata:
 annotations:
   scheduler.alpha.kubernetes.io/node-selector: harbor=env
 name: harbor
# 选择 node 进行标签设定
[root@k8s-master helm]# kubectl label node k8s-node3 harbor=env
3、添加 helm repo
添加harbor仓库的源。
[root@k8s-master helm]# helm repo add harbor https://helm.goharbor.io
[root@k8s-master helm]# helm search repo
NAME           CHART VERSION   APP VERSION     DESCRIPTION
harbor/harbor   1.11.0          2.7.0           An open source trusted cloud 
native registry th...
[root@k8s-master helm]# helm pull harbor/harbor
[root@k8s-master helm]# tar zxf harbor-1.11.0.tgz
[root@k8s-master opt]# cd harbor/
[root@k8s-master harbor]# ls
cert Chart.yaml conf LICENSE README.md templates values.yaml

 

通过helm把对应安装harbor仓库的chart下载到本地。可以通过--version指定版本。

打开values.yaml文件,修改里面的:

  • 将所有的storageClass的值该为之前我们部署nfs的时候对象名称:nfs-client。如果没有部署nfs客户端对象的话,需要部署下这个。

  • 将漏扫中的skipUpdate值改为true,跳过更新。
4、通过 helm安装harbor
[root@k8s-master harbor] # helm install harbor . -f values.yaml -n harbor

域名没改的话默认为:core.harbor.domain。将域名和ip添加到/etc/hosts里面。

打开浏览器,输入域名:

用户名:admin,密码:Harbor12345

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐