Helm搭桥,一键搞定Harbor部署,告别繁琐步骤

前 言

前面有一篇文章介绍了使用Harbor手动搭建私有容器镜像仓库,步骤繁琐复杂,今天介绍使用Helm工具一键部署,感受Helm的便捷和自动化,通过修改values.yaml文件来提供更丰富的自定义部署配置。

一、前期准备工作

为了达到一键部署即可使用的目的,我先描述一下部署Harbor之前的准备工作

1.1、部署Ingress-Controller

为了能把Harbor应用发布到Kubernetes集群外,这里需要先部署一个Ingress-controller
目前有两个选择ingress-nginx和Cilium组件的ingress-controller

1.1.1、 早先的ingress-nginx

使用Helm部署ingress-nginx

#helm upgrade --install ingress-nginx ingress-nginx   --repo https://kubernetes.github.io/ingress-nginx   --namespace ingress-nginx --create-namespace

在这里插入图片描述
验证ingress-nginx的资源
在这里插入图片描述

1.1.2、 Cilium组件自带ingress-controller

Cilium组件的部署和启用ingress的操作见文章在K8S上部署Cilium组件,看这一篇干货就够了
在这里插入图片描述

1.1.3、 使用MetalLB提供地址池

不管使用哪一种ingress-controller,ingress对外发布应用的SVC都是LoadBalancer类型的SVC,都需要配置EXTERNAL-IP,这里有一个工具可以提供地址分配的功能,他就是MetalLB,所以接下来我们部署MetalLB,配置LoadBalancer SVC的IPAddressPool
部署MetalLB需要三个文件
在这里插入图片描述

metallb-native.yaml是MetalLB的资源清单文件,包含MetalLB的namespace、controller、speaker等资源
metallb-ipaddresspool.yaml是地址池文件,定义地址池
在这里插入图片描述
metallb-l2advertisment.yaml是2层通告定义文件,应用地址池,通过接口
在这里插入图片描述
部署MetalLB时,先部署metallb-native.yaml文件,提供CRD
在这里插入图片描述
部署ipaddresspool和L2advertisement
在这里插入图片描述
验证MetalLB的资源部署成功
在这里插入图片描述
此时再看ingress的SVC的EXTERNAL-IP就自动分配上IP地址了
在这里插入图片描述

1.2、提供持久存储

为了方便为Harbor提供持久卷支持,我们也有多种选择

1.2.1 通过NFS-CSI提供存储类

通过kubernetes-csi/csi-driver-nfs与nfs-subdir-external-provisioner提供NFS-CSI存储类
部署nfs-subdir-external-provisioner的过程(需要提供额外的NFS-Server)

$ helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
$ helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \    --set nfs.server=x.x.x.x \    --set nfs.path=/exported/path

部署成功后Kubernetes集群内生成nfs-client存储类,提供PV的自动创建
在这里插入图片描述

1.2.2 通过OpenEBS提供存储类

通过helm部署openebs

#helm install openebs --namespace openebs openebs/openebs --set engines.replicated.mayastor.enabled=false --create-namespace

在这里插入图片描述
验证OpenEBS资源
在这里插入图片描述
OpenEBS提供openebs-hostpath存储类
在这里插入图片描述

二、通过helm部署harbor

2.1、修改harbor-values.yaml文件

在这里插入图片描述
这个文件里需要用到上面提供的ingress和存储类,两种资源都有两种选择,这个截图里使用里Cilium的Ingress,OpenEBS的openebs-hostpath存储类,其他选择也是可以成功部署。

2.2、读取harbor-values.yaml文件内容部署harbor

#helm install harbor -f harbor-values.yaml harbor/harbor -n harbor --create-namespace

在这里插入图片描述

2.3、查看harbor名称空间里的资源

在这里插入图片描述

2.4、查看harbor使用PVC的状态

在这里插入图片描述
OpenEBS自动配置PV,自动绑定PVC
在这里插入图片描述

2.5、手动下载harbor镜像

镜像下载较慢,使用了手动下载镜像

#nerdctl -n k8s.io pull goharbor/harbor-core:v2.11.0

在这里插入图片描述

2.6、查看PODS运行成功

在这里插入图片描述

2.7、查看Harbor的Ingress部署成功

在这里插入图片描述

2.8、验证Harbor的web

在这里插入图片描述

                                                           ***欢迎关注作者的公众号,公众号每天分享运维干货文章***

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值