1. helm简介
-
Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的yum。
-
Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。
-
对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。
-
对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。
2. helm安装
下载安装包
官网:https://helm.sh/docs/intro/
tar zxf helm-v3.1.1-linux-amd64.tar.gz
cd linux-amd64/
cp helm /usr/local/bin/
设置补齐
echo "source <(helm completion bash)" >> ~/.bashrc
helm search hub wordpress #搜索官方库
helm repo add stable http://mirror.azure.cn/kubernetes/charts/ #添加微软云
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts #添加阿里云
3. 使用helm部署metrics-server
- 准备镜像
下载metrics-server_0.5.0-debian-10-r59.tar
将其导入仓库的bitnami/metrics-server
目录下
- 准备chart
拉取官方chart,解压编辑部署配置文件
helm pull bitnami/metrics-server
cd metrics-server
vim values.yaml
imageRegistry: "reg.westos.org"
hostNetwork: true
- 部署
使用修改后的chart部署metrics-server
helm install metrics-server -n kube-system .
查看节点状态
使用metrics监控节点状态
4. 使用helm构建chart
新建项目mychart
helm create mychart
修改chart项目描述信息
vim mychart/Chart.yaml
apiVersion: v2
name: mychart
type: application
version: 0.1.0
appVersion: v1
修改value部署信息
vim value.yaml
replicaCount: 1
image:
repository: myapp
pullPolicy: IfNotPresent
tag: "v1"
检测配置是否正确,并且打包
helm lint mychart/
helm package mychart/
配置harbor仓库认证证书,harbor仓库配置时生成,存放在docker配置目录下,只需复制即可。
安装helm push插件
helm plugin install https://github.com/chartmuseum/helm-push
获取插件目录
解压至目录中
为helm添加本地仓库
elm repo add westos https://reg.westos.org/chartrepo/charts
上传chart至本地仓库
在仓库中查找mychart
查看部署状态,查看部署是否成功
修改升级为v2,打包
vim mychart/Chart.yaml
apiVersion: v2
name: mychart
type: application
version: 0.2.0
appVersion: v2
修改value部署信息
vim value.yaml
replicaCount: 1
image:
repository: myapp
pullPolicy: IfNotPresent
tag: "v2"
打包
上传
使用helm升级mychart
helm upgrade mychart westos/mychart
再次测试部署升级是否成功,app已成功升级
测试回滚
helm rollback mychart 1
测试回滚成功
5 . 使用helm部署kubeapps
拉取bitnami chart
helm pull bitnami/kubeapps
导入镜像
docker load -i kubeapps-2.3.3.tar
docker images | grep bitnami |awk '{system("docker push "$1":"$2"")}'
解压,编辑部署文件,修改镜像路径
hostname: kubeapps.westos.org
repository: bitnami/nginx
repository: bitnami/kubeapps-dashboard
repository: bitnami/kubeapps-apprepository-controller
...
ingress:
enabled: true
创建namespace,绑定角色等
kubectl create serviceaccount kubeapps-operator -n kubeapps
kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=kubeapps:kubeapps-operator
安装部署kubeapps
helm install kubeapps -n kubeapps .
成功配置到ingress服务
在访问节点时配置解析
vim /etc/hosts
172.25.52.100 kubeapps.westos.org
访问kubeapps
获取token,登陆
kubectl get secrets -n kubeapps
kubectl describe secrets -n kubeapps kubeapps-operator-token-f5gkk
添加本地的chart仓库
搜索私有仓库chart,成功