第十二章 九析带你轻松完爆 helm3 harbor

网友投稿 250 2022-10-30

第十二章 九析带你轻松完爆 helm3 harbor

本系列文章:第一章:helm3 一分钟轻松完爆第二章:helm3 轻松完爆公共仓库第三章:helm3 轻松完爆私有仓库第四章:helm3 轻松完爆 chart第五章:helm3 轻松完爆 release第六章:九析带你轻松完爆 helm3 gitlab第七章:九析带你轻松完爆 helm3 nginx-ingress第八章:九析带你轻松完爆 helm3 gitlab nfs第九章:九析带你轻松完爆 helm3 nexus第十章:九析带你轻松完爆 helm3 heapster第十一章:九析带你轻松完爆 helm3 kubernetes-dashboard第十二章:九析带你轻松完爆 helm3 harbor

目录

1 前言

2 添加 harbor 仓库

3 下载 harbor

4 解压 harbor

5 编辑 values.yaml

6 编写 pv

7 创建 nginx-ingress

8 创建 nfs

9 创建 harbor 命名空间

10 安装 harbor

11 创建 pv

12 检查 pvc

13 编辑 dns

14 访问 harbor    14.1 浏览器登录

14.2 客户端登录

14.3 客户端上传镜像

15 注意

1 前言

本文采用 helm v3.0.0;k8s v1.16.3。

2 添加 harbor 仓库

helm repo add harbor 下载 harbor

helm pull harbor/harbor

4 解压 harbor

tar -zxvf harbor-1.2.3.tgz

5 编辑 values.yaml

编辑如下:

expose:  type: ingress  tls:    commonName: "jiuxi.harbor.org"  ingress:    hosts:      core: jiuxi.harbor.orgexternalURL: "hellojiuxi"

6 编写 pv

本文不介绍 pv 和 pvc,相信你敢玩 helm,应该不算新手。如果你真不知道 pv 和 pvc 也没有关系;可以把它们理解为情侣关系,即 pvc 一定要 c 了 pv 才愿意干活,当然不能白 c,要给“钱”, pv 收到钱会存到某个地方,比如鞋盒。理解了没?不用谢。

查看 values.yaml 文件,发现 pvc 一共有 5 个。并且有 2 种规格:A杯(1Gi)、 C杯(5Gi)

新建资源文件  pv-harbor-1g.yaml。不要执行。切记。

apiVersion: v1kind: PersistentVolumemetadata:    name: pv-harbor-1g-1spec:    capacity:        storage: 1Gi    volumeMode: Filesystem    accessModes:    -  ReadWriteOnce    persistentVolumeReclaimPolicy: Retain    nfs:        server: 10.110.101.106        path: /data/nfs/harbor/1g-1---apiVersion: v1kind: PersistentVolumemetadata:    name: pv-harbor-1g-2spec:    capacity:        storage: 1Gi    volumeMode: Filesystem    accessModes:    -  ReadWriteOnce    persistentVolumeReclaimPolicy: Retain    nfs:        server: 10.110.101.106        path: /data/nfs/harbor/1g-2---apiVersion: v1kind: PersistentVolumemetadata:    name: pv-harbor-1g-3spec:    capacity:        storage: 1Gi    volumeMode: Filesystem    accessModes:    -  ReadWriteOnce    persistentVolumeReclaimPolicy: Retain    nfs:        server: 10.110.101.106        path: /data/nfs/harbor/1g-3

新建资源文件  pv-harbor-5g.yaml。不要执行。切记。

apiVersion: v1kind: PersistentVolumemetadata:    name: pv-harbor-5g-1spec:    capacity:        storage: 5Gi    volumeMode: Filesystem    accessModes:    -  ReadWriteOnce    persistentVolumeReclaimPolicy: Retain    nfs:        server: 10.110.101.106        path: /data/nfs/harbor/5g-1---apiVersion: v1kind: PersistentVolumemetadata:    name: pv-harbor-5g-2spec:    capacity:        storage: 5Gi    volumeMode: Filesystem    accessModes:    -  ReadWriteOnce    persistentVolumeReclaimPolicy: Retain    nfs:        server: 10.110.101.106        path: /data/nfs/harbor/5g-2

