溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

kubernetes中如何實(shí)現(xiàn)Helm

發(fā)布時(shí)間:2021-12-24 16:13:24 來源:億速云 閱讀:137 作者:小新 欄目:云計(jì)算

這篇文章主要介紹kubernetes中如何實(shí)現(xiàn)Helm,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

一:簡(jiǎn)介
在Kubernetes上進(jìn)行容器化部署并非易事,通常需要先研究Docker鏡像的運(yùn)行需求,環(huán)境變量等內(nèi)容,并能為這些容器定制存儲(chǔ),網(wǎng)絡(luò)等設(shè)備,最后設(shè)計(jì)和編寫Deployment,Configmap,Service及Ingress等相關(guān)yaml配置文件,再提交給Kubernetes進(jìn)行部署。這些復(fù)雜的過程將逐步被Helm應(yīng)用包管理工具實(shí)現(xiàn)。

Helm是一個(gè)由CNCF孵化和管理的項(xiàng)目,用于對(duì)需要在Kubernetes上部署復(fù)雜應(yīng)用進(jìn)行定義,安裝和更新。Helm以Chart的方式對(duì)應(yīng)用軟件信息描述,可以方便地創(chuàng)建,版本化,共享和發(fā)布復(fù)雜的應(yīng)用軟件。

二:Helm的主要概念
1. Chart:是Helm管理的安裝包,里面包含需要部署的安裝包資源。類似于yum中的rpm文件。每個(gè)Chart包含下面兩部分:包的基本描述文件Chart.yaml放在templates目錄中的一個(gè)或多個(gè)Kubernetes manifest文件模板。
2.Release:在Kubernetes集群上運(yùn)行的一個(gè)Chart實(shí)例。在同一個(gè)集群上,一個(gè)Chart可以安裝多次。例如一個(gè)MySQL Chart,如果想在服務(wù)器上運(yùn)行兩個(gè)MySQL數(shù)據(jù)庫(kù),就可以基本這個(gè)Chart安裝兩次。每次安裝都會(huì)生成新的Release,會(huì)有獨(dú)立的Release名稱。
3.Repository: 用于存放和共享Chart的倉(cāng)庫(kù)。
kubernetes中如何實(shí)現(xiàn)Helm

三:Helm的安裝

1.Helm由兩部分組成,客戶端helm和服務(wù)的tiller.

2.客戶端helm的安裝

  1. curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > get_helm.sh


  2. chmod 755 get_helm.sh


  3. ./get_helm.sh

在執(zhí)行g(shù)et_helm.sh腳本的過程中,如果無法獲取helm安裝包,可以提前通過https://github.com/kubernetes/helm/releases下載當(dāng)前最新穩(wěn)定版本的安裝包到當(dāng)前目錄,再執(zhí)行g(shù)et_helm.sh文件。    這里使用的是helm-v2.9.1-linux-amd64.tar.gz。

3.客戶端tiller安裝

創(chuàng)建serviceaccount和clusterrolebinding

  1. kubectl create serviceaccount --namespace kube-system tiller


  2. kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

安裝tiller

  1. helm init  -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1

為tiller設(shè)置serviceaccount

  1. kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

檢查是否安裝成功

  1. kubectl -n kube-system get pods|grep tiller


  2. tiller-deploy-59c7578f9b-qqwpm          1/1       Running   0          17h

  1. helm version


  2. Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}

  3. Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}


四:Helm的使用

1.helm search: 搜索可用的Chart
Helm初始化完成之后,默認(rèn)配置為使用官方的Kubernetes Chart倉(cāng)庫(kù)。官方倉(cāng)庫(kù)包含大量的經(jīng)過組織和持續(xù)維護(hù)的Chart,這個(gè)倉(cāng)庫(kù)通常命名為stable。
可以用helm inspect <chart_name>命令查看Chart的詳細(xì)信息。kubernetes中如何實(shí)現(xiàn)Helm

2.helm create:創(chuàng)建一個(gè)chart
helm create nginx
kubernetes中如何實(shí)現(xiàn)Helm
templates目錄下的deployment.yaml是部署應(yīng)用的yaml文件,其中的雙?括號(hào)包擴(kuò)起來的部分是Go template,其中的Values是在 values.yaml ?件中定義。

a.charts目錄中是本chart依賴的chart,當(dāng)前是空的
b.Chart.yaml這個(gè)yaml文件用于描述Chart的基本信息,如名稱版本等
c.templates是Kubernetes manifest文件模板目錄,模板使用chart配置的值生成Kubernetes manifest文件。模板文件使用的Go語言模板語法
d.templates/NOTES.txt 純文本文件,可在其中填寫chart的使用說明
e.value.yaml 是chart配置的默認(rèn)值

