您好,登錄后才能下訂單哦!
這篇文章主要介紹kubernetes中如何實現Helm,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
一:簡介
在Kubernetes上進行容器化部署并非易事,通常需要先研究Docker鏡像的運行需求,環境變量等內容,并能為這些容器定制存儲,網絡等設備,最后設計和編寫Deployment,Configmap,Service及Ingress等相關yaml配置文件,再提交給Kubernetes進行部署。這些復雜的過程將逐步被Helm應用包管理工具實現。
Helm是一個由CNCF孵化和管理的項目,用于對需要在Kubernetes上部署復雜應用進行定義,安裝和更新。Helm以Chart的方式對應用軟件信息描述,可以方便地創建,版本化,共享和發布復雜的應用軟件。
二:Helm的主要概念
1. Chart:是Helm管理的安裝包,里面包含需要部署的安裝包資源。類似于yum中的rpm文件。每個Chart包含下面兩部分:包的基本描述文件Chart.yaml放在templates目錄中的一個或多個Kubernetes manifest文件模板。
2.Release:在Kubernetes集群上運行的一個Chart實例。在同一個集群上,一個Chart可以安裝多次。例如一個MySQL Chart,如果想在服務器上運行兩個MySQL數據庫,就可以基本這個Chart安裝兩次。每次安裝都會生成新的Release,會有獨立的Release名稱。
3.Repository: 用于存放和共享Chart的倉庫。
三:Helm的安裝
1.Helm由兩部分組成,客戶端helm和服務的tiller.
2.客戶端helm的安裝
curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > get_helm.sh
chmod 755 get_helm.sh
./get_helm.sh
在執行get_helm.sh腳本的過程中,如果無法獲取helm安裝包,可以提前通過https://github.com/kubernetes/helm/releases下載當前最新穩定版本的安裝包到當前目錄,再執行get_helm.sh文件。 這里使用的是helm-v2.9.1-linux-amd64.tar.gz。
3.客戶端tiller安裝
創建serviceaccount和clusterrolebinding
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
安裝tiller
helm init -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1
為tiller設置serviceaccount
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
檢查是否安裝成功
kubectl -n kube-system get pods|grep tiller
tiller-deploy-59c7578f9b-qqwpm 1/1 Running 0 17h
helm version
Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
四:Helm的使用
1.helm search: 搜索可用的Chart
Helm初始化完成之后,默認配置為使用官方的Kubernetes Chart倉庫。官方倉庫包含大量的經過組織和持續維護的Chart,這個倉庫通常命名為stable。
可以用helm inspect <chart_name>命令查看Chart的詳細信息。
2.helm create:創建一個chart
helm create nginx
templates目錄下的deployment.yaml是部署應用的yaml文件,其中的雙?括號包擴起來的部分是Go template,其中的Values是在 values.yaml ?件中定義。
a.charts目錄中是本chart依賴的chart,當前是空的
b.Chart.yaml這個yaml文件用于描述Chart的基本信息,如名稱版本等
c.templates是Kubernetes manifest文件模板目錄,模板使用chart配置的值生成Kubernetes manifest文件。模板文件使用的Go語言模板語法
d.templates/NOTES.txt 純文本文件,可在其中填寫chart的使用說明
e.value.yaml 是chart配置的默認值
3. helm install –dry-run –debug ./: 驗證模板和配置
[debug] Created tunnel using local port: '44785'
[debug] SERVER: "127.0.0.1:44785"
[debug] Original chart version: ""
[debug] CHART PATH: /root/helm/nginx
NAME: listless-blackbird
REVISION: 1
RELEASED: Wed Jun 6 10:00:49 2018
CHART: nginx-0.1.0
USER-SUPPLIED VALUES:
{}
COMPUTED VALUES:
affinity: {}
image:
pullPolicy: IfNotPresent
repository: nginx
tag: stable
ingress:
annotations: {}
enabled: false
hosts:
- chart-example.local
path: /
tls: []
nodeSelector: {}
replicaCount: 1
resources: {}
service:
port: 80
type: ClusterIP
tolerations: []
HOOKS:
MANIFEST:
---
# Source: nginx/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: listless-blackbird-nginx
labels:
app: nginx
chart: nginx-0.1.0
release: listless-blackbird
heritage: Tiller
spec:
type: ClusterIP
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
selector:
app: nginx
release: listless-blackbird
---
# Source: nginx/templates/deployment.yaml
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: listless-blackbird-nginx
labels:
app: nginx
chart: nginx-0.1.0
release: listless-blackbird
heritage: Tiller
spec:
replicas: 1
selector:
matchLabels:
app: nginx
release: listless-blackbird
template:
metadata:
labels:
app: nginx
release: listless-blackbird
spec:
containers:
- name: nginx
image: "nginx:stable"
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80
protocol: TCP
livenessProbe:
httpGet:
path: /
port: http
readinessProbe:
httpGet:
path: /
port: http
resources:
{}
4.helm install : 安裝Chart
在安裝過程中,Helm客戶端會輸出一些有用的信息,例如Release的狀態,以及額外的配置步驟等。在helm install過程中,可以使用helm status命令來跟蹤release狀態。
5.自定義Chart配置
a.--values 或者-f: 使用yaml配置文件進行參數配置,可以配置多個文件,最后一個優先生效。多個文件中重復的value會進行覆蓋操作,不同的value會疊加生效。
b.--set: 在命令行直接設置參數
舉例:
helm install stable/mariadb -f config.yaml -f config2.yaml
helm install stable/mariadb --set mariadbDatabase=firstdb,mariadbRootPassword=abcdefg
6.helm upgrade和helm rollback: 應用的更新或回滾
helm upgrade會利用用戶提供的更新信息來對Release進行更新。應為Kubernetes Chart可能會有很大的規模或者相對復雜的關系,helm 會嘗試進行最小影響的更新,只更新相對于上一個release來說發生變化的內容。
7.helm delete : 刪除一個Release
8.helm repo : 倉庫的使用
a. helm repo list : 列出所有倉庫
NAME URL
stable https://kubernetes-charts.storage.googleapis.com
local http://127.0.0.1:8879/charts
b. helm repo add : 添加倉庫
c.helm repo update : 更新倉庫中的Chart信息
9.快速制作自定義的Chart
同其它軟件開發過程一樣,快速制作一個簡單Chart的方法,就是從其它項目中復制并修改。例如我們要簡單地改寫前面MariaDB的Chart 令其使用本地的私有鏡像倉庫,可以按照如下步驟進行:
a. 下載Chart: 使用helm fetch stable/mariadb命令下載這一Chart的壓縮包
b.編輯Chart
c.利用tar 解壓后,將目錄重新命名為mymariadb
d.修改templates中的deployment.yaml
e.將Chart.yaml 中的版本號修改為0.1.1 name為mymariadb
f.使用helm package mymariadb打包chart,并生成一個名為mymariadb-0.11.tgz的壓縮包
g.安裝chart 通過helm install mymariadb-0.1.1.tgz命令將新生成的Chart安裝到集群當中。
10. 搭建私有Repository
Chart倉庫主要由Chart壓縮包和索引文件構成,通過HTTP/HTTPS 對外提供服務。
通過 helm repo index 創建索引
以上是“kubernetes中如何實現Helm”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。