7 创建 nginx-ingress

创建 nginx-ingress 请参考《第七章》。不用紧张,分分钟轻松完爆。在创建 nginx-ingress 过程中,要特别注意 hostNetwork 设置为 true,此参数使 nginx-ingress pod 直接占用宿主机的 80、443 端口。

8 创建 nfs

mkdir /data/nfs/harbor/1g-1mkdir /data/nfs/harbor/1g-2mkdir /data/nfs/harbor/1g-3mkdir /data/nfs/harbor/5g-1mkdir /data/nfs/harbor/5g-2

修改 nfs 目录权限:

chmod 777 /data/nfs/harbor

9 创建 harbor 命名空间

kubectl create ns harbor

10 安装 harbor

## 第一个 harbor 是 release;第二个是命名空间;第三个是解压后根目录helm install harbor -n harbor harbor

11 创建 pv

harbor 安装成功之后,pvc 会处于 pending 状态。因为并没有创建实际的 pv。

注意创建顺序,规格要按照从小到大。为什么?你想一想,死劲想一想。

创建小规格 pv:

kubectl apply -f pv-harbor-1g.yaml

小规格 pv 创建结束后,注意查看一下创建状态,等到状态都为 Bound 后,再创建大规格 pv:

kubectl apply -f pv-harbor-5g.yaml

12 检查 pvc

kubectl get pvc -n harbor

13  编辑 dns

因为 ingress 创建时使用了域名 jiuxi.harbor.org,所以在浏览器所在主机上编辑 hosts 文件。需注意此 ip 并非 harbor pod 所在宿主机的 ip,而应该是 nginx-ingress-controller pod 所在宿主机的 ip。

14 访问 harbor

14.1 浏览器登录

打开浏览器,输入 / 密码: admin / hellojiuxi。

14.2 客户端登录

使用 docker cli 登录 harbor时,需首先设置免数字证书登录。编辑 docker 配置文件(/etc/docker/daemon.json),添加内容如下:

{    "insecure-registries" : ["jiuxi.harbor.org"]}

编辑完毕后,重启 docker:

systemctl daemon-reloadsystemctl restart docker

14.3 客户端上传镜像

首先必须在 harbor 创建项目:

docker pull busyboxdocker tag busybox jiuxi.harbor.org/stable/busyboxdocker push jiuxi.harbor.org/stable/busybox

14.4 客户端数字证书登录

如果你跟我一样有追求,想通过数字证书的方式进行登录,于是你将 /etc/docker/daemon.json 里面的 insecure-registries 删除,然后 systemctl daemon reload && systemctl restart docker。然后你看到了如下的错误:

x509: certificate signed by unknown authority

记住,首先不要尖叫,其次不要痛苦。你只需要按照如下三步就可以轻松完爆。

第一步:获取数字证书值:

kubectl get secret harbor-harbor-ingress -n harbor  -o yaml

第二步:解码数字证书值(因为 secret 中证书信息值是采用 base64 编码过的,所以你在使用前还需要进行解码):

echo 'CA_VALUE' | base64 -d > ca.crt

第三步:在 docker 证书根目录下创建你 ingress 指定域名目录(比如我这里就是 jiuxi.harbor.org),并将上面生成的证书拷贝到此处:

mkdir -p /etc/docker/cert.d/jiuxi.harbor.org && mv ca.crt /etc/docker/cert.d/jiuxi.harbor.org

再次 docker 客户端登录 harbor,发现登录就如放p般轻松和随意,这时你就可以尖叫了。

15 注意

有时会有正确输入用户名和密码却无法登录的情况,原因在于 pod 并没有全部运行成功,必须确保所有 pod 都运行成功了再强势登录。

16 后记

一次意外断电,harbor pod 所在宿主机出现如下错误:

FATAL: data directory "/var/lib/postgresql/data" has group or world accessDETAIL: Permissions should be u=rwx (0700).编辑 harbor-database pod,修改 /va/lib/postgresql/data 的目录权限:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:helm3安装harbor
下一篇:mybatis源码解读之executor包语句处理功能
相关文章

 发表评论

暂时没有评论,来抢沙发吧~