Kubernetes 部署 Harbor

时间:2022-12-26 20:13:22

helm 部署

项目地址

​Releases · helm/helm (github.com)​

安装流程

[root@k8s-master2 ~]# mkdir helm
[root@k8s-master2 ~]# cd helm

tar zxvf helm-v3.5.4-linux-amd64.tar.gz
cp -av linux-amd64//helm /usr/local/bin/
helm help
helm create nginx
helm repo list
helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo list

Kubernetes 部署 Harbor

安装NFS

所有节点安装NFS客户端

yum install -y nfs-utils

选择一台做nfs server

进行如下配置(这里选择40.181节点):

  1. 创建根目录

mkdir -p /mnt/nfs
复制代码
  1. 编辑
vim /etc/exports
/mnt/nfs/ 192.168.40.0/24(rw,sync,fsid=0)
复制代码
  • 同192.168.0.0/24一个网络号的主机可以挂载NFS服务器上的/mnt/nfs/目录到自己的文件系统中
  • rw表示可读写
  • sync表示同步写
  • fsid=0表示将/mnt找个目录包装成根目录
  1. 启动nfs服务

systemctl start rpcbind.service
systemctl start nfs-server.service
复制代码
  1. 设置开机自启

systemctl enable rpcbind.service
systemctl enable nfs-server.service
复制代码
  1. 使用配置生效

exportfs -r
复制代码
  1. 查看挂载情况

exportfs

本次使用nfs 做存储

PV 动态供给(StorageClass)

支持动态供给的存储插件:​​​​https://kubernetes.io/docs/concepts/storage/storage-classes/​

(1)添加仓库

helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner

(2)更新仓库

helm repo update

(3)下载到本地

helm pull  nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --untar

(4)修改values

repository: dyrnq/nfs-subdir-external-provisioner
tag: v4.0.2
pullPolicy: IfNotPresent
imagePullSecrets: []

nfs:
server: 192.168.40.181
path: /mnt/nfs

Kubernetes 部署 Harbor

(5)安装

helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/

改变默认 StorageClass

(1)列出你的集群中的 StorageClasses:

kubectl get storageclass

(2)标记一个 StorageClass 为默认的:

kubectl patch storageclass nfs-client -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

Kubernetes 部署 Harbor


Harbor

前提已部署ingress

参考

​部署Ingress Controller1.31 以及使用案例_赵承胜博客的技术博客_51CTO博客​

添加 Harbor Helm Chart 仓库,并将 Helm Chart 下载到本地。

helm repo add harbor https://helm.goharbor.io
helm pull harbor/harbor --untar

编辑 harbar/values.yaml 文件:

  • 设置 HTTPS 证书的域名。

Kubernetes 部署 Harbor

  • 修改 externalURL,表示外部客户端访问 Harbor 的地址。

Kubernetes 部署 Harbor

  • 修改存储类名称storageClass: "nfs-client" (之前我们创建的存储类)

Kubernetes 部署 Harbor

☆ (部署之前接的删除之前部署的pvc )

accessMode: ReadWriteMany          # 卷的访问模式,需要修改为ReadWriteMany,允许多个组件读写,否则有的组件无法读取其它组件的数据

Kubernetes 部署 Harbor

执行下面命令在 cloudnative-lab 命名空间部署 Harbor。

helm install harbor harbor

服务验证

Kubernetes 部署 Harbor

访问

https://core.harbor.domain

用户 admin 密码如下:
cat harbor/values.yaml | grep 123
harborAdminPassword: "Harbor12345"

Kubernetes 部署 Harbor

WebUI 上传 Helm Charts

首先新建一个项目名为 demo。

Kubernetes 部署 Harbor

从 Helm Chart 仓库 找一个别人分享的 Helm Chart,这里我选择一个 Kafka Helm Chart。

仓库地址 ​https://artifacthub.io/​

Kubernetes 部署 Harbor

使用以下命令拉取 Kafka Helm Chart。

helm repo add bitnami https://charts.bitnami.com/bitnami
helm pull bitnami/kafka


在 Harbor 界面选择 Kafka Helm Chart 的压缩文件,点击上传。

Kubernetes 部署 Harbor

Helm Charts 上传成功后,就可以看到相关信息,包括: Chart 版本号、状态、作者、模板引擎、创建时间等信息。

Kubernetes 部署 Harbor

添加 harbor helm 仓库

因为我们的 HTTPS 证书是自签名证书,在添加仓库的时候需要带上 ca.crt,如果是受信任的第三方 CA 签名的证书则无需此步骤。点击注册证书下载 ca.crt 文件。

Kubernetes 部署 Harbor

添加仓库 ,安装kafka

helm repo add   --ca-file ca.crt  --username=admin --password=Harbor12345 myrepo https://core.harbor.domain/chartrepo/demo
helm repo list
helm install kafka --ca-file=ca.crt --username=admin --password=Harbor12345 myrepo/kafka

Kubernetes 部署 Harbor