Helm學(xué)習(xí)

helm簡介

Helm是Deis (https://deis.com/) 開發(fā)的一個用于kubernetes的包管理器。每個包稱為一個Chart,一個Chart是一個目錄,一般情況下會將目錄進(jìn)行打包壓縮,形成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)用實(shí)例。

Helm工作原理

Helm架構(gòu)圖

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容