helm簡介
Helm是Deis (https://deis.com/) 開發(fā)的一個用于kubernetes的包管理器缴啡。每個包稱為一個Chart羹呵,一個Chart是一個目錄骂际,一般情況下會將目錄進行打包壓縮,形成name-version.tgz格式的單一文件担巩,方便傳輸和存儲方援。
helm組件及術(shù)語
Helm
Helm 是一個命令行下的客戶端工具。主要用于 Kubernetes 應(yīng)用程序 Chart 的創(chuàng)建涛癌、打包犯戏、發(fā)布,以及創(chuàng)建和管理本地和遠(yuǎn)程的 Chart 倉庫拳话。
Tiller
Tiller 是 Helm 的服務(wù)端先匪,部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的請求弃衍,并根據(jù) Chart 生成 Kubernetes 的部署文件( Helm 稱為 Release )呀非,然后提交給 Kubernetes 創(chuàng)建應(yīng)用。Tiller 還提供了 Release 的升級、刪除岸裙、回滾等一系列功能猖败。
Chart
Helm 的軟件包,采用 TAR 格式降允。類似于 APT 的 DEB 包或者 YUM 的 RPM 包恩闻,其包含了一組定義 Kubernetes 資源相關(guān)的 YAML 文件。
Repoistory
Helm 的軟件倉庫剧董,Repository 本質(zhì)上是一個 Web 服務(wù)器幢尚,該服務(wù)器保存了一系列的 Chart 軟件包以供用戶下載,并且提供了一個該 Repository 的 Chart 包的清單文件以供查詢翅楼。Helm 可以同時管理多個不同的 Repository尉剩。
Release
使用 helm install 命令在 Kubernetes 集群中部署的 Chart 稱為 Release,這里的 Release 可以理解為 Helm 使用 Chart 包部署的一個應(yīng)用實例毅臊。
Helm工作原理
Chart Install 過程:
Helm從指定的目錄或者tgz文件中解析出Chart結(jié)構(gòu)信息
Helm將指定的Chart結(jié)構(gòu)和Values信息通過gRPC傳遞給Tiller
Tiller根據(jù)Chart和Values生成一個Release
Tiller將Release發(fā)送給Kubernetes用于生成Release
Chart Update過程:
Helm從指定的目錄或者tgz文件中解析出Chart結(jié)構(gòu)信息
Helm將要更新的Release的名稱和Chart結(jié)構(gòu)理茎,Values信息傳遞給Tiller
Tiller生成Release并更新指定名稱的Release的History
Tiller將Release發(fā)送給Kubernetes用于更新Release
Chart Rollback過程:
Helm將要回滾的Release的名稱傳遞給Tiller
Tiller根據(jù)Release的名稱查找History
Tiller從History中獲取上一個Release
Tiller將上一個Release發(fā)送給Kubernetes用于替換當(dāng)前Release
helm部署
一、Helm客戶端安裝
下載并安裝
wget https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz
tar xf helm-v2.9.1-linux-amd64.tar.gz
sudo mv helm /usr/bin/
helm --help
二褂微、Helm 服務(wù)端安裝Tiller并授權(quán)
執(zhí)行tiller-rbac.yaml文件:
kubectl apply -f tiller-rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
? name: tiller
? namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
? name: tiller
roleRef:
? apiGroup: rbac.authorization.k8s.io
? kind: ClusterRole
? name: cluster-admin
subjects:
? - kind: ServiceAccount
? ? name: tiller
? ? namespace: kube-system
三功蜓、初始化helm:
helm init --service-account tiller
helm version
helm repo update
四、helm官方chart列表:
https://hub.kubeapps.com/
https://docs.helm.sh/developing_charts/#charts
五宠蚂、Helm使用
檢查部署memcached:
helm inspect stable/memcached
helm install --name mem1 stable/memcached
部署redis:
helm install --name redis1 stable/redis
helm install --name redis1 -f values.yaml stable/redis
kubectl run --namespace default redis2-client --rm --tty -i \ --env REDIS_PASSWORD=$REDIS_PASSWORD \ --image docker.io/bitnami/redis:4.0.11 -- bash
部署kafka:下載kafka的charts后重新修改其value.yaml后部署
helm install --name kafka01 bitnami/kafka
cd ~/.helm/cache/archive
tar xf kafka-1.1.1.tgz
helm install --name kafka03 -f kafka_values.yaml bitnami/kafka
創(chuàng)建模板:
--create helm template
helm create myapp
helm lint myapp
--package
helm package myapp
--run helm local repo 8879
helm serve
--check the status of the helm deploy
helm status myapp1
--delete
helm delete myapp1 --purge
--deploy
helm install --name myapp1? local/myapp
--add repo
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator