Repository

repository就是一个http服务。以阿里的repository为例,它的URL为https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts,那么这个repository的chart索引文件的URL就为https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts/index.yaml,下载后我们可以用记事本打开它,里面记录了该repository中所有chart的元数据。文件结构如下(只展示了部分内容):

上面的部分内容可以看到,这个repository里有etcd-operator,并且有0.7.00.5.0两个版本,而且还给出了这两个版本的下载URL,分别为https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts/etcd-operator-0.7.0.tgzhttps://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts/etcd-operator-0.5.0.tgz

所以,如果我们知道一个repository的URL,可以直接通过wget <URL>/index.yaml下载其索引文件,并且直接通过wget <URL>/<chart>-<version>.tgz来下载指定版本的chart。比如google repository的URL为https://kubernetes-charts.storage.googleapis.com,那么索引文件链接为https://kubernetes-charts.storage.googleapis.com/index.yaml,chart的链接为https://kubernetes-charts.storage.googleapis.com/<chart>-<version>.tgz

接下来将介绍如何搭建一个私有的repository。一种是使用helm,另一种是使用httpd。

假设我们规划的repository的URL为http://x.x.x.x:8050/charts,chart放在主机的/var/www/html/charts/目录下。

使用Helm

首先安装好Helm客户端,然后执行以下的命令:

$ helm serve --address=0.0.0.0:8050 --repo-path=/var/www/html/charts --url http://x.x.x.x:8050/charts &

然后把chart的tgz包拷贝到/var/www/html/charts目录下即可

使用httpd

首先安装好httpd,rootdir设置为/var/www/html,监听端口为8050。

接下来我们也需要安装Helm客户端。然后,我们把chart的tgz包拷贝到/var/www/html/charts/目录下,然后执行命令:

$ helm repo index /var/www/html/charts

此时,会在/var/www/html/charts目录下生成一个index.yaml文件,然后就OK了。

如果有新的chart包加进来,重新执行一次上述的命令即可。

Last updated

Was this helpful?