helm v3 安装以及使用指南
安装 helm
这里参考官方文档 安装 helm
helm 此时已发布了 v3,本篇文章关于 helm 安装及使用指南以 helm v3 为基础。
helm在 helm v2 时分为客户端 (helm client,即命令行工具) 与服务端 (helm server) 两部分,在服务端又叫Tiller,安装Tiller时会在集群中部署一个Pod,用以接替资源部署。
安装客户端 (helm client)
helm client 需要安装在你可以访问 k8s 集群的任何服务器,如同 kubectl,你既可以安装在你自己的 PC/Mac 中,也可以安装在 kubectl 集群环境的主节点
在 mac 上进行安装
$ brew install kubernetes-helm
在 linux 上进行安装
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
根据二进制包进行安装,比较推荐,毕竟使用以上两种方案在目标机可能有网络问题
# 下载 MAC 上适用的软件包
# -L: 追踪重定向链接
# -O: 保存到本地
# -S: 打印错误
$ curl -SLO https://get.helm.sh/helm-v3.2.4-darwin-amd64.tar.gz
# 下载 CentOS 上适用的软件包
$ curl -SLO https://get.helm.sh/helm-v3.2.4-linux-amd64.tar.gz
# 如果有网络问题,请在代理节点下载并 rsync 到目标节点,如果没有,跳过此步
$ rsync -avhzP proxy:/root/helm-v3.2.4-linux-amd64.tar.gz .
# 如果在 mac 上
$ tar -zxvf helm-v3.2.4-darwin-amd64.tar.gz
# 如果在 centos 上
$ tar -zxvf helm-v3.2.4-linux-amd64.tar.gz
# 进入相应目录,移至 /bin 目录
$ mv linux-amd64/helm /usr/local/bin/helm
此时 helm v3 安装成功,使用 helm version 查看版本号
$ helm version
version.BuildInfo{Version:"v3.2.4", GitCommit:"8f832046e258e2cb800894579b1b3b50c2d83492"
helm 介绍
在 helm 中有三个关键概念:Chart,Repo 及 Release
Chart: 一系列 k8s 资源集合的命名,它包含一系列 k8s 资源配置文件的模板与参数,可供灵活配置Repo: 即 chart 的仓库,其中有很多个 chart 可供选择,如官方 helm/chartsRelease: 当一个 Chart 部署后生成一个 release
Chart 简介
使用 helm create 创建一个 chart,了解简单 chart 的目录结构
# 创建一个 chart
$ helm create todo
Creating todo
$ cd todo
# 打印 chart 目录,主要文件有 Chart.yaml 与 values.yaml
# --dirsfirst 先打印文件夹名称
$ tree --dirsfirst
.
├── charts
├── templates
│ ├── tests
│ │ └── test-connection.yaml
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
├── Chart.yaml
└── values.yaml
3 directories, 8 files
查看主要的两个文件目录
templates/: 这是运维大哥写的配置文件模板,示例是最简单应用的资源配置,但复杂应用还会有 pvc,role,service-acount 等等values.yaml: 这是给开发小弟写的可选参数,但是大部分参数都被运维大哥给内置了
使用 helm 部署基础服务
添加repo
# 国内
helm repo add stable https://apphub.aliyuncs.com/stable
# kubernetes
helm repo add stable https://kubernetes-charts.storage.googleapis.com
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
查找相关Chart
使用 helm search hub
$ helm search repo redis
NAME CHART VERSION APP VERSION DESCRIPTION
apphub/prometheus-redis-exporter 3.1.0 1.0.4 Prometheus exporter for Redis metrics
apphub/redis 9.3.1 5.0.5 Open source, advanced key-value store. It is of...
apphub/redis-cache 0.4.1 4.0.12-alpine A pure in-memory redis cache, using statefulset...
apphub/redis-ha 3.8.0 5.0.5 Highly available Kubernetes implementation of R...
apphub/redis-operator 1.0.0 Redis Operator provides high availability redis...
apphub/redispapa 0.0.1 0.0.1 利用redis的info信息对redis的使用情况进行监控的一...
bitnami/redis 10.7.1 6.0.5 Open source, advanced key-value store. It is of...
bitnami/redis-cluster 2.3.1 6.0.5 Open source, advanced key-value store. It is of...
stable/prometheus-redis-exporter 3.4.1 1.3.4 Prometheus exporter for Redis metrics
stable/redis 10.5.7 5.0.7 DEPRECATED Open source, advanced key-value stor...
stable/redis-ha 4.4.4 5.0.6 Highly available Kubernetes implementation of R...
apphub/codis 3.2 3.2 A Helm chart for Codis
选定 Chart,跟进 Chart 的官方文档
我们选定 stable/redis 这个 chart。
跟踪官方文档,设置相关参数,存储为 values-production.yaml
# Production configuration
$ helm install redis bitami/redis --values values-production.yaml
复制代码
如何部署完成,可以查看安装某个 Release 时的 values
$ helm get values redis
复制代码
如果需要升级,使用 helm upgrade
$ helm upgrade redis bitnami/redis --values values-production.yaml
校验部署状态
这与需要部署的资源有关,不过一般也就分为 Service,Pod 和 PVC
helm status redis
NAME: redis
LAST DEPLOYED: Fri Nov 8 21:07:24 2019
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:
** Please be patient while the chart is being deployed **
Redis can be accessed via port 6379 on the following DNS name from within your cluster:
redis-master.default.svc.cluster.local