helm3 Chart更新

590 阅读3分钟

这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战

chart名称

上一章我们使用了 helm install bitnami/nginx --generate-name来安装nginx, 但是这样安装的nginx 名称后面会带一个随机的数字,,假如我想安装mysql,给三个团队用,每个团队一个,,想在名称就区分出来,语义化就很重要了,

例子如下:

helm install cetner-nginx bitnami/nginx 
helm install message-nginx bitnami/nginx 
helm install order-nginx bitnami/nginx 

chart安装过程

在部署k8s应用的时候,特别是复杂的应用,需要申请一大堆的权限资源等等,因为是自定义的yaml文件,,你想先安装那一步 直接kubectl apply -f xxx.yaml 既可,,但是helm 不是直接就给你安装好了,那么它的顺序又是怎样的了

Helm按照以下顺序安装资源:

  • Namespace
  • NetworkPolicy
  • ResourceQuota
  • LimitRange
  • PodSecurityPolicy
  • PodDisruptionBudget
  • ServiceAccount
  • Secret
  • SecretList
  • ConfigMap
  • StorageClass
  • PersistentVolume
  • PersistentVolumeClaim
  • CustomResourceDefinition
  • ClusterRole
  • ClusterRoleList
  • ClusterRoleBinding
  • ClusterRoleBindingList
  • Role
  • RoleList
  • RoleBinding
  • RoleBindingList
  • Service
  • DaemonSet
  • Pod
  • ReplicationController
  • ReplicaSet
  • Deployment
  • HorizontalPodAutoscaler
  • StatefulSet
  • Job
  • CronJob
  • Ingress
  • APIService

在安装过程中,helm 客户端会打印一些有用的信息,其中包括:哪些资源已经被创建,release当前的状态,以及你是否还需要执行额外的配置步骤

chart状态

Helm 客户端不会等到所有资源都运行才退出, 许多harts需要大小超过500M 的Docker镜像,可能需要很长时间才能安装到集群中

那么这个时候就需要手动查看状态了

helm status center-nginx

可以看到部署时间,已经部署状态 是已经部署,另外还可以看到使用的notes,这样就不用一开始就记住,想用来查一下就可以了 10.png

chart修改配置

修改chart配置的方式有很多种,这里说的在install chart里使用的方式

想要修改配置,那便得先知道该chart有哪些配置,在helm中叫作 values

查看values,因为chart配置众多,且注释不少,我们这里过滤一下

helm show values bitnami/nginx > vvv.yaml
cat vvv.yaml  | grep -v "#"

创建一个values.yaml文件,并写入相应内容,在install的时候指定一下文件既可

echo '{metrics.service.port: 9113, metrics.securityContext.runAsUser: 1001}' > values.yaml
helm install -f values.yaml bitnami/nginx 

上面的操作虽然可以修改配置,但是对少 修改较少的配置,来说,其实比较麻烦的, 其实helm是直接提供了 参数来修改配置的 --set

cat vvv.yaml | grep -v "#" | grep -C 3 image 查看image相关信息

在安装时修改镜像名称或仓库地址

helm install bitnami/nginx \
--set metrics.image.registry=xxxx #这个xxx可以写自已的docker私有仓库或阿里云的

Release

在helm 将chart安装好之后,,应用称之为release,,后续的更新,回滚,查看历史都跟这有关

查看

helm history center-nginx

更新

将nginx版本改为1.18

helm upgrade --set image.tag=nginx.18 center-nginx bitnami/nginx

查看变更的values

helm get values center-nginx

回滚

helm rollback center-nginx 2

总结

release功能 相当于传统发布中的 升级和回滚,相比之下helm更加智能和迅速,传统发布过程中 升级和回滚是需要自行编写脚本,然后维护一堆历史包的