精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Helm的一些概念及用法

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2023-05-30 09:51 ? 次閱讀

一、前言

在k8s中,我們很多時候需要部署很多個應用,特別是微服務的項目,如果每個服務部署都需要使用kubectl apply依次執行,這將是一件很痛苦的事。

這個時候,如果一鍵部署所有應用,使用Helm(https://helm.sh)是一個很不錯的選擇,它具備如下的能力:

簡化部署:Helm允許使用單個命令輕松部署和管理應用程序,從而簡化了整個部署過程;

高度可配置:Helm Charts提供了高度可配置的選項,可以輕松自定義和修改應用程序的部署配置;

版本控制:Helm允許管理應用程序的多個版本,從而輕松實現版本控制和回滾;

模板化:Helm Charts使用YAML模板來定義Kubernetes對象的配置,從而簡化了配置過程,并提高了可重復性和可擴展性;

應用程序庫:Helm具有應用程序庫的概念,可以輕松地共享和重用Helm Charts,從而簡化了多個應用程序的部署和管理;

插件系統:Helm擁有一個強大的插件系統,允許您擴展和定制Helm的功能,以滿足特定的需求和要求。

Helm本質就是一個k8s的包管理器。

二、Helm工作流程

以下是Helm的工作流程(注意:這里使用的是Helm的v3版本,該版本沒有了tiller而是用更加簡單和靈活的架構,直接通過kubeconfig連接apiserver,簡化安全模塊,降低了用戶的使用壁壘):

21a4de64-fe68-11ed-90ce-dac502259ad0.png

如上圖所示,Helm的工作流程總結如下:

開發者首先創建并編輯chart的配置;

接著打包并發布至Helm的倉庫(Repository);

當管理員使用helm命令安裝時,相關的依賴會從倉庫下載

接著helm會根據下載的配置部署資源至k8s。

三、Helm概念

在使用Helm的過程中,需要理解如下的幾個核心的概念:

概念 描述
Chart 一個Helm包,其中包含了運行一個應用所需要的鏡像、依賴和資源定義等,還可能包含Kubernetes集群中的服務定義,類似Homebrew中的formula、APT的dpkg或者Yum的rpm文件
Repository 存儲Helm Charts的地方
Release Chart在k8s上運行的Chart的一個實例,例如,如果一個MySQL Chart想在服務器上運行兩個數據庫,可以將這個Chart安裝兩次,并在每次安裝中生成自己的Release以及Release名稱
Value Helm Chart的參數,用于配置Kubernetes對象
Template 使用Go模板語言生成Kubernetes對象的定義文件
Namespace Kubernetes中用于隔離資源的邏輯分區

四、Helm的使用

下面簡單講下Helm的使用。

4.1 安裝Helm

首先需要在本地機器或Kubernetes集群上安裝Helm。可以從Helm官方網站下載適合自己平臺的二進制文件,或使用包管理器安裝Helm,安裝教程參考https://helm.sh。

4.2 創建Chart

使用helm create命令創建一個新的Chart,Chart目錄包含描述應用程序的文件和目錄,包括Chart.yaml、values.yaml、templates目錄等;

例如:在本地機器上使用helm create命令創建一個名為wordpress的Chart:21cc67ae-fe68-11ed-90ce-dac502259ad0.png

在當前文件夾,可以看到創建了一個wordpress的目錄,且里面的內容如下:21d89dee-fe68-11ed-90ce-dac502259ad0.png

4.3配置Chart

使用編輯器編輯Chart配置文件,包括Chart.yaml和values.yaml。

Chart.yaml:

Chart.yaml包含Chart的元數據和依賴項

Chart.yaml的模板及注釋如下:

apiVersion: chart API 版本 (必需)  #必須有
name: chart名稱 (必需)     # 必須有 
version: 語義化2 版本(必需) # 必須有


kubeVersion: 兼容Kubernetes版本的語義化版本(可選)
description: 一句話對這個項目的描述(可選)
type: chart類型 (可選)
keywords:
  - 關于項目的一組關鍵字(可選)
home: 項目home頁面的URL (可選)
sources:
  - 項目源碼的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 保存源值到導入父鍵的映射。每項可以是字符串或者一對子/父列表項
    alias: (可選) chart中使用的別名。當你要多次添加相同的chart時會很有用


maintainers: # (可選) # 可能用到
  - name: 維護者名字 (每個維護者都需要)
    email: 維護者郵箱 (每個維護者可選)
    url: 維護者URL (每個維護者可選)


icon: 用做icon的SVG或PNG圖片URL (可選)
appVersion: 包含的應用版本(可選)。不需要是語義化,建議使用引號
deprecated: 不被推薦的chart (可選,布爾值)
annotations:
  example: 按名稱輸入的批注列表 (可選).

舉例:

name: nginx-helm
apiVersion: v1
version: 1.0.0

Values.yaml:

values.yaml包含應用程序的默認配置值,舉例:

image:
  repository: nginx
  tag: '1.19.8'

templates:

在模板中引入values.yaml里的配置,在模板文件中可以通過.VAlues對象訪問到,例如:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-helm-{{ .Values.image.repository }}
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-helm
  template:
    metadata:
      labels:
        app: nginx-helm
    spec:
      containers:
      - name: nginx-helm
        image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
        ports:
        - containerPort: 80
          protocol: TCP

4.4打包Chart

使用helm package命令將Chart打包為一個tarball文件,例如在wordpress目錄中使用helm package命令將Chart打包為一個tarball文件,這將生成一個名為wordpress-0.1.0.tgz的tarball文件:

helm package wordpress/

4.5發布Chart

將打包好的Chart發布到一個Helm Repository中。可以使用helm repo add命令添加一個Repository,然后使用helm push命令將Chart推送到Repository中,例如:

helm repo add myrepo https://example.com/charts
helm push wordpress-0.1.0.tgz myrepo

4.6安裝Release

使用helm install命令安裝Chart的Release,可以通過命令行選項或指定values.yaml文件來配置Release,例如:

helm install mywordpress myrepo/wordpress

這將在Kubernetes集群中創建一個名為mywordpress的Release,包含WordPress應用程序和MySQL數據庫。

4.7管理Release

使用helm ls命令查看當前運行的Release列表,例如:

helm upgrade mywordpress myrepo/wordpress --set image.tag=5.7.3-php8.0-fpm-alpine

這將升級mywordpress的WordPress應用程序鏡像版本為5.7.3-php8.0-fpm-alpine。

可以使用helm rollback命令回滾到先前版本,例如:

helm rollback mywordpress 1

這將回滾mywordpress的版本到1。

4.8更新Chart

在應用程序更新時,可以更新Chart配置文件和模板,并使用helm package命令重新打包Chart。然后可以使用helm upgrade命令升級已安裝的Release,可以按照以下步驟更新Chart:

在本地編輯Chart配置或添加新的依賴項;

使用helm package命令打包新的Chart版本;

使用helm push命令將新的Chart版本推送到Repository中;

使用helm repo update命令更新本地或遠程的Helm Repository;

使用helm upgrade命令升級現有Release到新的Chart版本。

例如,可以使用以下命令更新WordPress的Chart版本:

helm upgrade mywordpress myrepo/wordpress --version 0.2.0

這將升級mywordpress的Chart版本到0.2.0,其中包括新的配置和依賴項。

如果需要刪除一個Release,可以使用helm uninstall命令。例如:

helm uninstall mywordpress

這將刪除名為mywordpress的Release,同時刪除WordPress應用程序和MySQL數據庫。

如果需要刪除與Release相關的PersistentVolumeClaim,可以使用helm uninstall命令的--delete-data選項,例如:

helmuninstallmywordpress--delete-data

這將刪除名為mywordpress的Release,并刪除與之相關的所有PersistentVolumeClaim。

五、Helm的執行安裝順序

Helm按照以下順序安裝資源:

Namespace

NetworkPolicy

ResourceQuota

LimitRange

PodSecurityPolicy

PodDisruptionBudget

ServiceAccount

Secret

SecretList

ConfigMap

StorageClass

PersistentVolume

PersistentVolumeClaim

CustomResourceDefinition

ClusterRole

ClusterRoleList

ClusterRoleBinding

ClusterRoleBindingList

Role

RoleList

RoleBinding

RoleBindingList

Service

DaemonSet

Pod

ReplicationController

ReplicaSet

Deployment

HorizontalPodAutoscaler

StatefulSet

Job

CronJob

Ingress

APIService

Helm 客戶端不會等到所有資源都運行才退出,可以使用 helm status 來追蹤 release 的狀態,或是重新讀取配置信息

#$helmstatusmynginx
NAME: mynginx
LAST DEPLOYED: Fri Oct 29 1432 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

六、Helm命令匯總

在最后,附上所有helm的命令,直接控制臺使用helm --help即可查看:

The Kubernetes package manager


Common actions for Helm:


- helm search:    search for charts
- helm pull:      download a chart to your local directory to view
- helm install:   upload the chart to Kubernetes
- helm list:      list releases of charts


Environment variables:


| Name                               | Description                                                                                       |
|------------------------------------|---------------------------------------------------------------------------------------------------|
| $HELM_CACHE_HOME                   | set an alternative location for storing cached files.                                             |
| $HELM_CONFIG_HOME                  | set an alternative location for storing Helm configuration.                                       |
| $HELM_DATA_HOME                    | set an alternative location for storing Helm data.                                                |
| $HELM_DEBUG                        | indicate whether or not Helm is running in Debug mode                                             |
| $HELM_DRIVER                       | set the backend storage driver. Values are: configmap, secret, memory, sql.                       |
| $HELM_DRIVER_SQL_CONNECTION_STRING | set the connection string the SQL storage driver should use.                                      |
| $HELM_MAX_HISTORY                  | set the maximum number of helm release history.                                                   |
| $HELM_NAMESPACE                    | set the namespace used for the helm operations.                                                   |
| $HELM_NO_PLUGINS                   | disable plugins. Set HELM_NO_PLUGINS=1 to disable plugins.                                        |
| $HELM_PLUGINS                      | set the path to the plugins directory                                                             |
| $HELM_REGISTRY_CONFIG              | set the path to the registry config file.                                                         |
| $HELM_REPOSITORY_CACHE             | set the path to the repository cache directory                                                    |
| $HELM_REPOSITORY_CONFIG            | set the path to the repositories file.                                                            |
| $KUBECONFIG                        | set an alternative Kubernetes configuration file (default "~/.kube/config")                       |
| $HELM_KUBEAPISERVER                | set the Kubernetes API Server Endpoint for authentication                                         |
| $HELM_KUBECAFILE                   | set the Kubernetes certificate authority file.                                                    |
| $HELM_KUBEASGROUPS                 | set the Groups to use for impersonation using a comma-separated list.                             |
| $HELM_KUBEASUSER                   | set the Username to impersonate for the operation.                                                |
| $HELM_KUBECONTEXT                  | set the name of the kubeconfig context.                                                           |
| $HELM_KUBETOKEN                    | set the Bearer KubeToken used for authentication.                                                 |
| $HELM_KUBEINSECURE_SKIP_TLS_VERIFY | indicate if the Kubernetes API server's certificate validation should be skipped (insecure)       |
| $HELM_KUBETLS_SERVER_NAME          | set the server name used to validate the Kubernetes API server certificate                        |
| $HELM_BURST_LIMIT                  | set the default burst limit in the case the server contains many CRDs (default 100, -1 to disable)|


Helm stores cache, configuration, and data based on the following configuration order:


- If a HELM_*_HOME environment variable is set, it will be used
- Otherwise, on systems supporting the XDG base directory specification, the XDG variables will be used
- When no other location is set a default location will be used based on the operating system


By default, the default directories depend on the Operating System. The defaults are listed below:


| Operating System | Cache Path                | Configuration Path             | Data Path               |
|------------------|---------------------------|--------------------------------|-------------------------|
| Linux            | $HOME/.cache/helm         | $HOME/.config/helm             | $HOME/.local/share/helm |
| macOS            | $HOME/Library/Caches/helm | $HOME/Library/Preferences/helm | $HOME/Library/helm      |
| Windows          | %TEMP%helm               | %APPDATA%helm                 | %APPDATA%helm          |


Usage:
  helm [command]


Available Commands:
  completion  generate autocompletion scripts for the specified shell
  create      create a new chart with the given name
  dependency  manage a chart's dependencies
  env         helm client environment information
  get         download extended information of a named release
  help        Help about any command
  history     fetch release history
  install     install a chart
  lint        examine a chart for possible issues
  list        list releases
  package     package a chart directory into a chart archive
  plugin      install, list, or uninstall Helm plugins
  pull        download a chart from a repository and (optionally) unpack it in local directory
  push        push a chart to remote
  registry    login to or logout from a registry
  repo        add, list, remove, update, and index chart repositories
  rollback    roll back a release to a previous revision
  search      search for a keyword in charts
  show        show information of a chart
  status      display the status of the named release
  template    locally render templates
  test        run tests for a release
  uninstall   uninstall a release
  upgrade     upgrade a release
  verify      verify that a chart at the given path has been signed and is valid
  version     print the client version information


Flags:
      --burst-limit int                 client-side default throttling limit (default 100)
      --debug                           enable verbose output
  -h, --help                            help for helm
      --kube-apiserver string           the address and the port for the Kubernetes API server
      --kube-as-group stringArray       group to impersonate for the operation, this flag can be repeated to specify multiple groups.
      --kube-as-user string             username to impersonate for the operation
      --kube-ca-file string             the certificate authority file for the Kubernetes API server connection
      --kube-context string             name of the kubeconfig context to use
      --kube-insecure-skip-tls-verify   if true, the Kubernetes API server's certificate will not be checked for validity. This will make your HTTPS connections insecure
      --kube-tls-server-name string     server name to use for Kubernetes API server certificate validation. If it is not provided, the hostname used to contact the server is used
      --kube-token string               bearer token used for authentication
      --kubeconfig string               path to the kubeconfig file
  -n, --namespace string                namespace scope for this request
      --registry-config string          path to the registry config file (default "/Users/yanglinwei/Library/Preferences/helm/registry/config.json")
      --repository-cache string         path to the file containing cached repository indexes (default "/Users/yanglinwei/Library/Caches/helm/repository")
      --repository-config string        path to the file containing repository names and URLs (default "/Users/yanglinwei/Library/Preferences/helm/repositories.yaml")


Use "helm [command] --help" for more information about a command.

七、文末

本文主要講解了Helm的一些概念及用法,希望能幫助到大家,謝謝大家的閱讀,本文完!

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 應用程序
    +關注

    關注

    37

    文章

    3244

    瀏覽量

    57610
  • 配置
    +關注

    關注

    1

    文章

    187

    瀏覽量

    18361

原文標題:Helm入門(一篇就夠了)

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    關于開關電源的一些概念

    今天分享開關電源的一些概念
    發表于 09-20 09:28 ?1063次閱讀

    使用Helm 在容器服務k8s集群鍵部署wordpress

    的kubernets集群默認集成了helm并初始化提供了一些常用charts,下面我們就以安裝wordpress示例來演示使用流程。以上為容器服務默認提供的一些安裝charts,下面我們來安裝wordpress
    發表于 03-29 13:38

    CAD命令:CAD軟件中from命令的相關概念及應用

    ,最后輸入半徑值,就把圓畫好了。如下圖所示:以上就是在浩辰CAD軟件中from命令(基點捕捉命令)的相關概念及應用,感興趣的小伙伴可以參考本CAD教程來了解下CAD命令——from命令的一些使用技巧。
    發表于 05-25 17:27

    USB基本概念及從機編程方法介紹

    慕課蘇州大學.嵌入式開發及應用.第四章.較復雜通信模塊.USB基本概念及從機編程方法0 目錄4 較復雜通信模塊4.4 USB基本概念及從機編程方法4.4.1 課堂重點4.4.2 測試與作業5 下
    發表于 11-08 09:14

    實時多任務系統中的一些基本概念

    本文主要講述了實時多任務系統中的一些基本概念
    發表于 04-22 16:17 ?15次下載

    天線的基本概念及制作

    天線的基本概念及制作  我將介紹一些常見而且容易自制的天線,這些天線能夠用我們日常生活中容易得到的材料制作。我會逐制作這些天
    發表于 01-04 09:48 ?1378次閱讀

    電路的一些基本概念

    電子專業單片機相關知識學習教材資料——電路的一些基本概念
    發表于 08-22 16:18 ?0次下載

    電路的一些基本概念

    電子專業單片機相關知識學習教材資料——電路的一些基本概念
    發表于 10-10 14:17 ?0次下載

    C語言中#define的一些用法介紹概述

    今天整理了一些#define的用法,與大家共享!1.簡單的define定義#define MAXTIME 1
    的頭像 發表于 04-14 11:29 ?7351次閱讀

    淺析串口通信的一些基本概念及常見問題

    下面先講講串口通信的一些基本概念,術語。如果對串口通信比較熟悉的,就當復習復習,如果哪里講錯或不到位,也可以及時指出,當作塊交流交流。
    的頭像 發表于 11-11 11:17 ?6813次閱讀

    verilog的一些基本概念

    FPGA各位和數字IC設計崗位面試時常常會問下verilog的一些基本概念,做了下整理,面試時定用得上!
    的頭像 發表于 07-07 09:51 ?1492次閱讀

    INCA的一些用法

    INCA的一些用法
    的頭像 發表于 11-10 15:32 ?8676次閱讀

    如何開發helm chart

    使用helmfile時,我們首先得了解helm的使用,以及如何開發helm chart。
    的頭像 發表于 05-16 09:28 ?637次閱讀

    nmcli命令的一些常用選項和用法

    以下是nmcli命令的一些常用選項和用法: connection show -- 顯示所有網絡連接的詳細信息。 connection up --啟動網絡連接。 connection down -- 停止網絡連接。
    發表于 10-08 11:15 ?1404次閱讀
    nmcli命令的<b class='flag-5'>一些</b>常用選項和<b class='flag-5'>用法</b>

    諧波的概念及應用

    本文簡單介紹了諧波的概念及應用。
    的頭像 發表于 10-18 14:14 ?278次閱讀
    諧波的<b class='flag-5'>概念及</b>應用