「Kubernetes12」Helm释放部署生产力( 二 )


1 , 要对外暴露自身的端口;
2 , 自身运行过程中 , 跟 Kubernetes 交互需要很高的权限 , 这样才可以在 Kuberentes 中创建、删除各种各样的资源 。
当然了 , 之所以有这种架构设计是由于在 Helm 2 开发的时候 , Kubernetes 的 RBAC 体系还没有建立完成 。 Kubernetes 社区直到 2017 年 10 月份 v1.8 版本才默认采用了 RBAC 权限体系 。 随着 Kubernetes 的各项功能日益完善 , 主要是 RBAC 能力 , Tiller 这个组件存在的必要性进一步降低 , 社区也在一直想着怎么去解决 TIller 的安全问题 。
我们再来看看 Helm 3 。
Helm 3Helm 3 是在 Helm 2 之上的一次大更改 , 于 2019 年 11 月份正式推出 。 相比较于 Helm 2 ,Helm 3 简单了很多 , 移除了 Tiller , 只剩下一个 Helm Client 。 在使用中 , 你只需要这一个二进制可执行文件即可 , 使用你当前用的 kubeconfig 文件 , 即可在 Kubernetes 集群中部署 Chart、管理 Release 。
至此 , Helm 2 开始要退出历史的舞台了 。 目前 Helm 社区官方也逐步开始暂停维护 Helm 2 , 最终的 Bugfix 修复截止到今年的 8 月份 , 版本号是 v2.16.10 , 而安全相关的 patch 会继续支持 , 直到 今年的 11 月份 。
如果你还在使用 Helm 2 , 建议你尽快切换到 Helm 3 上来 。 Helm 社区也提供了相关的插件 , 帮助你从 Helm 2 迁移到 Helm 3 中通过这个版本迭代的过程 , 你应该也清楚了 Helm 的原理 , 对它更加熟悉了 , 接下来我们一起动手实践看看 。
如何创建和部署 Helm Chart创建一个 Chart 很简单 , 通过helm create的命令就可以创建一个 Chart 模板出来:
$ helm create hello-world
Creating hello-world
我们现在来看看这个 Chart 的目录里面有什么:
$ tree ./hello-world./hello-world├── Chart.yaml├── charts├── templates│├── NOTES.txt│├── _helpers.tpl│├── deployment.yaml│├── hpa.yaml│├── ingress.yaml│├── service.yaml│├── serviceaccount.yaml│└── tests│└── test-connection.yaml└── values.yaml这里面包含了我们上面讲的 Chart.yaml 和 values.yaml 。
先看看这里 Chart.yaml 的内容:
apiVersion: v2name: hello-worlddescription: A Helm chart for Kubernetestype: applicationversion: 0.1.0appVersion: 1.16.0可以看到 , 这里 Chart 的名字就是我们 Chart 所在目录的名字 。 你在使用的时候 , 就可以在这个文件里面添加 keyword , 以及 annotation , 方便后续查找和分类 。 values.yaml 里面包含了一些可配置的参数 , 你可以根据自己的需要进行添加 , 或者修改默认值等 。
这个目录下面有个charts文件夹 , 主要用来放置一些子 Chart 包 , 也可以是 tar 包、 Chart 目录 。 你可以根据自己的场景 , 决定需不需要放置子 Chart 包 。
这个目录里面还有个templates文件夹 , 这个文件夹里面的文件是一些模板文件 , Helm 会根据values.yaml的参数进行渲染 , 然后在 Kubernetes 集群中创建出来 。
你可以根据自己的需要 , 在这个templates目录下 , 添加和更改 yaml 文件 。
你这样创建好了一个 Chart 包后 , 如果想要更改其中一些参数 , 可以将它们放到其他的文件里面 , 比如 myvalues.yaml 文件 。
然后通过helm install命令 , 你就可以在 Kubernetes 集群里面部署 hello-world 这个 Chart 包:
helm install -f myvalues.yaml hello-world ./hello-world
或者 , 你可以通过添加 Repository 直接使用别人的 Chart , 使用helm search来查找自己想要的 Chart:
$ helm repo add brigade "brigade" has been added to your repositories$ helm search repo brigadeNAMECHART VERSION APP VERSION DESCRIPTIONbrigade/brigade1.3.2v1.2.1Brigade provides event-driven scripting of Kube...brigade/brigade-github-app0.4.1v0.2.1The Brigade GitHub App, an advanced gateway for...brigade/brigade-github-oauth0.2.0v0.20.0The legacy OAuth GitHub Gateway for Brigadebrigade/brigade-k8s-gateway0.1.0A Helm chart for Kubernetesbrigade/brigade-project1.0.0v1.0.0Create a Brigade projectbrigade/kashti0.4.0v0.4.0A Helm chart for Kubernetes