21|应用定义:如何使用 Helm 定义应用?
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了如何使用Helm来定义和管理Kubernetes应用。Helm是一个Kubernetes应用的包管理工具,通过Helm Chart和values.yaml的概念,以及Helm Release的概念,使得终端用户可以快速将应用安装到Kubernetes集群内。相比于Kustomize的隐式定义方式,Helm提供了更上层的应用定义方式。文章通过示例应用的改造过程,展示了如何将示例应用从原始的Kubernetes Manifest改造成Helm应用,并介绍了Helm的基本使用方法。此外,还介绍了如何使用模板变量和values.yaml来实现动态可控制的Helm Chart,并演示了在不同环境下部署Helm Chart的方法。另外,文章还介绍了Helm应用管理功能和相关命令,包括调试Helm Chart、查看已安装的Helm Release、更新Helm Release、查看Helm Release历史版本、回滚Helm Release以及卸载Helm Release等操作。通过这些内容,读者可以快速了解Helm应用管理工具的基本概念和使用方法。整体而言,本文内容详实,适合想要快速了解Helm应用管理工具的读者。
《云原生架构与 GitOps 实战》,新⼈⾸单¥59
全部留言(14)
- 最新
- 精选
- 邵涵几个问题麻烦问您一下: 1. 虽然和Kustomize相比,Helm的管理粒度是在应用层面了,但是,就如同本节的例子,使用Helm将一套应用部署到多环境时,也和Kustomize一样需要持有对每个环境的特殊配置,虽然Helm的模板变量的方式比Kustomize的manifest补丁文件的方式更灵活、高效,但也避免不了对不同环境分别配置的信息的管理,Helm对这种环境特殊配置信息的管理的最佳实践是什么样的?是将不同环境的values文件通过git保管?还是其他什么方式? 2. 对于Helm仓库,是否有需要像Harbor之于docker hub那样部署一个私有的Helm仓库在公司内部用?
作者回复: 非常棒的两个问题。 首先对于多环境的情况,一般的实践是通过多个 values.yaml 文件来实现,例如 values-dev.yaml,values-prod.yaml。 对于第二个问题,Harbor 支持存储 Helm Chart,你可以查看这个文档:https://goharbor.io/docs/1.10/working-with-projects/working-with-images/managing-helm-charts/
2023-03-16归属地:北京1 - gyl1989113这一章节要部署自己镜像仓库的镜像,是不是要把value.yaml里的lyzhang1999改成自己的dockerhub用户名哦
作者回复: 是的👍🏻
2023-02-13归属地:四川1 - Amosヾ2、执行安装时使用不同的 helm release name,并且通过命令行参数或 values.yaml 的方式修改 deploy、service 等对象的名字
作者回复: 👍🏻正确!
2023-01-25归属地:江苏1 - Sophia-百鑫问题1 的 结果, helm build.yaml 麻烦老师帮助指正 name: Build and Push Helm Chart on: push: branches: - main jobs: build-and-push-chart: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 # 拉取代码到工作目录 - name: Set up Helm uses: azure/setup-helm@v1 # 设置 Helm 环境 - name: Package Helm Chart run: helm package ./helm # 打包 Helm Chart,生成 .tgz 文件 - name: Push Helm Chart to GitHub Package run: helm push ./kubernetes-example-0.1.0.tgz oci://ghcr.io/githubusername/helm # 推送 Helm Chart 到 GitHub Package Registry env: HELM_EXPERIMENTAL_OCI: 1 with: password: ${{ secrets.GITHUB_TOKEN }} # 使用 GitHub Token 进行认证和授权
作者回复: 非常正确👍🏻
2023-07-28归属地:上海 - Sophia-百鑫kubernetes-example git:(main) ✗ helm install my-kubernetes-example ./helm --namespace helm-staging --create-namespace --set frontend.autoscaling.averageUtilization=60 --set backend.autoscaling.averageUtilization=60 Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "frontend" namespace: "" from "": no matches for kind "HorizontalPodAutoscaler" in version "autoscaling/v2beta2" ensure CRDs are installed first, resource mapping not found for name: "backend" namespace: "" from "": no matches for kind "HorizontalPodAutoscaler" in version "autoscaling/v2beta2" ensure CRDs are installed first] “Helm install” 需要先安装 CRD,网上说 “可以在chart中创建一个名为crds的特殊目录来保存CRD” 具体要怎么处理呢? 感谢老师 "
作者回复: 检查一下你的 k8s 集群版本,一般都有这个 crd,还可以尝试修改成 autoscaling/v2 版本。
2023-07-28归属地:上海 - 李多思考1: 在 Github Actions 插件库中,有 Helm 发布相关的工具,如:Helm Chart Releaser (https://github.com/marketplace/actions/helm-chart-releaser) 。在 steps 中使用 uses: helm/chart-releaser-action@v1.5.0,利用这个工具可以实现 Helm 发布。
作者回复: 👍🏻这个插件看起来不错~
2023-02-03归属地:山东 - 天地有雪可以了,原来ubuntu系统,helm 3.11版本,换成centos7 helm 3.8.0 没有问题
作者回复: 👍🏻
2023-01-29归属地:广东 - 天地有雪你好: 1 helm registry login -u mlkkkfriend https://ghcr.io Password: Error: Get "https://ghcr.io/v2/": denied: denied 文章中 在推送之前,还需要使用 GitHub ID 和刚才创建的 Token 登录到 GitHub Package。 需要什么操作
作者回复: 需要创建 GitHub Token,检查一下是否赋予了 Token Package 的读写权限。
2023-01-29归属地:广东2 - ghostwritten我的 centos 7.9.2009 & helm v3.11.0 没有遇到拒绝问题。 $ helm version version.BuildInfo{Version:"v3.11.0", GitCommit:"472c5736ab01133de504a826bd9ee12cbe4e7904", GitTreeState:"clean", GoVersion:"go1.18.10"} $ helm registry login -u ghostwritten https://ghcr.io Password: Login Succeeded $ helm package ./helm Successfully packaged chart and saved it to: /root/github/kubernetes-example/kubernetes-example-0.1.0.tgz $ helm push kubernetes-example-0.1.0.tgz oci://ghcr.io/ghostwritten/helm Pushed: ghcr.io/ghostwritten/helm/kubernetes-example:0.1.0 Digest: sha256:46bef623e43f4525ebfd25c368dfea69e70efbe7590f1e3eccc321fbb6b16882 $ helm install my-kubernetes-example oci://ghcr.io/ghostwritten/helm/kubernetes-example --version 0.1.0 --namespace remote-helm-staging --create-namespace --set frontend.autoscaling.averageUtilization=60 --set backend.autoscaling.averageUtilization=60 Pulled: ghcr.io/ghostwritten/helm/kubernetes-example:0.1.0 Digest: sha256:46bef623e43f4525ebfd25c368dfea69e70efbe7590f1e3eccc321fbb6b16882 W0202 16:15:56.276585 3957 warnings.go:70] autoscaling/v2beta2 HorizontalPodAutoscaler is deprecated in v1.23+, unavailable in v1.26+; use autoscaling/v2 HorizontalPodAutoscaler AME: my-kubernetes-example LAST DEPLOYED: Thu Feb 2 16:15:55 2023 NAMESPACE: remote-helm-staging STATUS: deployed REVISION: 1 TEST SUITE: None $ k get pods -n remote-helm-staging NAME READY STATUS RESTARTS AGE backend-bcb7687c6-s7lxh 1/1 Running 0 29m backend-bcb7687c6-v4cx6 1/1 Running 0 29m frontend-7c59d655fb-p6lpm 1/1 Running 1 (21m ago) 29m frontend-7c59d655fb-xnl8x 1/1 Running 0 29m postgres-7745b57d5d-2nndw 1/1 Running 0 29m2023-02-02归属地:北京1
- Sophia-百鑫我的helm 版本 kubernetes-example git:(main) ✗ helm version version.BuildInfo{Version:"v3.12.2", GitCommit:"1e210a2c8cc5117d1055bfaa5d40f51bbc2e345e", GitTreeState:"clean", GoVersion:"go1.20.6"}2023-07-28归属地:上海