{"msg":"操作成功","code":200,"data":{"createBy":"admin","createTime":"2022-01-07 10:05:05","updateBy":"admin","updateTime":"2022-01-07 10:05:05","remark":null,"id":75,"articleTitle":"Kubernetes（十三）Helm应用包管理工具","articleUrl":"k8s_helm_introduction","articleThumbnail":"https://www.asumimoe.com/imgfiles/20220906/f93daad129a04b8db74eed70cd45263b.png","articleFlag":"0","draftStatus":"1","reprintStatement":"1","articleSummary":"我们可以将Helm看作Kubernetes下的apt-get/yum。Helm是Deis (https://deis.com/) 开发的一个用于kubernetes的包管理器。每个包称为一个Chart，一个Chart是一个目录（一般情况下会将目录进行打包压缩，形成name-version.tgz格式的单一文件，方便传输和存储）","articleContent":"## Helm介绍\n\n很多人都使用过Ubuntu下的ap-get或者CentOS下的yum, 这两者都是Linux系统下的包管理工具。采用apt-get/yum,应用开发者可以管理应用包之间的依赖关系，发布应用；用户则可以以简单的方式查找、安装、升级、卸载应用程序。\n\n我们可以将Helm看作Kubernetes下的apt-get/yum。Helm是Deis (https://deis.com/) 开发的一个用于kubernetes的包管理器。每个包称为一个Chart，一个Chart是一个目录（一般情况下会将目录进行打包压缩，形成name-version.tgz格式的单一文件，方便传输和存储）。\n\n对于应用发布者而言，可以通过Helm打包应用，管理应用依赖关系，管理应用版本并发布应用到软件仓库。\n\n对于使用者而言，使用Helm后不用需要了解Kubernetes的Yaml语法并编写应用部署文件，可以通过Helm下载并在kubernetes上安装需要的应用。\n\n除此以外，Helm还提供了kubernetes上的软件部署，删除，升级，回滚应用的强大功能。\n\n### 三大概念\n\n*Chart* 代表着 Helm 包。它包含在 Kubernetes 集群内部运行应用程序，工具或服务所需的所有资源定义。你可以把它看作是 Homebrew formula，Apt dpkg，或 Yum RPM 在Kubernetes 中的等价物。\n\n*Repository（仓库）* 是用来存放和共享 charts 的地方。它就像 Perl 的 [CPAN 档案库网络](https://www.cpan.org) 或是 Fedora 的 [软件包仓库](https://src.fedoraproject.org/)，只不过它是供 Kubernetes 包所使用的。\n\n*Release* 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 *release*。以 MySQL chart为例，如果你想在你的集群中运行两个数据库，你可以安装该chart两次。每一个数据库都会拥有它自己的 *release* 和 *release name*。\n\n在了解了上述这些概念以后，我们就可以这样来解释 Helm：\n\nHelm 安装 *charts* 到 Kubernetes 集群中，每次安装都会创建一个新的 *release*。你可以在 Helm 的 chart *repositories* 中寻找新的 chart。\n\n## Helm安装\n\n### 二进制版本安装\n\n每个Helm版本都提供了各种操作系统的二进制版本，这些版本可以手动下载和安装。需要注意的是Helm版本与Kubernetes版本是对应的。不推荐将Helm用于比编译它所依赖的版本更高的Kubernetes版本，因为Helm并没有做出任何向前兼容的保证。下标为Helm版本与支持的Kubernetes版本\n\n| Helm 版本 | 支持的 Kubernetes 版本 |\n| --------- | ---------------------- |\n| 3.8.x     | 1.23.x - 1.20.x        |\n| 3.7.x     | 1.22.x - 1.19.x        |\n| 3.6.x     | 1.21.x - 1.18.x        |\n| 3.5.x     | 1.20.x - 1.17.x        |\n| 3.4.x     | 1.19.x - 1.16.x        |\n| 3.3.x     | 1.18.x - 1.15.x        |\n| 3.2.x     | 1.18.x - 1.15.x        |\n| 3.1.x     | 1.17.x - 1.14.x        |\n| 3.0.x     | 1.16.x - 1.13.x        |\n| 2.16.x    | 1.16.x - 1.15.x        |\n| 2.15.x    | 1.15.x - 1.14.x        |\n| 2.14.x    | 1.14.x - 1.13.x        |\n| 2.13.x    | 1.13.x - 1.12.x        |\n| 2.12.x    | 1.12.x - 1.11.x        |\n| 2.11.x    | 1.11.x - 1.10.x        |\n| 2.10.x    | 1.10.x - 1.9.x         |\n| 2.9.x     | 1.10.x - 1.9.x         |\n| 2.8.x     | 1.9.x - 1.8.x          |\n| 2.7.x     | 1.8.x - 1.7.x          |\n| 2.6.x     | 1.7.x - 1.6.x          |\n| 2.5.x     | 1.6.x - 1.5.x          |\n| 2.4.x     | 1.6.x - 1.5.x          |\n| 2.3.x     | 1.5.x - 1.4.x          |\n| 2.2.x     | 1.5.x - 1.4.x          |\n| 2.1.x     | 1.5.x - 1.4.x          |\n| 2.0.x     | 1.4.x - 1.3.x          |\n\n1.下载安装包\n\n[https://github.com/helm/helm/releases](https://github.com/helm/helm/releases)\n\n2.解压文件\n\n```bash\ntar -xvf helm-v3.8.2-linux-amd64.tar.gz\n```\n\n3.复制可执行文件\n\n```shell\ncd linux-amd64\nmv helm /usr/bin/\n```\n\n### 脚本安装\n\n```shell\ncurl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3\nchmod 700 get_helm.sh\n./get_helm.sh\n```\n\n## 简单实用\n\n1. 添加仓库\n\n   ```shell\n   helm repo add stable http://mirror.azure.cn/kubernetes/charts\n   ```\n\n2. 查看仓库\n\n   ```shell\n   helm repo list\n   \n   NAME \tURL                                     \n   stale\thttp://mirror.azure.cn/kubernetes/charts\n   ```\n\n3. 移除仓库\n\n   ```shell\n   helm repo remove stable\n   ```\n\n4. 搜索helm包\n\n   ```shell\n   helm search repo weave # 支持模糊匹配\n   NAME             \tCHART VERSION\tAPP VERSION\tDESCRIPTION                                       \n   stale/weave-cloud\t0.3.9        \t1.4.0      \tDEPRECATED - Weave Cloud is a add-on to Kuberne...\n   stale/weave-scope\t1.1.12       \t1.12.0     \tDEPRECATED - A Helm chart for the Weave Scope c...\n   ```\n\n5. 安装helm包并查看\n\n   ```shell\n   helm install weave-test stale/weave-scope # 最简单的使用方法只需要传入两个参数：你命名的release名字和你想安装的chart的名称\n   \n   helm list\n   NAME      \tNAMESPACE\tREVISION\tUPDATED                                \tSTATUS  \tCHART             \tAPP VERSION\n   weave-test\tdefault  \t1       \t2022-04-29 11:34:01.650053744 +0800 CST\tdeployed\tweave-scope-1.1.12\t1.12.0     \n   \n   helm status weave-test\n   NAME: weave-test\n   LAST DEPLOYED: Fri Apr 29 11:34:01 2022\n   NAMESPACE: default\n   STATUS: deployed\n   REVISION: 1\n   NOTES:\n   You should now be able to access the Scope frontend in your web browser, by\n   using kubectl port-forward:\n   \n   kubectl -n default port-forward $(kubectl -n default get endpoints \\\n   weave-test-weave-scope -o jsonpath='{.subsets[0].addresses[0].targetRef.name}') 8080:4040\n   \n   then browsing to http://localhost:8080/.\n   For more details on using Weave Scope, see the Weave Scope documentation:\n   \n   https://www.weave.works/docs/scope/latest/introducing/\n   ```\n\n6. helm包卸载\n\n   ```shell\n   helm uninstall weave-test\n   ```\n\n   在 Helm 3 中，删除也会移除 release 的记录。 如果你想保留删除记录，使用 `helm uninstall --keep-history`。使用 `helm list --uninstalled` 只会展示使用了 `--keep-history` 删除的 release。\n\n   `helm list --all` 会展示 Helm 保留的所有 release 记录，包括失败或删除的条目（指定了 `--keep-history`）。\n\n   因为现在默认会删除 release，所以你不再能够回滚一个已经被卸载的资源了。\n\n","categoryId":10,"viewCount":1368,"categoryName":"Kubernetes","author":"球接子","authorAvatar":null,"tagIds":[16],"tagNames":["Kubernetes"]}}