ui设计做网站,足球网页制作模板,广州注册公司流程及费用,活字格能开发企业网站吗helm介绍-部署helm私有仓库案例
helm介绍-部署helm私有仓库案例
在Kubernetes中部署容器云的应用也是一项有挑战性的工作#xff0c;Helm就是为了简化在Kubernetes中安装部署容器云应用的一个客户端工具。通过helm能够帮助开发者定义、安装和升级Kubernetes中的容器云应用Helm就是为了简化在Kubernetes中安装部署容器云应用的一个客户端工具。通过helm能够帮助开发者定义、安装和升级Kubernetes中的容器云应用同时也可以通过helm进行容器云应用的分享。在Kubeapps Hub中提供了包括Redis、MySQL和Jenkins等常见的应用通过helm可以使用一条命令就能够将其部署安装在自己的Kubernetes集群中。 Helm是一个用于kubernetes的包管理器。每个包称为一个Chart一个Chart是一个目录一般情况下会将目录进行打包压缩形成name-version.tgz格式的单一文件方便传输和存储。我们可以将Helm看作Kubernetes下的apt-get/yum。
对于应用发布者而言可以通过Helm打包应用管理应用依赖关系管理应用版本并发布应用到软件仓库。
对于使用者而言使用Helm后无须了解Kubernetes的yaml文件语法、应用部署文件。直接使用Helm下载即可在Kubernetes上安装需要的应用。 1Helm Helm是一个命令行下的客户端工具。主要用于Kubernetes应用程序Chart的创建、打包、发布及创建和管理 本地和远程的Chart仓库。 2Chart Chart是一个Helm的程序包包含了运行一个Kubernetes应用程序所需的镜像、依赖关系和资源定义等。 3Repoistory Repoistory是Helm的软件仓库Repository本质上是一个Web服务器该服务器保存了一系列的Chart软件包 以供用户下载并且提供了该Repository的Chart包的清单文件便于查询。Helm可以同时管理多个不同的Repository。 4Release Release是应用程序运行Chart之后得到的一个实例。 部署helm私有仓库
1node01节点运行web容器作为私有仓库
[rootnode01 ~]# mkdir -p /var/www/charts //创建目录用于存放charts包
[rootnode01 ~]# docker run -d -p 8080:80 -v /var/www:/usr/local/apache2/htdocs httpd
或使用Nginx服务
docker run -d -p 8080:80 -v /root/charts:/usr/share/nginx/html nginx 2master节点上创建chart包并打包
[rootmaster ~]# helm create testchart //创建chart包生成的是目录名称为testchart
[rootmaster ~]# helm package testchart //将刚才生成的目录进行打包会在当前目录下生成名为testchart-0.1.0.tgz的包 3master节点生成仓库的index文件
[rootmaster ~]# mkdir myrepo
[rootmaster ~]# mv testchart-0.1.0.tgz myrepo/ //创建用于存放chart包的目录并将chart包移动到该目录 [rootmaster ~]# helm repo index myrepo/ --url http://192.168.45.141:8080/charts //url路径表示运行web容器的节点IP端口也就是指定的是node01节点
[rootmaster ~]# ls myrepo/ index.yaml testchart-0.1.0.tgz //确认已经生成index.yaml文件 [rootmaster ~]# scp myrepo/* node01:/var/www/charts //将生成的index.yaml文件及charts包复制到web容器所在节点映射的本地目录 4将新repo仓库添加到helm
[rootmaster ~]# helm repo add newrepo http://192.168.45.141:8080/charts //url是web容器所在的节点的IP端口存放chart包的目录并指定仓库的名称为newrepo [rootmaster ~]# helm repo list
NAME URL
stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
local http://127.0.0.1:8879/charts
newrepo http://192.168.45.141:8080/charts
//stable是刚创建helm添加的阿里云的仓库
//local是本地的缓存
//newrepo是刚刚添加的仓库名称确认该仓库已经存在 注配置至此已经可以正常供内网环境使用这个charts包的私有仓库了下面是一些验证。 5搜索可用的chart包并部署
[rootmaster ~]# helm search testchart
NAME CHART VERSION APP VERSION DESCRIPTION
local/testchart 0.1.0 1.0 A Helm chart for Kubernetes
newrepo/testchart 0.1.0 1.0 A Helm chart for Kubernetes
//local是本地的缓存不用理会可以查看到newrepo提供的testchart包 [rootmaster ~]# helm install newrepo/testchart -n test-nginx
//既然可以搜索到就表示可以使用chart包创建实例
[rootmaster ~]# kubectl get pod | grep test-nginx
//确认pod运行成功 test-nginx-testchart-64d8585997-jxtv7 1/1 Running 0 33s
[rootmaster ~]# kubectl describe pod test-nginx-testchart-64d8585997-jxtv7
//查看这个pod的详细信息并确认pod所使用的镜像 6更新chart包中所运行服务的镜像
其实就是一个服务版本升级的操作大概思路如下修改解压后的charts包目录下的values.yaml文件为所需的值values.yaml文件包含的是这个服务的值可以在里面指定镜像及标签、数据持久化的类型等等修改完成后再使用下面的命令进行升级操作。
[rootmaster ~]# helm upgrade -f testchart/values.yaml test-nginx newrepo/testchart
//my-nginx是之前实例的名称可以通过“helm list”查看实例名称
//newrepo/testchart 为自定义仓库中的chart包
[rootmaster ~]# kubectl describe pod test-nginx-testchart-6d6984ddd9-gn9sw
//确认pod所使用的镜像已经更新
注如果使用命令的方式直接进行升级命令执行完成不会报错但是镜像并不会更新推荐使用更改values.yaml的方式进行升级 7再次向newrepo仓库上传chart包
[rootmaster ~]# helm create mychart
[rootmaster ~]# helm package mychart/
[rootmaster ~]# mv mychart-0.1.0.tgz myrepo/
[rootmaster ~]# helm repo index myrepo/ --url http://192.168.45.141:8080/charts
//当有新的chart包时需更新index.yaml文件
[rootmaster ~]# scp myrepo/* node01:/var/www/charts
[rootmaster ~]# helm repo update
//如果需要使用则需更新一下本地的仓库
[rootmaster ~]# helm search mychart
NAME CHART VERSION APP VERSION DESCRIPTION
local/mychart 0.1.0 1.0 A Helm chart for Kubernetes
newrepo/mychart 0.1.0 1.0 A Helm chart for Kubernetes
//确保新添加的chart包可以被搜索到