Helm干貨!速度圍觀!

最近個人學習Helm,感覺Helm的功能很強大!分享一些干貨給大家吧,希望有所幫助!基本概念Chart一個Helm包,包含在K8S集群內,運行一個應用,工具或者服務所需要的所有的資源定義,類似于一個RPM包
RepositoryCharts在這里被匯集并共享,它有點像Fedora Package Database,但是是用于kubernetes packages
Release一個Release相當于一個Chart運行在K8S集群中的一個實例,一個Chart可以在相同集群中安裝多次,每次安裝,一個Release就被創建,例如MySQL chart,如果你想讓兩個數據庫運行在你的集群,你可以安裝相同的Chart多次,每一次一個release , 它擁有自己的Release名字 。
部署可以參考如下的網站進行安裝https://helm.sh/doc/intro/install/
https://kubeapps.com/doc/getting-started/
Helm基礎命令基礎命令篇添加公有Repohelm repo add https://charts.bitnami.com/bitnami
添加私有Repohelm repo add --username=no-user --password admin@123 https://github.bithaha.com/helm
列出Repohelm repo list
列出已經安裝的chartshelm list

  • 注意 默認是查看default命名空間下
  • 若要切換,-n namespace即可 , 如:
helm list -n abc
搜索Repohelm search repo nginx
安裝helm包helm install bitnami-nginx bitnami/nginx
  • 注意 默認是安裝到default命名空間下
  • 若指定命名空間 , 請務必確保命名空間存在的情況之下再指定 :
helm install bitnami-nginx bitnami/nginx -n abc
helm設置參數設置參數helm install bithaha bithaha/test-helm --version 0.1.0 --set replicaCount=2,image.tag=1.21
這段意思大概是安裝一個test-helm,版本是0.1.0,設置副本數量為2,images的版本是1.21
查看參數helm get values test-helm
重置一下valuehelm upgrade bithaha bithaha/test-helm --reset-values
顯示所有的valueshelm get values -a bithaha
helm創建自己的charts創建charthelm create qqq-helm
檢查charthelm lint qqq-helm
打包charthelm package qqq-helm
Helm模板官方文檔https://helm.sh/docs/chart_temlpate_guide/getting_started/
chart默認結構tree qqai-helmqqai-helm|>charts>chart.yaml>templates——》deployment.yaml——》_helpers.tpl——》hpa.yaml——》ingress.yaml——》NOTES.txt——》serviceaccount.yaml——》service.yaml——》tests>test-connection.yaml>values.yamltemplates目錄# 目錄結構>templates——》deployment.yaml——》_helpers.tpl——》hpa.yaml——》ingress.yaml——》NOTES.txt——》serviceaccount.yaml——》service.yaml——》tests>test-connection.yamltemplates實戰1、在templates目錄中創建一個configmap的YAML文件
cat >/root/qqai-helm/templates/configmap.yaml <<EOFapiVersion: v1kind: ConfigMapmetadata:name: {{ .Release.Name }}-configmapdata:myvalue: "fook"EOF2、測試模板可用性
helm install --debug --dry-run qqai-helm-demo ./qqai-helm常用的對象說明Release
Release.Name: Install的時候的名稱
Release.Namespace: 命名空間,這個沒啥好解釋的,默認值是default
Release.IsUpgrade:是升級,如果true那就升級了 。
Values,Chart
Values: 來自于values.yaml中定義的參數,默認的Value是空值的
Chart: 來自于Chart.yaml中定義的參數,可以根據需要靈活搭配
Values文件Values來自于多個源,下面是覆蓋順序,最后的優先
  • Chart中的values.yaml文件
  • 子Chart中的values.yaml文件
  • 。。。。。。
Values實戰cat /root/qqai-helm/values.yaml <<EOFbanben: v1shuiguo: applemingzi:name: zhangsanEOFcat /root/qqai-helm/configmap.yaml <<EOFapiVersion: {{ .Values.banben}}kind: ConfigMapmetadata:name: {{ .Release.Name }}-configmapdata:myvalue: "Hello World"name: {{ .Values.mingzi.name }}fruit: {{ .Values.shuiguo }}EOF驗證一下吧
helm install --debug --dry-run qqai-helm-demo ./qqai-helm模板函數與管道符引用上述的案例吧
cat /root/qqai-helm/values.yaml <<EOFbanben: v1shuiguo: applemingzi:name: zhangsanEOFcat /root/qqai-helm/configmap.yaml <<EOFapiVersion: {{ .Values.banben}}kind: ConfigMapmetadata:name: {{ .Release.Name }}-configmapdata:myvalue: "Hello World"name: {{ .Values.mingzi.name }}fruit: {{ .Values.shuiguo }}EOF若將上述案例添加相關的函數,可以像下面這樣的做法
cat /root/qqai-helm/values.yaml <<EOFbanben: v1shuiguo: applemingzi:name: zhangsanEOFcat /root/qqai-helm/configmap.yaml <<EOFapiVersion: {{ .Values.banben}}kind: ConfigMapmetadata:name: {{ .Release.Name }}-configmapdata:myvalue: "Hello World"name: {{ .Values.mingzi.name |repeat 5 }}age: {{ .Values.mingzi.age |default "18" }}fruit: {{ .Values.shuiguo | upper | quote}}EOF流程控制概述可以通過流程控制來控制helm的邏輯流程,保證部署的正確性 。

推薦閱讀