赞
踩
目录
每个成功的软件平台都有一个优秀的打包系统,比如Debian、Ubuntu 的 apt,RedHat、CentOS
的 yum。Helm 则是 Kubernetes上 的包管理器,方便我们更好的管理应用
Helm本质就是让K8s的应用管理(Deployment、Service等)可配置,可以通过类似于传递环境变
量的方式能动态生成。通过动态生成K8s资源清单文件(deployment.yaml、service.yaml)。 然后
调用 Kubectl 自动执行 K8s 资源部署。
在没使用 helm 之前,向 kubernetes 部署应用,我们要依次部署 deployment、svc 等,步骤较繁
琐。 况且随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂,helm 通过打
包的方式,支持发布的版本管理和控制, 很大程度上简化了 Kubernetes 应用的部署和管理。
Helm 是官方提供的类似于 YUM 的包管理器,是部署环境的流程封装。
Helm的官网地址:http:// https://helm.sh/
在Helm中 有三个重要的概念,分别为:Chart 、Repository 和 Release
还有一个在Helm3版本中就被移除的概念
Tiller: Helm 2.x版本中,Helm采用Client/Server的设计,Tiller就是Helm的Server部分,需要具备
集群管理员权限才能安装到K8s集群中运行。Tiller与Helm client进行交互,接收client的请求,再
与K8s API Server通信,根据传递的Charts来生成Release。而在最新的Helm 3.x中,据说是为了
安全性考虑移除了Tiller。
Helm在k8s集群运用中,总的来讲其作用过程:Helm 安装 charts 到 Kubernetes 集群中,每次安
装都会创建一个新的 release。你可以在 Helm 的 chart repositories 中寻找新的 chart
helm2的部署方式与使用
Helm2 是 C/S 架构,主要分为客户端 helm 和服务端 Tiller。在 Helm 2 中,Tiller 是作为一个
Deployment 部署在 kube-system 命名空间中,很多情况下,我们会为 Tiller 准备一个
ServiceAccount ,这个 ServiceAccount 通常拥有集群的所有权限。
用户可以使用本地 Helm 命令,自由地连接到 Tiller 中并通过 Tiller 创建、修改、删除任意命名空
间下的任意资源。
Helm3的部署与使用
在 Helm 3 中,Tiller 被移除了。新的 Helm 客户端会像 kubectl 命令一样,读取本地的 kubeconfig
文件,使用我们在 kubeconfig 中预先定义好的权限来进行一系列操作
- 上传helm-v3.6.0-linux-amd64.tar.gz
- tar -zxvf helm-v3.6.0-linux-amd64.tar.gz
- mv linux-amd64/helm /usr/local/bin/
- helm version
-
-
- //命令补全
- source <(helm completion bash)
- //添加常用的 chart 仓库,
- helm repo add bitnami https://charts.bitnami.com/bitnami
- helm repo add stable http://mirror.azure.cn/kubernetes/charts
- helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
- helm repo add incubator https://charts.helm.sh/incubator
-
- //查看 charts 列表
- helm repo list
-
- //更新 charts 列表
- helm repo update
-
- //查看 stable 仓库可用的 charts 列表
- helm search repo stable
-
- //删除 incubator 仓库
- helm repo remove incubator
-
- helm search repo <仓库名称> #查看仓库中可用的chart包列表
- helm search repo <软件名> #在仓库列表查询中可用的chart包
- helm search repo <chart包> -l #查看仓库中指定的chart包所有可用的历史版本列表,<chart包>格式为<仓库名称/软件包>
- helm show chart <chart包> #查看chart包的基本信息
- chart包安装、卸载:
- helm install -n <命名空间> <实例名称> <chart包> [--version <chart版本>] #通过chart包安装实例,默认安装最新版本
- helm ls -n <命名空间> #查看helm安装的实例
- helm list -n <命名空间>
- helm status -n <命名空间> <实例名称> #查看实例的状态
- helm uninstall -n <命名空间> <实例名称> #卸载实例
- chart包的管理:
- helm pull <chart包> #从仓库下载chart包
- helm create <chart包> #自建chart包
- helm lint <chart包目录> #检查chart包中的文件语法格式
- helm package <chart包目录> #将chart包目录打包成tar格式压缩包
vim Chart.yaml
- vim values.yaml
- 修改此文件中的配置
-
- helm lint myapp/ #检查chart包中的文件语法格式
- helm package myapp/ #将chart包目录打包成tar格式压缩包
-
- helm install -n xy101 myapp-1 myapp-1.0.0.tgz #部署
- 升级:修改配置文件后重新生成chart包
- helm upgrade -n <命名空间> <实例名称> <chart包> #升级实例
- helm history -n <命名空间> <实例名称> #查看实例的历史版本列表
- helm rollback -n <命名空间> <实例名称> <REVISION> #回滚实例到指定的chart历史版本
helm 可以使用 harbor 作为本地仓库,将自定义的 chart 推送至 harbor 仓库
- //安装 harbor
- #上传 harbor-offline-installer-v1.9.1.tgz 和 docker-compose 文件到 /opt 目录
- cd /opt
- cp docker-compose /usr/local/bin/
- chmod +x /usr/local/bin/docker-compose
-
- tar zxf harbor-offline-installer-v1.9.1.tgz
- cd harbor/
-
- vim harbor.yml
- hostname: 192.168.80.13
- harbor_admin_password: Harbor12345 #admin用户初始密码
- data_volume: /data #数据存储路径,自动创建
- chart:
- absolute_url: enabled #在chart中启用绝对url
- log:
- level: info
- local:
- rotate_count: 50
- rotate_size: 200M
- location: /var/log/harbor #日志路径
-
- #安装带有 Clair service 和 chart 仓库服务的 Harbor
- ./install.sh --with-clair --with-chartmuseum
-
- //安装 push 插件
- #在线安装
- helm plugin install https://github.com/chartmuseum/helm-push
-
- #离线安装
- wget https://github.com/chartmuseum/helm-push/releases/download/v0.8.1/helm-push_0.8.1_linux_amd64.tar.gz
-
- mkdir -p ~/.local/share/helm/plugins/helm-push
- tar -zxvf helm-push_0.8.1_linux_amd64.tar.gz -C ~/.local/share/helm/plugins/helm-push
- #登录 Harbor WEB UI 界面,创建一个新项目
- 浏览器访问:http://192.168.80.101 ,默认的管理员用户名和密码是 admin/Harbor12345
- 点击 “+新建项目” 按钮
- 填写项目名称为 “chart_repo”,访问级别勾选 “公开”,点击 “确定” 按钮,创建新项目
-
- #添加仓库
- helm repo add harbor http://192.168.80.13/chartrepo/chart_repo --username=admin --password=Harbor12345
- #注:这里的 repo 的地址是<Harbor URL>/chartrepo/<项目名称>,Harbor 中每个项目是分开的 repo。如果不提供项目名称,则默认使用 library 这个项目。
-
- helm repo ls
-
- #推送 chart 到 harbor 中
- cd /opt/helm
- helm push nginx harbor
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。