通过 Helm 搭建 Docker 镜像仓库 Harbor
文章目录
!版权声明:本博客内容均为原创,每篇博文作为知识积累,写博不易,转载请注明出处。
参数地址:
系统环境:
- kubernetes 版本:1.20.1
- Traefik Ingress 版本:2.4.3
- Harbor Chart 版本:1.5.2
- Harbor 版本:2.1.3
- Helm 版本:3.2.1
- 持久化存储驱动:NFS
一、Harbor 简介
1、简介
Harbor 是一个开放源代码容器镜像注册表,可通过基于角色权限的访问控制来管理镜像,还能扫描镜像中的漏洞并将映像签名为受信任。Harbor 是 CNCF 孵化项目,可提供合规性,性能和互操作性,以帮助跨 Kubernetes 和 Docker 等云原生计算平台持续,安全地管理镜像。
2、特性
- 管理:多租户、可扩展
- 安全:安全和漏洞分析、内容签名与验证
二、准备环境
1、安装 Helm
关于如何安装 Helm 3,请查看之前的博文 安装 Helm3 管理 Kubernetes 应用 进行安装。
2、创建 Namespace
由于 Harbor 组件较多,一般我们会采取新建一个 Namespace 专用于部署 Harbor 相关组件,输入下面命令创建名为 mydlq-hub
的命名空间。
1$ kubectl create namespace mydlq-hub
3、挂载 NFS 与创建目录
这里使用的是 NFS 存储驱动,如果使用其他存储驱动,请自行配置。
1#挂载 NFS
2$ mount -o vers=4.1 192.168.2.11:/nfs/ /nfs
3
4#创建文件夹
5mkdir -p /nfs/harbor/registry
6mkdir -p /nfs/harbor/chartmuseum
7mkdir -p /nfs/harbor/jobservice
8mkdir -p /nfs/harbor/database
9mkdir -p /nfs/harbor/redis
10mkdir -p /nfs/harbor/trivy
4、创建 PV 与 PVC
(1)、创建 PV 部署文件 harbor-pv.yaml
harbor-pv.yaml
1#registry-PV
2apiVersion: v1
3kind: PersistentVolume
4metadata:
5 name: harbor-registry
6 labels:
7 app: harbor-registry
8spec:
9 capacity:
10 storage: 100Gi
11 accessModes:
12 - ReadWriteOnce
13 persistentVolumeReclaimPolicy: Retain
14 storageClassName: "hub"
15 mountOptions:
16 - hard
17 - nfsvers=4.1
18 nfs:
19 path: /nfs/harbor/registry
20 server: 192.168.2.11
21---
22#harbor-chartmuseum-pv
23apiVersion: v1
24kind: PersistentVolume
25metadata:
26 name: harbor-chartmuseum
27 labels:
28 app: harbor-chartmuseum
29spec:
30 capacity:
31 storage: 5Gi
32 accessModes:
33 - ReadWriteOnce
34 persistentVolumeReclaimPolicy: Retain
35 storageClassName: "hub"
36 mountOptions:
37 - hard
38 - nfsvers=4.1
39 nfs:
40 path: /nfs/harbor/chartmuseum
41 server: 192.168.2.11
42---
43#harbor-jobservice-pv
44apiVersion: v1
45kind: PersistentVolume
46metadata:
47 name: harbor-jobservice
48 labels:
49 app: harbor-jobservice
50spec:
51 capacity:
52 storage: 5Gi
53 accessModes:
54 - ReadWriteOnce
55 persistentVolumeReclaimPolicy: Retain
56 storageClassName: "hub"
57 mountOptions:
58 - hard
59 - nfsvers=4.1
60 nfs:
61 path: /nfs/harbor/jobservice
62 server: 192.168.2.11
63---
64#harbor-database-pv
65apiVersion: v1
66kind: PersistentVolume
67metadata:
68 name: harbor-database
69 labels:
70 app: harbor-database
71spec:
72 capacity:
73 storage: 5Gi
74 accessModes:
75 - ReadWriteOnce
76 persistentVolumeReclaimPolicy: Retain
77 storageClassName: "hub"
78 mountOptions:
79 - hard
80 - nfsvers=4.1
81 nfs:
82 path: /nfs/harbor/database
83 server: 192.168.2.11
84---
85#harbor-redis-pv
86apiVersion: v1
87kind: PersistentVolume
88metadata:
89 name: harbor-redis
90 labels:
91 app: harbor-redis
92spec:
93 capacity:
94 storage: 5Gi
95 accessModes:
96 - ReadWriteOnce
97 persistentVolumeReclaimPolicy: Retain
98 storageClassName: "hub"
99 mountOptions:
100 - hard
101 - nfsvers=4.1
102 nfs:
103 path: /nfs/harbor/redis
104 server: 192.168.2.11
105---
106#harbor-trivy-pv
107apiVersion: v1
108kind: PersistentVolume
109metadata:
110 name: harbor-trivy
111 labels:
112 app: harbor-trivy
113spec:
114 capacity:
115 storage: 5Gi
116 accessModes:
117 - ReadWriteOnce
118 persistentVolumeReclaimPolicy: Retain
119 storageClassName: "hub"
120 mountOptions:
121 - hard
122 - nfsvers=4.1
123 nfs:
124 path: /nfs/harbor/trivy
125 server: 192.168.2.11
执行 Kuberctl 命令创建 PV 资源:
- -f:指定资源配置文件
- -n:指定创建资源的命名空间
1$ kubectl apply -f harbor-pv.yaml
(2)、创建 PVC 部署文件 harbor-pvc.yaml
harbor-pvc.yaml
1#harbor-registry-pvc
2kind: PersistentVolumeClaim
3apiVersion: v1
4metadata:
5 name: harbor-registry
6spec:
7 accessModes:
8 - ReadWriteOnce
9 storageClassName: "hub"
10 resources:
11 requests:
12 storage: 100Gi
13 selector:
14 matchLabels:
15 app: harbor-registry
16---
17#harbor-chartmuseum-pvc
18kind: PersistentVolumeClaim
19apiVersion: v1
20metadata:
21 name: harbor-chartmuseum
22spec:
23 accessModes:
24 - ReadWriteOnce
25 storageClassName: "hub"
26 resources:
27 requests:
28 storage: 5Gi
29 selector:
30 matchLabels:
31 app: harbor-chartmuseum
32---
33#harbor-jobservice-pvc
34kind: PersistentVolumeClaim
35apiVersion: v1
36metadata:
37 name: harbor-jobservice
38spec:
39 accessModes:
40 - ReadWriteOnce
41 storageClassName: "hub"
42 resources:
43 requests:
44 storage: 5Gi
45 selector:
46 matchLabels:
47 app: harbor-jobservice
48---
49#harbor-database-pvc
50kind: PersistentVolumeClaim
51apiVersion: v1
52metadata:
53 name: harbor-database
54spec:
55 accessModes:
56 - ReadWriteOnce
57 storageClassName: "hub"
58 resources:
59 requests:
60 storage: 5Gi
61 selector:
62 matchLabels:
63 app: harbor-database
64---
65#harbor-redis-pvc
66kind: PersistentVolumeClaim
67apiVersion: v1
68metadata:
69 name: harbor-redis
70spec:
71 accessModes:
72 - ReadWriteOnce
73 storageClassName: "hub"
74 resources:
75 requests:
76 storage: 5Gi
77 selector:
78 matchLabels:
79 app: harbor-redis
80---
81#harbor-trivy-pvc
82kind: PersistentVolumeClaim
83apiVersion: v1
84metadata:
85 name: harbor-trivy
86spec:
87 accessModes:
88 - ReadWriteOnce
89 storageClassName: "hub"
90 resources:
91 requests:
92 storage: 5Gi
93 selector:
94 matchLabels:
95 app: harbor-trivy
执行 Kuberctl 命令创建 PVC 资源:
- -f:指定要创建资源的文件
- -n:指定应用创建的命名空间
1$ kubectl apply -f harbor-pvc.yaml -n mydlq-hub
三、创建自定义证书
安装 Harbor 我们会默认使用 HTTPS 协议,需要 TLS 证书,如果我们没用自己设定自定义证书文件,那么 Harbor 将自动创建证书文件,不过这个有效期只有一年时间,所以这里我们生成自签名证书,为了避免频繁修改证书,将证书有效期为 10 年,操作如下:
1、生成证书文件:
下面执行步骤时,需要输入一些证书信息,其中 Common Name 必须要设置为和你要给 Harbor 的域名保持一致,如 Common Name (eg, your name or your server's hostname) []:hub.mydlq.club
。
1## 获得证书
2$ openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 3650 -out ca.crt
3
4## 生成证书签名请求
5$ openssl req -newkey rsa:4096 -nodes -sha256 -keyout tls.key -out tls.csr
6
7## 生成证书
8$ openssl x509 -req -days 3650 -in tls.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out tls.crt
2、生成 Secret 资源
创建 Kubernetes 的 Secret 资源,且将证书文件导入:
-
- n:指定创建资源的 Namespace
- --from-file:指定要导入的文件地址
1$ kubectl create secret generic hub-mydlq-tls --from-file=tls.crt --from-file=tls.key --from-file=ca.crt -n mydlq-hub
查看是否创建成功:
1$ kubectl get secret hub-mydlq-tls -n mydlq-hub
可以观察到:
1NAME TYPE DATA AGE
2hub-mydlq-tls Opaque 3 52m
四、设置 Harbor 配置清单
由于我们需要通过 Helm 安装 Harbor 仓库,需要提前创建 Harbor Chart 的配置清单文件,里面是对要创建的应用 Harbor 进行一系列参数配置,由于参数过多,关于都有 Harbor Chart 都能够配置哪些参数这里就不一一罗列,可以通过访问 Harbor-helm 的 Github 地址 进行了解。
下面描述下,需要的一些配置参数:
values.yaml
1#Ingress 网关入口配置
2expose:
3 type: ingress
4 tls:
5 ### 是否启用 https 协议,如果不想启用 HTTPS,则可以设置为 false
6 enabled: true
7 ### 指定使用 sectet 挂载证书模式,且使用上面创建的 secret 资源
8 certSource: secret
9 secret:
10 secretName: "hub-mydlq-tls"
11 notarySecretName: "hub-mydlq-tls"
12 ingress:
13 hosts:
14 ### 配置 Harbor 的访问域名,需要注意的是配置 notary 域名要和 core 处第一个单词外,其余保持一致
15 core: hub.mydlq.club
16 notary: notary.mydlq.club
17 controller: default
18 annotations:
19 ingress.kubernetes.io/ssl-redirect: "true"
20 ingress.kubernetes.io/proxy-body-size: "0"
21 #### 如果是 traefik ingress,则按下面配置:
22 kubernetes.io/ingress.class: "traefik"
23 traefik.ingress.kubernetes.io/router.tls: 'true'
24 traefik.ingress.kubernetes.io/router.entrypoints: websecure
25 #### 如果是 nginx ingress,则按下面配置:
26 #nginx.ingress.kubernetes.io/ssl-redirect: "true"
27 #nginx.ingress.kubernetes.io/proxy-body-size: "0"
28 ## 如果不想使用 Ingress 方式,则可以配置下面参数,配置为 NodePort
29 #clusterIP:
30 # name: harbor
31 # ports:
32 # httpPort: 80
33 # httpsPort: 443
34 # notaryPort: 4443
35 #nodePort:
36 # name: harbor
37 # ports:
38 # http:
39 # port: 80
40 # nodePort: 30011
41 # https:
42 # port: 443
43 # nodePort: 30012
44 # notary:
45 # port: 4443
46 # nodePort: 30013
47
48## 如果Harbor部署在代理后,将其设置为代理的URL,这个值一般要和上面的 Ingress 配置的地址保存一致
49externalURL: https://hub.mydlq.club
50
51### Harbor 各个组件的持久化配置,并设置各个组件 existingClaim 参数为上面创建的对应 PVC 名称
52persistence:
53 enabled: true
54 ### 存储保留策略,当PVC、PV删除后,是否保留存储数据
55 resourcePolicy: "keep"
56 persistentVolumeClaim:
57 registry:
58 existingClaim: "harbor-registry"
59 size: 100Gi
60 chartmuseum:
61 existingClaim: "harbor-chartmuseum"
62 size: 5Gi
63 jobservice:
64 existingClaim: "harbor-jobservice"
65 size: 5Gi
66 database:
67 existingClaim: "harbor-database"
68 size: 5Gi
69 redis:
70 existingClaim: "harbor-redis"
71 size: 5Gi
72 trivy:
73 existingClaim: "harbor-trivy"
74 size: 5Gi
75
76### 默认用户名 admin 的密码配置,注意:密码中一定要包含大小写字母与数字
77harborAdminPassword: "Mydlq123456"
78
79### 设置日志级别
80logLevel: info
81
82#各个组件 CPU & Memory 资源相关配置
83nginx:
84 resources:
85 requests:
86 memory: 256Mi
87 cpu: 500m
88portal:
89 resources:
90 requests:
91 memory: 256Mi
92 cpu: 500m
93core:
94 resources:
95 requests:
96 memory: 256Mi
97 cpu: 1000m
98jobservice:
99 resources:
100 requests:
101 memory: 256Mi
102 cpu: 500m
103registry:
104 registry:
105 resources:
106 requests:
107 memory: 256Mi
108 cpu: 500m
109 controller:
110 resources:
111 requests:
112 memory: 256Mi
113 cpu: 500m
114clair:
115 clair:
116 resources:
117 requests:
118 memory: 256Mi
119 cpu: 500m
120 adapter:
121 resources:
122 requests:
123 memory: 256Mi
124 cpu: 500m
125notary:
126 server:
127 resources:
128 requests:
129 memory: 256Mi
130 cpu: 500m
131 signer:
132 resources:
133 requests:
134 memory: 256Mi
135 cpu: 500m
136database:
137 internal:
138 resources:
139 requests:
140 memory: 256Mi
141 cpu: 500m
142redis:
143 internal:
144 resources:
145 requests:
146 memory: 256Mi
147 cpu: 500m
148trivy:
149 enabled: true
150 resources:
151 requests:
152 cpu: 200m
153 memory: 512Mi
154 limits:
155 cpu: 1000m
156 memory: 1024Mi
157
158#开启 chartmuseum,使 Harbor 能够存储 Helm 的 chart
159chartmuseum:
160 enabled: true
161 resources:
162 requests:
163 memory: 256Mi
164 cpu: 500m
五、安装 Harbor
1、添加 Helm 仓库
1$ helm repo add harbor https://helm.goharbor.io
2、部署 Harbor
1$ helm install harbor harbor/harbor --version 1.5.2 -f values.yaml -n mydlq-hub
3、查看应用是否部署完成
1$ kubectl get deployment -n mydlq-hub
2
3NAME READY UP-TO-DATE AVAILABLE AGE
4harbor-harbor-chartmuseum 1/1 1 1 5m
5harbor-harbor-clair 1/1 1 1 5m
6harbor-harbor-core 1/1 1 1 5m
7harbor-harbor-jobservice 1/1 1 1 5m
8harbor-harbor-notary-server 1/1 1 1 5m
9harbor-harbor-notary-signer 1/1 1 1 5m
10harbor-harbor-portal 1/1 1 1 5m
11harbor-harbor-registry 1/1 1 1 5m
4、Host 配置域名
接下来配置 Hosts,客户端想通过域名访问服务,必须要进行 DNS 解析,由于这里没有 DNS 服务器进行域名解析,所以修改 hosts 文件将 Harbor 指定节点的 IP 和自定义 host 绑定。打开电脑的 Hosts 配置文件,往其加入下面配置:
1192.168.2.11 hub.mydlq.club
5、访问 Harbor
输入地址 https://hub.mydlq.club
访问 Harbor 仓库。
- 用户:admin
- 密码:Mydlq123456 (在安装配置中自定义的密码)
进入后可以看到 Harbor 的管理后台:
六、服务器配置镜像仓库
1、查看 Harbor 证书
再上面部署 harbor 过程中创建了 https 证书 ca.crt
。这里我们查看证书,内容如下:
1-----BEGIN CERTIFICATE-----
2MIIC9TCCAd2gAwIBAgIRALztT/b8wlhjw50UECEOTR8wDQYJKoZIhvcNAQELBQAw
3FDESMBAGA1UEAxMJaGFyYm9yLWNhMB4XDTIwMDIxOTA3NTgwMFoXDTIxMDIxODA3
4NTgwMFowFDESMBAGA1UEAxMJaGFyYm9yLWNhMIIBIjANBgkqhkiG9w0BAQEFAAOC
5AQ8AMIIBCgKCAQEArYbsxYmNksU5eQhVIM3OKac4l6MV/5u5belAlWSdpbbQCwMF
6G/gAliTSQMgqcmhQ3odYTKImvx+5zrhP5b1CWXCQCVOlOFSLrs3ZLv68ZpKoDLkg
76XhoQFVPLM0v5V+YzWCGAson81LfX3tDhltnOItSpe2KESABVH+5L/2vo25P7Mvw
84bWEWMyY4AS/3toiDZjhwNMrMb2lpICrlH9Sc3dAOzUteyVznA5/WF8IyPI64aKn
9tl0gxLOZgUBTkBoxVhPj7dNNZu8lMnqAYXmhWt+oRr7t1HHp2lOtk2u/ndyV0kKL
10xufx5FYVJQel2yRBGc/C1QLN18nC1y6u5pITaQIDAQABo0IwQDAOBgNVHQ8BAf8E
11BAMCAqQwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA8GA1UdEwEB/wQF
12MAMBAf8wDQYJKoZIhvcNAQELBQADggEBACFT92PWBFeCT7By8y8+EkB2TD1QVMZm
13NDpBS75q5s2yIumFwJrbY6YsHtRkN1Zx9jc4LiJFHC6r0ES3tbCDapsxocvzn7dW
14XLNTtnSx0zPxNXZzgmTsamfunBd4gszdXMshJ+bKsEoTXhJEXVjZq/k0EZS8L4Mp
15NZ7ciPqwAI1Tg+mFGp5UOvzxYLyW8nCLPykC73y3ob1tiO6xdyD/orTAbA6pIMc9
167ajTfwYj4Q6JPY/QAmu0S+4hJHs724IrC6hiXUlQNVVRW/d3k+nXbYttnnmPnQXC
17RyK2ru7R8H43Zlwj26kQJo6naQoQ0+Xcjcyk5llPqJxCrk3uoHF0r4U=
18-----END CERTIFICATE-----
2、服务器 Docker 中配置 Harbor 证书
然后进入服务器,在服务器上 /etc/docker
目录下创建 certs.d
文件夹,然后在 certs.d
文件夹下创建 Harobr 域名文件夹,可以输入下面命令创建对应文件夹:
1$ mkdir -p /etc/docker/certs.d/hub.mydlq.club
然后再 /etc/docker/certs.d/hub.mydlq.club
目录下创建上面的 ca 证书文件:
1$ cat > /etc/docker/certs.d/hub.mydlq.club/ca.crt << EOF
2-----BEGIN CERTIFICATE-----
3MIIC9TCCAd2gAwIBAgIRALztT/b8wlhjw50UECEOTR8wDQYJKoZIhvcNAQELBQAw
4FDESMBAGA1UEAxMJaGFyYm9yLWNhMB4XDTIwMDIxOTA3NTgwMFoXDTIxMDIxODA3
5NTgwMFowFDESMBAGA1UEAxMJaGFyYm9yLWNhMIIBIjANBgkqhkiG9w0BAQEFAAOC
6AQ8AMIIBCgKCAQEArYbsxYmNksU5eQhVIM3OKac4l6MV/5u5belAlWSdpbbQCwMF
7G/gAliTSQMgqcmhQ3odYTKImvx+5zrhP5b1CWXCQCVOlOFSLrs3ZLv68ZpKoDLkg
86XhoQFVPLM0v5V+YzWCGAson81LfX3tDhltnOItSpe2KESABVH+5L/2vo25P7Mvw
94bWEWMyY4AS/3toiDZjhwNMrMb2lpICrlH9Sc3dAOzUteyVznA5/WF8IyPI64aKn
10tl0gxLOZgUBTkBoxVhPj7dNNZu8lMnqAYXmhWt+oRr7t1HHp2lOtk2u/ndyV0kKL
11xufx5FYVJQel2yRBGc/C1QLN18nC1y6u5pITaQIDAQABo0IwQDAOBgNVHQ8BAf8E
12BAMCAqQwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA8GA1UdEwEB/wQF
13MAMBAf8wDQYJKoZIhvcNAQELBQADggEBACFT92PWBFeCT7By8y8+EkB2TD1QVMZm
14NDpBS75q5s2yIumFwJrbY6YsHtRkN1Zx9jc4LiJFHC6r0ES3tbCDapsxocvzn7dW
15XLNTtnSx0zPxNXZzgmTsamfunBd4gszdXMshJ+bKsEoTXhJEXVjZq/k0EZS8L4Mp
16NZ7ciPqwAI1Tg+mFGp5UOvzxYLyW8nCLPykC73y3ob1tiO6xdyD/orTAbA6pIMc9
177ajTfwYj4Q6JPY/QAmu0S+4hJHs724IrC6hiXUlQNVVRW/d3k+nXbYttnnmPnQXC
18RyK2ru7R8H43Zlwj26kQJo6naQoQ0+Xcjcyk5llPqJxCrk3uoHF0r4U=
19-----END CERTIFICATE-----
20EOF
3、登录 Harbor 仓库
只有登录成功后才能将镜像推送到镜像仓库,所以配置完证书后尝试登录,测试是否能够登录成功:
如果提示 ca 证书错误,则重建检测证书配置是否有误。
1$ docker login -u admin -p Mydlq123456 hub.mydlq.club
七、服务器配置 Helm Chart 仓库
1、配置 Helm 证书
跟配置 Docker 仓库一样,配置 Helm 仓库也得提前配置证书,首先进入 ca 签名目录
如果下面执行的目录不存在,请用 yum 安装 ca-certificates 包。
1$ cat > /etc/pki/ca-trust/source/anchors/ca.crt << EOF
2-----BEGIN CERTIFICATE-----
3MIIC9TCCAd2gAwIBAgIRALztT/b8wlhjw50UECEOTR8wDQYJKoZIhvcNAQELBQAw
4FDESMBAGA1UEAxMJaGFyYm9yLWNhMB4XDTIwMDIxOTA3NTgwMFoXDTIxMDIxODA3
5NTgwMFowFDESMBAGA1UEAxMJaGFyYm9yLWNhMIIBIjANBgkqhkiG9w0BAQEFAAOC
6AQ8AMIIBCgKCAQEArYbsxYmNksU5eQhVIM3OKac4l6MV/5u5belAlWSdpbbQCwMF
7G/gAliTSQMgqcmhQ3odYTKImvx+5zrhP5b1CWXCQCVOlOFSLrs3ZLv68ZpKoDLkg
86XhoQFVPLM0v5V+YzWCGAson81LfX3tDhltnOItSpe2KESABVH+5L/2vo25P7Mvw
94bWEWMyY4AS/3toiDZjhwNMrMb2lpICrlH9Sc3dAOzUteyVznA5/WF8IyPI64aKn
10tl0gxLOZgUBTkBoxVhPj7dNNZu8lMnqAYXmhWt+oRr7t1HHp2lOtk2u/ndyV0kKL
11xufx5FYVJQel2yRBGc/C1QLN18nC1y6u5pITaQIDAQABo0IwQDAOBgNVHQ8BAf8E
12BAMCAqQwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA8GA1UdEwEB/wQF
13MAMBAf8wDQYJKoZIhvcNAQELBQADggEBACFT92PWBFeCT7By8y8+EkB2TD1QVMZm
14NDpBS75q5s2yIumFwJrbY6YsHtRkN1Zx9jc4LiJFHC6r0ES3tbCDapsxocvzn7dW
15XLNTtnSx0zPxNXZzgmTsamfunBd4gszdXMshJ+bKsEoTXhJEXVjZq/k0EZS8L4Mp
16NZ7ciPqwAI1Tg+mFGp5UOvzxYLyW8nCLPykC73y3ob1tiO6xdyD/orTAbA6pIMc9
177ajTfwYj4Q6JPY/QAmu0S+4hJHs724IrC6hiXUlQNVVRW/d3k+nXbYttnnmPnQXC
18RyK2ru7R8H43Zlwj26kQJo6naQoQ0+Xcjcyk5llPqJxCrk3uoHF0r4U=
19-----END CERTIFICATE-----
20EOF
执行更新命令,使证书生效:
1$ update-ca-trust extract
2、添加 Helm 仓库
添加 Helm 仓库:
1$ helm repo add myrepo --username=admin --password=Mydlq123456 https://hub.mydlq.club/chartrepo/library
- --username:harbor仓库用户名
- --password:harbor仓库密码
- --ca-file:指向ca.crt证书地址
- chartrepo:如果是chart仓库地址,中间必须加chartrepo
- library:仓库的项目名称
查看仓库列表:
1$ helm repo list
2
3NAME URL
4stable https://kubernetes-charts.storage.googleapis.com
5harbor https://helm.goharbor.io
6myrepo https://hub.mydlq.club/chartrepo/library
八、测试功能
1、推送与拉取 Docker 镜像
这里为了测试推送镜像,先下载一个用于测试的 helloworld
小镜像,然后推送到 hub.mydlq.club
仓库:
1### 拉取 Helloworld 镜像
2$ docker pull hello-world:latest
3
4### 将下载的镜像使用 tag 命令改变镜像名
5$ docker tag hello-world:latest hub.mydlq.club/library/hello-world:latest
6
7### 推送镜像到镜像仓库
8$ docker push hub.mydlq.club/library/hello-world:latest
将之前的下载的镜像删除,然后测试从 hub.mydlq.club
下载镜像进行测试:
1### 删除之前镜像
2$ docker rmi hello-world:latest
3$ docker rmi hello-world:latest hub.mydlq.club/library/hello-world:latest
4
5### 测试从 `hub.mydlq.club` 下载新镜像
6$ docker pull hub.mydlq.club/library/hello-world:latest
2、推送与拉取 Chart
Helm 要想推送 Chart 到 Helm 仓库,需要提前安装上传插件:
1$ helm plugin install https://github.com/chartmuseum/helm-push
然后创建一个测试的 Chart 进行推送测试:
1### 创建一个测 试chart
2$ helm create hello
3
4### 打包chart,将chart打包成tgz格式
5$ helm package hello
6
7### 推送 chart 进行测试
8$ helm push hello-0.1.0.tgz myrepo
9
10Pushing hello-0.1.0.tgz to myrepo...
11Done.
---END---
!版权声明:本博客内容均为原创,每篇博文作为知识积累,写博不易,转载请注明出处。