自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

有了Kubernetes,為啥還需要Helm?

開發(fā) 前端
雖然Kubernetes本身已經(jīng)非常強(qiáng)大,但隨著容器化應(yīng)用規(guī)模的擴(kuò)大以及復(fù)雜度的增加,直接通過YAML文件來管理這些應(yīng)用變得愈發(fā)困難。

隨著容器技術(shù)的興起,Kubernetes(簡稱K8s)已經(jīng)成為部署、管理和擴(kuò)展容器化應(yīng)用的事實(shí)標(biāo)準(zhǔn)。然而,在實(shí)際使用過程中,直接通過YAML文件管理復(fù)雜的Kubernetes應(yīng)用程序變得越來越困難。為了解決這一問題,Helm應(yīng)運(yùn)而生。本次將介紹為什么在擁有K8s之后仍然需要Helm,并簡要介紹下Helm。

一、什么是Helm?

Helm是Kubernetes的一個包管理器,它允許開發(fā)者定義、安裝和升級最復(fù)雜Kubernetes應(yīng)用程序。Helm使用一種稱為Charts的打包格式來描述一組相關(guān)的Kubernetes資源。這使得團(tuán)隊(duì)能夠更容易地共享和重用他們的Kubernetes配置。

二、有了K8s,為何還需要Helm?

我們直接先給出一幅對比圖:

圖片圖片

1、簡化部署過程

(1)簡化復(fù)雜的YAML文件:對于大型項(xiàng)目來說,維護(hù)成百上千個相互關(guān)聯(lián)的YAML文件是一項(xiàng)艱巨的任務(wù)。Helm通過模板化這些文件并將其組織成易于理解和管理的charts來解決這個問題。

(2)參數(shù)化配置:Helm支持通過values文件或命令行參數(shù)動態(tài)改變chart中的值,從而讓同一個chart可以適應(yīng)不同環(huán)境的需求。

2、提高可移植性和復(fù)用性

(1)易于分享和重用:一旦創(chuàng)建了一個chart,就可以很容易地與其他人共享,或者在不同的環(huán)境中重復(fù)使用。

(2)版本控制:Helm提供了對charts進(jìn)行版本管理的能力,這意味著你可以輕松回滾到之前的版本,或者嘗試新功能而不影響生產(chǎn)環(huán)境。

3、便于團(tuán)隊(duì)協(xié)作

(1)促進(jìn)團(tuán)隊(duì)合作:通過標(biāo)準(zhǔn)化的應(yīng)用程序部署流程,團(tuán)隊(duì)成員之間可以統(tǒng)一使用Helm協(xié)作部署。

(2)集成CI/CD管道:Helm非常適合集成到持續(xù)集成/持續(xù)交付(CI/CD)工作流中,實(shí)現(xiàn)自動化測試、構(gòu)建及部署。

三、Helm快速入門

1、Helm整體架構(gòu)

圖片

2、Helm核心概念

Helm有三個核心概念:chart、repository和release。

(1)Chart 代表著 Helm 包。它包含在 Kubernetes 集群內(nèi)部運(yùn)行應(yīng)用程序,工具或服務(wù)所需的所有資源定義。你可以把它看作是 Homebrew formula,Apt dpkg,或 Yum RPM 在Kubernetes 中的等價物。

(2)Repository(倉庫) 是用來存放和共享 charts 的地方。它就像 Fedora 的 軟件包倉庫,只不過它是供 Kubernetes 包所使用的。

(3)Release 是運(yùn)行在 Kubernetes 集群中的 chart 的實(shí)例。一個 chart 通??梢栽谕粋€集群中安裝多次。每一次安裝都會創(chuàng)建一個新的 release。以 MySQL chart為例,如果你想在你的集群中運(yùn)行兩個數(shù)據(jù)庫,你可以安裝該chart兩次。每一個數(shù)據(jù)庫都會擁有它自己的 release 和 release name。

3、Helm安裝與使用

從以下命令中,我們可以看到Helm的安裝和使用過程非常簡單。

(1)安裝Helm客戶端

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
#macOS安裝
brew install helm

(2)創(chuàng)建自己的Chart

$ helm create mychart

mychart結(jié)構(gòu)如下:

mychart/
  Chart.yaml          # 包含了chart信息的YAML文件
  LICENSE             # 可選: 包含chart許可證的純文本文件
  README.md           # 可選: 可讀的README文件
  values.yaml         # chart 默認(rèn)的配置值
  values.schema.json  # 可選: 一個使用JSON結(jié)構(gòu)的values.yaml文件
  charts/             # 包含chart依賴的其他chart
  crds/               # 自定義資源的定義
  templates/          # 模板目錄, 當(dāng)和values 結(jié)合時,可生成有效的Kubernetes manifest文件
  templates/NOTES.txt # 可選: 包含簡要使用說明的純文本文件

Chart.yaml文件是chart必需的。包含了以下字段:

apiVersion: chart API 版本 (必需)
name: chart名稱 (必需)
version: 語義化2 版本(必需)
kubeVersion: 兼容Kubernetes版本的語義化版本(可選)
description: 一句話對這個項(xiàng)目的描述(可選)
type: chart類型 (可選)
keywords:
- 關(guān)于項(xiàng)目的一組關(guān)鍵字(可選)
home: 項(xiàng)目home頁面的URL (可選)
sources:
- 項(xiàng)目源碼的URL列表(可選)
dependencies: # chart 必要條件列表 (可選)
- name: chart名稱 (nginx)
version: chart版本 ("1.2.3")
repository: (可選)倉庫URL ("https://example.com/charts") 或別名 ("@repo-name")
condition: (可選) 解析為布爾值的yaml路徑,用于啟用/禁用chart (e.g. subchart1.enabled )
tags: # (可選)
- 用于一次啟用/禁用 一組chart的tag
import-values: # (可選)
- ImportValue 保存源值到導(dǎo)入父鍵的映射。每項(xiàng)可以是字符串或者一對子/父列表項(xiàng)
alias: (可選) chart中使用的別名。當(dāng)你要多次添加相同的chart時會很有用
maintainers: # (可選)
- name: 維護(hù)者名字 (每個維護(hù)者都需要)
email: 維護(hù)者郵箱 (每個維護(hù)者可選)
url: 維護(hù)者URL (每個維護(hù)者可選)
icon: 用做icon的SVG或PNG圖片URL (可選)
appVersion: 包含的應(yīng)用版本(可選)。不需要是語義化,建議使用引號
deprecated: 不被推薦的chart (可選,布爾值)
annotations:
example: 按名稱輸入的批注列表 (可選).

(3) 部署并查看Chart

# 安裝chart
$ helm install mychart ./mychart
# 查看已安裝的chart
$ helm list
# 查看chart的依賴
$ helm dependency list mychart
# 查看Chart的歷史
$ helm history mychart

(4) 升級或卸載Chart

$ helm upgrade mychart ./mychart
$ helm uninstall mychart

四、結(jié)語

雖然Kubernetes本身已經(jīng)非常強(qiáng)大,但隨著容器化應(yīng)用規(guī)模的擴(kuò)大以及復(fù)雜度的增加,直接通過YAML文件來管理這些應(yīng)用變得愈發(fā)困難。Helm作為Kubernetes的一個包管理器,不僅簡化了部署流程,還極大地提高了配置的可維護(hù)性與復(fù)用性,使得開發(fā)團(tuán)隊(duì)能夠更高效地協(xié)作,并且輕松應(yīng)對多環(huán)境下的持續(xù)集成/持續(xù)交付(CI/CD)需求。

此外,Helm的強(qiáng)大之處不僅僅體現(xiàn)在其對于單個應(yīng)用或服務(wù)的打包能力上,它還能幫助用戶構(gòu)建復(fù)雜的微服務(wù)架構(gòu)。通過定義清晰的服務(wù)依賴關(guān)系,并利用版本控制系統(tǒng)來跟蹤每次變更,Helm讓整個系統(tǒng)的演進(jìn)過程更加透明可控。這對于需要頻繁更新和迭代的大中型企業(yè)級項(xiàng)目尤為重要。

值得注意的是,盡管Helm提供了許多便利功能,但在實(shí)際使用過程中也需要注意一些潛在問題。例如,不恰當(dāng)?shù)腸hart設(shè)計(jì)可能會導(dǎo)致資源過度消耗;而缺乏足夠的安全性考量,則可能使系統(tǒng)面臨不必要的風(fēng)險(xiǎn)。因此,在享受Helm帶來便捷的同時,開發(fā)者們也需要不斷學(xué)習(xí)最佳實(shí)踐,確保自己的Kubernetes集群被高效安全地管理。

參考: https://helm.sh/docs/

責(zé)任編輯:武曉燕 來源: 程序員Aike
相關(guān)推薦

2023-01-31 17:24:21

DPUCPUGPU

2023-09-12 14:02:30

數(shù)組vector

2023-04-07 15:30:24

操作系統(tǒng)ChatGPT

2023-10-24 15:15:26

HTTPWebSocket

2021-10-12 18:48:07

HTTP 協(xié)議Websocket網(wǎng)絡(luò)通信

2020-05-06 16:41:36

紅黑樹二叉查找樹

2023-06-01 07:50:42

JSDocTypeScriptAPI

2015-06-19 06:41:45

生命科學(xué)云計(jì)算集群計(jì)算

2024-02-22 10:34:00

NULLC++nullptr

2024-02-18 12:39:15

C++autodecltype

2025-04-09 11:15:00

服務(wù)熔斷服務(wù)降分布式系統(tǒng)

2019-11-28 08:52:12

5G網(wǎng)絡(luò)切片專網(wǎng)

2016-01-28 10:04:09

Jenkins運(yùn)維持續(xù)交付

2017-08-17 17:00:59

Androidroot手機(jī)

2020-05-13 15:57:59

聚類分析算法監(jiān)督學(xué)習(xí)

2025-01-07 14:36:12

2023-09-14 16:02:27

2017-12-11 17:14:56

ERP管理數(shù)字化

2020-04-26 09:32:13

物聯(lián)網(wǎng)安全技術(shù)

2018-09-20 22:04:01

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號