这是我参与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,这样就不用一开始就记住,想用来查一下就可以了
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更加智能和迅速,传统发布过程中 升级和回滚是需要自行编写脚本,然后维护一堆历史包的