使用Helm中部署Harbor

Harbor 是一个开源的企业级私有 Docker 镜像仓库,我们可以利用 Harbor 在本地安全地存储和管理 Docker 镜像,而不需要将镜像上传到 Docker Hub 或其他第三方镜像仓库。

关键词:Harbor

安装Helm

我们将 Helm 客户端安装在 k8s-master 节点上

用二进制版本安装

  1. 下载 需要的版本
  2. 解压(tar -zxvf helm-v3.0.0-linux-amd64.tar.gz)
  3. 在解压目中找到helm程序,移动到需要的目录中(mv linux-amd64/helm /usr/local/bin/helm)

然后就可以执行客户端程序并 添加稳定仓库: helm help.

查看版本号

1
helm version

安装命令补全

1
2
echo 'source <(helm completion bash)' >> ~/.bashrc
source ~/.bashrc

修改Helm仓库镜像

1
2
helm repo add aliyun  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo update

查看仓库列表

1
helm repo list

安装Harbor

添加Harbor仓库

1
2
helm repo add harbor https://helm.goharbor.io
helm repo update

搜索Harbor

1
helm search repo harbor/harbor

将Harbor下载到本地

1
helm fetch harbor/harbor

解压缩

1
2
tar xvf harbor-1.9.0.tgz
cd harbor

修改配置

修改配置文件values.yaml,具体查看GIthub配置列表

这里修改了以下几个配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
expose:
type: nodePort
tls:
enabled: false
nodePort:
ports:
http:
nodePort: 30004
https:
nodePort: 30005
notary:
nodePort: 30006
externalURL: http://192.168.232.167:30004
persistence:
persistentVolumeClaim:
registry:
existingClaim: "pvc-harbor"
storageClass: "-"
subPath: "registry"
chartmuseum:
existingClaim: "pvc-harbor"
storageClass: "-"
subPath: "chartmuseum"
jobservice:
existingClaim: "pvc-harbor"
storageClass: "-"
subPath: "jobservice"
database:
existingClaim: "pvc-harbor"
storageClass: "-"
subPath: "database"
redis:
existingClaim: "pvc-harbor"
storageClass: "-"
subPath: "redis"

其中 pvc-harbor 是预先创建好的 PVC,创建过程略。

部署 Harbor:

1
2
3
4
5
6
7
8
9
10
11
12
$ helm install -g harbor/harbor -f values.yaml .

NAME: harbor-1589352564
LAST DEPLOYED: Wed May 13 14:49:25 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Please wait for several minutes for Harbor deployment to complete.
Then you should be able to visit the Harbor portal at http://192.168.232.167:30004.
For more details, please visit https://github.com/goharbor/harbor.

部署成功,等待 Harbor 启动完成,然后就可以通过http://192.168.232.167:30004 访问Harbor,默认用户名是admin,密码是Harbor12345。

由于 Docker 自从 1.3.x 之后,docker registry 交互默认使用的是HTTPS,而我们搭建的 Harbor 使用的是HTTP,所以为了避免 pull/push 镜像时得到错误:http: server gave HTTP response to HTTPS client,需要修改 docker 的配置文件 /etc/docker/daemon.json,加入以下配置:

1
2
3
{
"insecure-registries": ["192.168.232.167:30004"]
}

保存后重启 docker 服务:

1
sudo systemctl restart docker

上传第一个镜像

下载一个 busybox 镜像:

1
docker pull busybox:latest

修改 tag:

1
docker tag busybox:latest 192.168.232.167:30004/library/busybox:latest

library 是 Harbor 的默认项目地址,也可以登录 Harbor 自行新建一个项目。

使用 docker login 登录到 Harbor,并输入用户名和密码:

1
docker login 192.168.232.167:30004

登录成功后,上传镜像到 Harbor:

1
docker push 192.168.232.167:30004/library/busybox:latest

后记

上面的软件没有部署完,例如PVC和helm的架构还不懂,因此先告一段落。

决定先使用docker-compose先部署Harbor

参考文档

https://helm.sh/docs/using_helm/#installing-helm

https://github.com/goharbor/harbor-helm

https://www.cnblogs.com/dukuan/p/9963744.html

https://blog.51cto.com/wangpengtai/2418636?source=dra

http://kpali.me/2020/05/13/deploy-harbor-in-kubernetes.html