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