網站首頁 編程語言 正文
Helm Helm是什么?
Helm是Kubernetes的軟件包管理器,類似于yum、apt等包管理工具一樣,Helm可以輕松的一鍵式部署出我們想要的應用。
編寫Helm有三個主要目標:
1.輕松地實現從“從零到Kubernetes”;
2.提供與操作系統類似的軟件包管理系統;
3.強調將應用程序部署到Kubernetes的安全性和可配置性。
Helm中一個很重要的元素:Chart
chart是Helm的軟件包,是航海圖的意思。chart是遵循chart規范的一組文件和目錄,用于定義要安裝到kubernetes中的資源。
chart中包含一個名為chart.yaml的文件,它描述了此chart的版本、名稱、說明和作者的一些信息。
chart包含模板,即kubernetes清單。
chart中有一個提供默認配置的文件名字為values.yaml。此文件包含安裝和升級期間可覆蓋的參數,可以進行修改。
當你所見到一個chart的時候,它可能是一個壓縮包,像這個樣子ingress-nginx-4.0.17.tgz,也可以是一個目錄ingress-nginx。
它的目錄構造可能是這個樣子:
[root@k8s-master01 ingress-nginx]# ls CHANGELOG.md Chart.yaml ci OWNERS README.md README.md.gotmpl templates values.yaml
當一個chart被安裝時,它的流程可能是這個樣子的:
- Helm讀取chart
- 將定義的值發送到模板,生成kubernetes清單
- 清單被發送到kubernetes
- kubernetes根據清單在集群中創建請求的資源
使用Helm
Helm擁有v2和v3版本,這里就忽略v2了,因為我是用的是v3。
Helm提供了一個名為helm的命令行工具,我們使用它進行操作。
安裝helm客戶端注意點
安裝helm時要注意一點,helm的版本要匹配kubernetes的版本,如下圖:
具體詳細版本對應參考:https://helm.sh/docs/topics/version_skew/
通過二進制的方式安裝helm客戶端:
詳細說明或其他方式安裝參考:https://helm.sh/docs/intro/install/官方文檔
目前到我安裝的時候helm的最新版本為3.8.0,而我的k8s集群版本為1.23.x是完全符合的。
下載二進制包
wget https://get.helm.sh/helm-v3.8.0-linux-amd64.tar.gz
解壓二進制包
tar xf helm-v3.8.0-linux-amd64.tar.gz
將解壓后目錄中的helm目錄移動到/usr/local/bin/helm下
mv linux-amd64/helm /usr/local/bin/helm
安裝結束,灰常簡單
添加chart存儲庫
只有一個客戶端工具是沒法干活的,我們還需要知道它的chart包從哪來,相當于yum安裝的軟件源。
- 添加一個官方存儲庫
- 注意:add 后面的名稱是自定義的,方便你記住,不是固定的
helm repo add bitnami https://charts.bitnami.com/bitnami # 我的環境添加的存儲庫 [root@k8s-master01 ~]# helm repo list NAME URL ingress-nginx https://kubernetes.github.io/ingress-nginx nginx-stable https://helm.nginx.com/stable bitnami https://charts.bitnami.com/bitnami
查看是否添加成功?其實上面已經演示了,這條命令可以查看你添加過的存儲庫存不存在
helm repo list
搜索chart存儲庫
添加了庫后,怎么能知道我想安裝的chart包存不存在呢?使用下面這條命令
[root@k8s-master01 ~]# helm search repo apache NAME CHART VERSION APP VERSION DESCRIPTION bitnami/apache 9.0.2 2.4.52 Apache HTTP Server is an open-source HTTP serve... bitnami/airflow 12.0.1 2.2.3 Apache Airflow is a tool to express and execute...
當然你也可以嘗試搜索來自網絡中的chart包:
[root@k8s-master01 ~]# helm search hub wordpress URL CHART VERSION APP VERSION DESCRIPTION https://artifacthub.io/packages/helm/kube-wordp... 0.1.0 1.1 this is my wordpress package https://artifacthub.io/packages/helm/bitnami/wo... 13.0.11 5.9.0 WordPress is the world's most popular blogging ...
安裝一個chart
安裝chart的前提是需要有一個命名空間,當然默認的也可以,為了區分還是創建一個
下面創建一個名為mysql的命名空間
kubectl create ns mysql
然后安裝chart軟件包
hellm install my-mysql bitnami/mysql -n mysql
說一下這條命令的含義:
- my-mysql代表我運行這個chart的名字,是自定義的
- bitnami/mysql:是存儲庫的名字加軟件包名
- -n mysql:是指定命名空間的名字
安裝完可以查看一下是否安裝成功:
需要注意的是:
- 不管你的Pod資源能不能創建成功,只要helm創建成功了那么這個實例就會存在
- 同一命名空間內實例名稱唯一,再次創建同名稱的實例會報錯
[root@k8s-master01 ~]# helm list -n mysql NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION my-mysql mysql 1 2022-02-17 14:32:38.423267837 +0800 CST deployed mysql-8.8.23 8.0.28
這條命令可以查看你創建chart 的一些狀態:
[root@k8s-master01 ~]# helm status my-mysql -n mysql
當你不想要這個chart的時候也可以選擇卸載掉:
[root@k8s-master01 ~]# helm uninstall my-mysql -n mysql
自定義配置安裝
默認安裝的配置往往不是我們需要的,那么我們可以將chart包pull下來,然后進行修改參數后再執行。
將chart包pull下來,進行解壓,可以看到包內的基本信息
[root@k8s-master01 ~]# helm pull bitnami/mysql [root@k8s-master01 ~]# tar xf mysql-8.8.23.tgz -C /temp/ [root@k8s-master01 ~]# cd /temp/mysql/ [root@k8s-master01 mysql]# ls Chart.lock charts Chart.yaml ci README.md templates values.schema.json values.yaml
可以修改他的values.yaml
文件,這里就不修改了然后執行修改后的values.yaml
文件,因為你執行的是本地文件,就不用加源地址了
[root@k8s-master01 mysql]# helm install mysql-01 -n mysql .
如果你已經運行了這個chart,然后又修改了yaml文件,你可以用這條命令進行更新
[root@k8s-master01 mysql]# helm upgrade --install mysql-01 -n mysql .
就到這吧,只說一下helm的基本使用。
以后會寫chart的使用,自己創建chart等內容。
原文鏈接:https://yyang.blog.csdn.net/article/details/123027203
相關推薦
- 2022-07-09 Docker項目啟動報設備忙錯誤
- 2022-11-30 Android?Binder?通信原理圖文詳解_Android
- 2022-03-09 C語言通過gets和gets_s分別實現讀取含空格的字符串_C 語言
- 2024-07-15 bootspring第三方資源配置管理
- 2022-07-04 python如何處理matlab的mat數據_python
- 2022-05-24 SQL?Server表空間碎片化回收的實現_MsSql
- 2022-09-24 ASP.NET?MVC下拉框中顯示枚舉項_實用技巧
- 2022-08-05 RedisConfig 配置文件
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支