最近給部門的小伙伴做了一個關于helm
的入門介紹,收到了不錯的反響,于將資料整理分享給博客的讀者們。 本文第一部分介紹helm
是做什么的以及能解決什么問題。第二部分介紹helm
的核心概念及安裝使用helm
的教程, 第三部分介紹helm
使用的核心即chart
的開發,這一章節通過一個示例給大家演示基本的開發步驟。最后一部分, 簡單說明如何搭建私有模板倉。在讀完后,相信你會對Helm
及生態有一個簡單的了解。
如標題所示,官方給Helm
的定義是 kubernetes 的包管理器。那么什么是包管理器呢?
包管理器一組軟件工具,它們以一致的方式自動安裝、升級、配置和刪除計算機操作系統的計算機程序 -維基百科
helm 幫助用戶管理 kubernetes 程序,helm chart 幫助用戶定義、安裝和升級最復雜的 Kubernetes 應用程序,Charts 很容易 創建,版本管理,共享和發布,所以停止 copy-and-paste,開始使用 helm -helm 官方
helm
的官方文檔中的描述更加詳細,這里只列出一些重要的概念:
Helm Concept | 描述 | 重點 |
---|---|---|
Chart(unpackaged) | 一個文件夾的文件,遵循 chart 的準則 | 可以直接部署到集群 |
Chart(packaged) | 上述文件的壓縮包 tar.gz | 可以直接部署到集群 |
Chart name | Chart.yaml 定義包的名稱 | 部分標識 chart |
Templates | 構成應用程序的一組 Kubernetes 清單 | Golang 模板引擎 |
Values | 可以在 Kubernetes 清單中參數化的設置 | 用于 template 渲染 |
Chart version | chart 版本 | 部分標示 chart |
App Version | chart 中包含的應用程序版本 | 與 chart 版本獨立 |
Release | kubernetes 集群中部署的 chart | 同一個 chart 可能部署多個 release |
Release name | release 任意名稱 | 獨立于 chart name |
Release Revision | 每次部署/升級應用程序時遞增的數字 | 于 chart 版本無關 |
每個月超過百萬次下載
CNCF Incubating project
繁榮的社區
helm3
剔除了服務 Tiller,直接與kubernetes apiserver
通信,所以安裝相比helm2
更加簡單。
# mac通過homebrew安裝
brew install helm
# 二進制文件
wget https://github.com/helm/helm/releases/helm-v3.0.0-linux-amd6
tar -zvxf helm-v3.0.0-linux-amd6
mv linux-amd64/helm /usr/local/bin/helm
對于需要從 Helm2 升級到 helm3 的用戶,官方提供了升級插件,我是使用插件進行升級的,沒有遇到問題。
chart
:一個包含足夠信息的 Helm 包,用于將一組 Kubernetes 資源安裝到 Kubernetes 集群中。
helm 命令行工具能夠自動生成一個 chart 結構:helm create myapp
templates
包含了所有所需 kubernetes 各個資源的模板文件,Value.yaml
文件存儲chart
的默認值, 這些值可以通過helm install ,helm upgrade
更新,Chart.yaml
包含了chart
的描述信息,如版本,名稱等。 charts
目錄存儲其依賴的第三方chart
。
在根據正在運行的 Kubernetes 集群進行身份驗證的環境中,使用 Helm 從本地 chart 目錄或 chart repo 安裝。
chart
的開發是Helm
的核心,也比較復雜。Helm
使用Go
模板對資源文件進行模板化,除了Go
附帶的幾個內置函數,還添加了許多其他函數。
以下列舉了helm chart
開發中幾個核心知識點,這里只簡單羅列,如果你需要使用,還是建議參考官方文檔。
內置對象:Release,Values,Chart,Files
;
Values 文件,--set
>-f customValue
> default file;
模板函數及流水線:對傳入 template 的值進行輕度處理,helm 內置了 60 多個常見函數;
控制語句的使用;
變量;
命名模版;
訪問 templates 中的文件;
幫助文件 NOTS.Txt 如何編寫;
subcharts 與全局變量;
.helmignore 文件忽略不需要的文件;
chart 開發如何進行調試:helm lint
,helm install --dry-run --debug
,helm get manifest
;
我們通過一個Go
web 程序iim
,來演示開發一個 chart 的完整流程。web 應用鏡像已經推送到鏡像倉中。
首先在項目中創建 chart 目錄,我們使用helm create iim
工具生成。其中templates
會自動生成 deployment,service ,serviceaccount 資源文件,以及自定義幫助文件模板。我們可以移除一些不必要的文件,如 serviceaccount,因為這里不需要使用這些 kubernetes 資源; _ NOTES.txt
:關于應用的幫助信息,如訪問地址 _ _helpers.tpl
: 放置 chart 幫助程序的地方,便于后續重用
containers:
- name: { { .Chart.Name } }
securityContext: { { - toYaml .Values.securityContext | nindent 12 } }
image: "{{ .Values.image.repository }}:{{ .Chart.AppVersion }}"
imagePullPolicy: { { .Values.image.pullPolicy } }
command: ["./iimserver"]
args:
[
"-c",
"/app/config.toml",
"-m",
"/app/model.conf",
"-menu",
"/app/menu.json",
]
修改 deployment.yaml,添加入口程序參數。
replicaCount: 1
image:
repository: daocloud.io/daocloud/iim-backend
pullPolicy: IfNotPresent
修改程序默認配置,即 Value.yaml 文件
apiVersion: v2
name: iim
description: 工業機理模型沖刺項目
type: application
version: 0.1.0
appVersion:文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/127931.html
kubeadm介紹kubeadm概述Kubeadm 是一個工具,它提供了 kubeadm init 以及 kubeadm join 這兩個命令作為快速創建 kubernetes 集群的最佳實踐。 kubeadm 通過執行必要的操作來啟動和運行一個最小可用的集群。kubeadm 只關心啟動集群,而不關心其他工作,如部署前的節點準備工作、安裝各種Kubernetes Dashboard、監控解決方案...
摘要:與或等流行工具結合或集成在當今的混合云管理提供商中很常見。如果中止混合云管理合同,那么它只是策略的一部分,而加入現有資源則需要模板轉換為混合云管理格式。實際上,組織不必選擇最好的混合云管理產品。混合云管理(HCM)市場的發展如今有些停滯不前,但最近這一切發生了變化。很多企業開始解決云計算管理挑戰,在采用云計算策略的企業中,超過一半的基礎設施決策者正在積極監控使用情況,并創建有效的云計算策略。...
摘要:的包使用軟件包管理系統進行管理。超過萬人使用發行版本,并且擁有超過個適用于和的數據科學軟件包。提供了大部分功能,并且大多數情況下兩個可以同時使用。 Anaconda Anaconda簡介 Anaconda是一個免費開源的Python和R語言的發行版本,用于計算科學(數據科學、機器學習、大數據處理和預測分析),Anaconda致力于簡化包管理和部署。Anaconda的包使用軟件包管理系統...
摘要:的開發環境有很多,可以在上搭建,也可以使用管理工具搭建,也可以直接在本機中安裝。例如創建開發環境點擊左下角,彈出創建開發環境框,輸入環境名和選擇類型即可。以上內容是我們需要搭建開發環境的全部內容。 tensorflow的開發環境有很多,可以在Docker上搭建,也可以使用Anaconda管理工具搭建,也可以直接在本機中安裝tensorflow。在這里為了工具包的方便管理,我選擇使用An...
摘要:但是在與此同時出現了然后隨著的出現,又更名為,真的是百家爭鳴那。采用文件來追蹤依賴,而不是的和文件。然而他們并不想提交大量的文件,因為鏈碼程序僅僅是個小的代碼庫。想必在年會逐漸替換以及中的,希望可以終結混亂的包管理機制。 作者: TopJohn原文連接:https://www.xuanzhangjiong.to... Fabric與dep 個人感受 接觸Golang有2年時間了,從最...
閱讀 289·2024-11-07 18:25
閱讀 130366·2024-02-01 10:43
閱讀 868·2024-01-31 14:58
閱讀 828·2024-01-31 14:54
閱讀 82766·2024-01-29 17:11
閱讀 3048·2024-01-25 14:55
閱讀 1985·2023-06-02 13:36
閱讀 3033·2023-05-23 10:26