3. helm install –dry-run –debug ./: 驗(yàn)證模板和配置

  1. [debug] Created tunnel using local port: '44785'


  2. [debug] SERVER: "127.0.0.1:44785"


  3. [debug] Original chart version: ""

  4. [debug] CHART PATH: /root/helm/nginx


  5. NAME: listless-blackbird

  6. REVISION: 1

  7. RELEASED: Wed Jun  6 10:00:49 2018

  8. CHART: nginx-0.1.0

  9. USER-SUPPLIED VALUES:

  10. {}


  11. COMPUTED VALUES:

  12. affinity: {}

  13. image:

  14.   pullPolicy: IfNotPresent

  15.   repository: nginx

  16.   tag: stable

  17. ingress:

  18.   annotations: {}

  19.   enabled: false

  20.   hosts:

  21.   - chart-example.local

  22.   path: /

  23.   tls: []

  24. nodeSelector: {}

  25. replicaCount: 1

  26. resources: {}

  27. service:

  28.   port: 80

  29.   type: ClusterIP

  30. tolerations: []


  31. HOOKS:

  32. MANIFEST:


  33. ---

  34. # Source: nginx/templates/service.yaml

  35. apiVersion: v1

  36. kind: Service

  37. metadata:

  38.   name: listless-blackbird-nginx

  39.   labels:

  40.     app: nginx

  41.     chart: nginx-0.1.0

  42.     release: listless-blackbird

  43.     heritage: Tiller

  44. spec:

  45.   type: ClusterIP

  46.   ports:

  47.     - port: 80

  48.       targetPort: http

  49.       protocol: TCP

  50.       name: http

  51.   selector:

  52.     app: nginx

  53.     release: listless-blackbird

  54. ---

  55. # Source: nginx/templates/deployment.yaml

  56. apiVersion: apps/v1beta2

  57. kind: Deployment

  58. metadata:

  59.   name: listless-blackbird-nginx

  60.   labels:

  61.     app: nginx

  62.     chart: nginx-0.1.0

  63.     release: listless-blackbird

  64.     heritage: Tiller

  65. spec:

  66.   replicas: 1

  67.   selector:

  68.     matchLabels:

  69.       app: nginx

  70.       release: listless-blackbird

  71.   template:

  72.     metadata:

  73.       labels:

  74.         app: nginx

  75.         release: listless-blackbird

  76.     spec:

  77.       containers:

  78.         - name: nginx

  79.           image: "nginx:stable"

  80.           imagePullPolicy: IfNotPresent

  81.           ports:

  82.             - name: http

  83.               containerPort: 80

  84.               protocol: TCP

  85.           livenessProbe:

  86.             httpGet:

  87.               path: /

  88.               port: http

  89.           readinessProbe:

  90.             httpGet:

  91.               path: /

  92.               port: http

  93.           resources:

  94.             {}

4.helm install : 安裝Chart
在安裝過程中,Helm客戶端會(huì)輸出一些有用的信息,例如Release的狀態(tài),以及額外的配置步驟等。在helm install過程中,可以使用helm status命令來跟蹤release狀態(tài)。

5.自定義Chart配置
a.--values 或者-f: 使用yaml配置文件進(jìn)行參數(shù)配置,可以配置多個(gè)文件,最后一個(gè)優(yōu)先生效。多個(gè)文件中重復(fù)的value會(huì)進(jìn)行覆蓋操作,不同的value會(huì)疊加生效。
b.--set: 在命令行直接設(shè)置參數(shù)
舉例:
helm install stable/mariadb -f config.yaml -f config2.yaml
helm install stable/mariadb --set mariadbDatabase=firstdb,mariadbRootPassword=abcdefg

6.helm upgrade和helm rollback: 應(yīng)用的更新或回滾

helm upgrade會(huì)利用用戶提供的更新信息來對(duì)Release進(jìn)行更新。應(yīng)為Kubernetes Chart可能會(huì)有很大的規(guī)?;蛘呦鄬?duì)復(fù)雜的關(guān)系,helm 會(huì)嘗試進(jìn)行最小影響的更新,只更新相對(duì)于上一個(gè)release來說發(fā)生變化的內(nèi)容。

7.helm delete : 刪除一個(gè)Release

8.helm repo : 倉(cāng)庫(kù)的使用
a. helm repo list : 列出所有倉(cāng)庫(kù)

  1. NAME      URL

  2. stable    https://kubernetes-charts.storage.googleapis.com

  3. local     http://127.0.0.1:8879/charts

b. helm repo add : 添加倉(cāng)庫(kù)

c.helm repo update : 更新倉(cāng)庫(kù)中的Chart信息

9.快速制作自定義的Chart
同其它軟件開發(fā)過程一樣,快速制作一個(gè)簡(jiǎn)單Chart的方法,就是從其它項(xiàng)目中復(fù)制并修改。例如我們要簡(jiǎn)單地改寫前面MariaDB的Chart 令其使用本地的私有鏡像倉(cāng)庫(kù),可以按照如下步驟進(jìn)行:
a. 下載Chart: 使用helm fetch stable/mariadb命令下載這一Chart的壓縮包
b.編輯Chart
c.利用tar 解壓后,將目錄重新命名為mymariadb
d.修改templates中的deployment.yaml
e.將Chart.yaml 中的版本號(hào)修改為0.1.1 name為mymariadb
f.使用helm package mymariadb打包c(diǎn)hart,并生成一個(gè)名為mymariadb-0.11.tgz的壓縮包
g.安裝chart 通過helm install mymariadb-0.1.1.tgz命令將新生成的Chart安裝到集群當(dāng)中。

10. 搭建私有Repository
Chart倉(cāng)庫(kù)主要由Chart壓縮包和索引文件構(gòu)成,通過HTTP/HTTPS 對(duì)外提供服務(wù)。
通過 helm repo index 創(chuàng)建索引

以上是“kubernetes中如何實(shí)現(xiàn)Helm”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI