成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Kubernetes包管理神器Kustomize與Helm對比

云計算 云原生
Helm 將所有 K8s 對象封裝到一個包中,減少了與各個yaml 文件的交互。除此之外,大多數第三方供應商還提供預構建的 Helm 圖表,以簡化將其產品部署到 K8s 中的過程。因此,Helm 通常是安裝現成解決方案(例如監控、數據庫和消息中間件等)的首選。

K8s 是一個開源容器編排平臺,可自動執行容器化應用程序的部署、擴展和管理。近年來,K8s 已成為采用云原生架構和容器化技術的組織的標準。

但是由于K8s的復雜性,因此誕生很多工具來簡化使用的門檻。大多數公司使用的兩個工具是Kustomize (K8s 的配置管理器)和Helm (K8s 的包管理器)

在本文中,我們將討論 Helm 和 Kustomize、它們可以做什么、如何使用它們以及這些工具之間有什么區別。


Kustomize

Helm

操作方法

overlays

templating

使用成本

簡單

復雜

是否支持封裝



原生 kubectl 集成



聲明式/ 命令式

聲明式

命令式

什么是Kustomize?

Kustomize 是 k8s集群的配置定制工具。它允許管理員使用非模板文件進行聲明性更改,而不影響原始清單文件。

所有自定義規范都包含在 kustomization.yaml 文件中,該文件將規范疊加在現有清單之上以生成資源的自定義版本。

比如我們有一個應用,需要在生產環境和測試環境部署,并且它的 yaml 配置大部分是相同的,只有少數的字段不同,那么這時候就可以用kustomize 來解決

Kustomize結構

Kustomize 使用共享基礎資源和覆蓋來提供可重用性和配置生成。Kustomize 項目的典型目錄結構如下所示:

圖片圖片

Kustomize 項目結構通常包含基本目錄和覆蓋目錄。在上面結構中,基本目錄包含一個名為kustomization.yaml的文件和共享資源的清單文件。

base/kustomization.yaml文件聲明文件,將包含在所有環境中

Overlays目錄也包含kustomization.yaml,此文件會引用base文件夾的yaml 文件并進行自定義修改來構建個性化資源。同時Overlays 目錄還包括單獨的yaml文件,Kustomize 使用這些文件來創建特定環境資源

自定義部署示例

下面通用示例演示如何使用 Kustomize 進行最小 K8s 部署,將資源部署到開發和生產環境。

前置依賴

  • k8s 集群(1.14+)
  • Kubectl 客戶端

使用以下命令克隆示例 Git 存儲庫并將所需的清單下載到您的工作環境中:

git clone https://github.com/dongweizhao/kustomize-demo.git

圖片圖片

結構如下

圖片圖片

此示例模擬在不同環境部署httpd 的dp和svc,其中dev會在名稱前增加dev-,prod 會在名稱前增加prod-,而 base會使用默認名稱 httpd

  1. base
resources:
- deployment.yaml
- service.yaml
  1. prod
bases:
- ../../base
namePrefix: prod-
  1. dev
bases:
- ../../base
namePrefix: dev-

部署

cd base && kubectl apply -k .

執行完成以后會輸出以下結果

圖片圖片

注意: kubectl 使用 -k 或 --kustomize 標志來識別 Kustomize

和前面一樣,到“/overlays/dev”文件夾執行部署,如下所示:

cd overlays/dev && kubectl apply -k .

輸出結果

圖片圖片

prod 部署

cd overlays/prod && kubectl apply -k .

輸出結果

圖片圖片

結果驗證

kubectl get pods|grep http

圖片圖片

kubectl get svc|grep http

圖片圖片

根據以上結果,可以看到配置已經生效

什么是Helm?

Helm 是一個能夠在 K8s 上打包、部署和管理應用程序的工具,即使是最復雜的 K8s 應用程序它都可以幫助定義,安裝和升級,同時Helm 也是 CNCF 的畢業項目。

圖片圖片

以下Helm中的概念

Helm Charts:預先配置yaml的模板,在這里叫Chart,用于描述 K8s 應用程序的yaml和配置

Helm Client:用于與 Helm 交互并管理這些Chart版本的命令行界面

Chart 倉庫:管理Chart的倉庫,跟Maven的Nexus一個意思,比如在公司環境構建上傳,在客戶的機房連接到這Chart 倉庫下載Chart,并部署到k8s中。

Helm 示例

前置依賴

  • k8s 集群
  • Kubectl 客戶端
  • helm客戶端

Helm Charts 是預先配置的 K8s 資源包。Helm Chart 包含部署特定應用程序或服務所需的所有信息,包括 K8s 清單、環境變量和其他配置

目錄名稱是Chart的名稱,如Helm 文檔所示,我們通過helm create helm-demo命令創建一個Chart,執行完以后,默認會生成一個 nginx 的Chart,如下圖

圖片圖片

Chart.yaml

定義了當前 chart版本,以及描述當前chart用途,其中 name 參數表示 chart 名稱,后期上傳下載都會用此名稱

apiVersion: v2
name: helm-demo
description: A Helm chart for K8s

# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application

# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "1.16.0"

values.yaml

可變參數,都是在此文件中定義,在yaml模板中引用,比如:image.repository,而引用則通過.Values+變量的名進行引用,如下圖

圖片圖片

_helpers.tpl

定義通用代碼塊,然后yaml 文件會通過 include 引用

定義

{{- define "helm-demo.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}

引用

{{ include "helm-demo.fullname" . }}

templates

此目錄主要存放的是要部署的 yaml文件模板,同時也包含_helpers.tpl文件,模板會引用values.yaml、Chart.yaml定義的參數,以及_helpers.tpl定義的通用代碼塊

圖片圖片

部署

helm package helm-demo

圖片圖片

以下命令,通過 set指定部署 2 個副本pod,此參數在 values.yaml 中有定義

helm install helm-demo helm-demo-0.1.0.tgz --set replicaCount=2

圖片圖片

結果驗證

可以看到部署了 2 個副本

kubectl get pods|grep helm

圖片圖片

主要差異

操作方法

Kustomize 依賴特定于目錄的kustomization.yaml文件來構建各個資源并對其進行更改。這些文件將補丁和覆蓋應用到共享基文件夾中聲明的資源,以提供自動化的多環境配置。

Helm 通過引用value.yaml文件作為變量源,使用模板生成有效的 K8s 配置。模板目錄托管 Helm Chart在部署期間用于創建資源的文件。

便捷性

從K8s 版本 1.14 開始,Kustomize 與 kubectl CLI 捆綁在一起,因此不需要掌握任何其他工具。Kustomize 支持聲明式部署,并對每個文件使用純 YAML,從而更容易使用。

Helm 為K8s包管理任務添加了額外的抽象層,從而加快了希望簡化集群配置和發布自動化的團隊的學習曲線。Helm Chart 相對Kustomize復雜,不過功能更加強大。

打包

Kustomize 缺乏的打包功能,并且每個資源都必須在基本文件夾中聲明,并在覆蓋kustomization.yaml文件中單獨聲明變體。

而Helm將所有必需的K8s資源都打包到一個文件夾中,該文件夾可以根據需要重復使用。Helm 還允許設置應用程序默認值,并且使用values.yaml文件修改參數,從而注入引用的 yaml 文件中。

原生 kubectl 集成

從 K8s 1.14 版開始,Kustomize 就預裝了 kubectl,Helm 并未與 K8s 預先集成,因此必須手動安裝 Helm。

Kustomize 與 Helm - 何時使用

何時使用 Kustomize

Kustomize允許在不改變原始文件的情況下進行精確更改。因此可以有以下場景

  • 應用配置的變體管理:當你需要管理多個環境(例如開發、測試、生產)中應用的變體時,Kustomize 是一個很好的選擇。它允許你為不同的環境創建不同的配置,并使用一套基礎配置來定義通用部分。
  • 持續集成和持續部署(CI/CD)流水線:Kustomize 可以與 CI/CD 工具集成,幫助你實現自動化部署。通過在流水線中使用 Kustomize,你可以根據需要生成特定環境的配置,并將其應用到集群中。

何時使用 Helm

Helm 將所有 K8s 對象封裝到一個包中,減少了與各個yaml 文件的交互。除此之外,大多數第三方供應商還提供預構建的 Helm 圖表,以簡化將其產品部署到 K8s 中的過程。因此,Helm 通常是安裝現成解決方案(例如監控、數據庫和消息中間件等)的首選

責任編輯:武曉燕 來源: 架構成長指南
相關推薦

2020-11-05 11:00:21

KubernetesKustomize開源

2023-03-10 22:14:49

KustomizeKubernetes

2025-04-29 10:00:00

Kubernete云原生Helm

2024-07-08 08:11:15

2021-04-14 18:54:20

Kubernetes開發工具開發

2022-02-28 10:22:08

前端管理工具

2013-10-21 10:01:04

編碼工具擴展

2024-04-10 11:50:28

2022-02-21 09:58:31

包管理器npmyarn

2021-06-24 08:25:38

flux2GitOps 云原生

2019-03-29 09:00:31

Kubernetes開發者工具

2024-11-26 07:37:22

2021-10-15 08:27:14

Kubernetes 工具Mizu

2024-11-15 08:30:23

2020-08-16 08:34:15

Helm圖表Kubernetes Kubernetes

2019-09-02 13:57:07

Helm Chart工具Kubernetes

2022-05-07 11:08:50

Linuxapt 命令

2021-02-05 07:48:06

Linux操作系統軟件

2022-05-04 11:10:58

Linuxdnf 命令

2020-09-09 07:00:00

Kubernetes集群容器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产伦精品一区二区三区高清 | 日韩视频精品在线 | 日日综合 | 美女张开腿露出尿口 | 欧美黄色大片在线观看 | 久久久久久成人 | 一级黄色毛片子 | 亚洲va中文字幕 | 欧美成人精品 | caoporn视频| 日日日日操 | 国产超碰人人爽人人做人人爱 | 性高朝久久久久久久3小时 av一区二区三区四区 | 91精品国产一区二区三区蜜臀 | 91视频网 | 国产精品久久久久久久久久久久冷 | 日本一区二区在线视频 | 精品九九久久 | 99精品国产在热久久 | 国产综合视频 | 日韩精品在线免费观看视频 | 久久躁日日躁aaaaxxxx | 欧美日韩专区 | 一区二区三区在线看 | 国产精品视频一 | 国产精品成人国产乱一区 | 国产综合久久 | 日韩成人av在线 | 一区二区在线 | 欧美精品日韩精品国产精品 | 激情91| 三级成人在线观看 | 精品久久久久久久 | 一级国产精品一级国产精品片 | 国产成人福利在线观看 | 欧美日韩在线一区二区 | 国产成人免费 | 久久久久久国产精品免费免费狐狸 | 亚洲精品久久久久久宅男 | 亚洲一区视频 | 亚洲三级在线 |