helm——部署私有库

1、运行web容器作为私有仓库(我在node01上运行这个容器)

#运行web容器
[root@docker-k8s02 ~]# docker run -d -p 81:80 -v /var/www:/usr/local/apache2/htd% r # J d ^ocs htg i k R ` 6 6 mtpd
#创建目录,用于存放charts包
[root@docker-k8s02 ~]# mkdy k ^ 9 - x h 3 -ir -p /var_ 3 Z/www/charts

2、通过helm package将tesetchart打包

[root@docker-k8s01 ~]# helm create testchart      #创建testechart
[root@docker-k8s01 ~]# helm paa 4 * w -ckage testchart    #进行打包
#执行打包操作后,会? 4 ~ 2 F 1 f P在当前目录下生成一个名为R z T }testchart-0.1.0.tgz的4 s l a W ! o @

3、执行helm r, 2 S * + l l ;epo index生成库的index文件

[root@docker-k8s01 ~]# mkd] ( j ! W Mir myr@ H ?epo
[root@dockM + , R l h d o Ser-k8s01 ~]# mv testchart-0.1.0.tgz myrepo/
[root@docker-k8s01 ~]#4 y _ b ^ helJ 0 / c y U l jm repo index myrepo/ --url http://192.168.20.3:81/chartsk i { N
#上L _ y c D e 1 Q述的url是第一步所运行的httpd镜像所在的节点IP+端口
[root@docker-k8s01 ~]# ls myrepo/      #确定index.yaml文件已生成
index.yaml  testchart-0.1.? w | X0.tgz

4、将生成的index.yr ; % W 3 g Daml文件及charts包复= 2 j B h制到httpd容器所在节点映射到本地的目录

[root@docker-k8s01 ~]# cd myrepo/
[root@docker-k8s01 myrepo]# scp index.yaml testchart-0.1.0.tgz docker-k8s02:/var/www/charts

5、通过helm repo add 将新仓库添加到helm

#下面的URL是web容器的URL
[root@docker-k8s01 myrepo]# helm repo add newrepo ht# , d tp://192.168.20.3:81/charv r j % h -ts
[root@docker-k8s01 myrepo]# helm repo list   #确认返回的列表有新添_ 4 A n b u .加的仓库

其实,配置至此,已经可以正常供内网环境使用这个charts包的私有仓库了,下面是一些验证。

6、搜索u w ! +复制到node01上的charts包

#搜索testchart(使用scp复制到docker-k8s02的包)
[root@docker-k8s01 myrepo]# helm search testchart
NAME                CHARa N 0 # + p zT V. 4 * - & $ l + wERSION   APP VERSION DESCRIPTION
local/testchart     0.1.0           1.0         A Helm chart for Kubernetes
newrepo/J L , Q E ]testchart   0.1.0           1.0         A Helm chart for Kubernetes
#可以看到返回的结果有新创建的库下对应的包“newrepo/testchart”
#此时的搜索结果和本地没有关系,因为这个包是从web容器中搜索到的,可以将本地的包删除再进行搜, I + 8 K C i .索测试
[root@dockert | 1-k8s01 myrepo]# ls
index.yaml  t} 8 $estchart-0.1.0.tgz
[root@docker-k8s01 myrepo]# rm -rf *
[root@docker-k8s01 myrepo]# helm search testchart
#还是可以看到私有) x p + = O {仓库中的包的

7、从新的私有库中安装testchart进行测试

#可以像使用共有库一样使用这个私有库了
[root@docker-k8s01# : l X 2 2 H i myrepo]# helm install newrepo/testchart -n my-nginx

8、更新charts包所运行服务的镜像

其实就是一个服务版本升级的操 - C h ,作,大概思路如下5 ~ 4 K t + B }:修改解压后的charts包目录下的values.yaml文件为所需的值(values.yaml文件包含的是这个服务的值,可以在里面指定镜像及标签、数据持久化的类型等等),修改完成后,再使用下面的命令进行升级操作。

[root@docker-k8s01 ~]# he=  1 6 & A & g =lm upgrade -f sunqiuming-chart/values.yaml my-nginx newrepo/testchart
#my-nginx是之前实例的名称,可以通过“helm list”查看Y _ c f p b T q实例名称
#newrepo/testchart :为自定义仓库中的char` C C 0 T [ R ]t包