helm安裝postgres_Helm 入門介紹 Kubernetes 上的包管理軟件

這篇文章介紹一下云原生應用在 Kubernetes 上安裝時,經常會用到的一個重要工具,Helm。

Helm 是 Kubernetes 的包管理軟件。提到包管理軟件,很多人都不陌生。Maven、Gradle、pip、RubyGems 和 npm 都是包管理軟件。

作為一個包管理軟件,核心是包和管理兩個部分。


Helm Chart

第一個部分的要點是 Helm 的包中都包含什么?

我們都知道,Kubernetes 采用的是聲明式的資源管理。以 YAML 文件的形式來聲明資源的期望狀態,而 Kubernetes 會確保資源的實際狀態,滿足聲明所描述的期望。

比如,一個 Deployment 只需要聲明 Pod 的數量即可,而不用去管運行時 Pod 可能會出現的由于 Pod 失敗導致的 Pod 被重新創建等細節。

在部署一個應用到 Kubernetes 時,可能會需要聲明多種不同的資源。比如,在安裝 Postgres 時,我們可能會需要如下資源:

  • 實際運行 Postgres 的 Deployment 或 StatefulSet。

  • 允許其他應用訪問的 Service。

  • 數據存儲需要的 PersistenceVolumeClaim 或 PersitenceVolume。

  • 保存數據庫配置的 ConfigMap。

  • 保存數據庫密碼的 Secret。

所有這些資源聲明組成了應用的安裝包,Helm 稱之為 Chart。

使用軟件包的一個重要目的是為了共享。Helm Chart 中的資源定義是通過模板生成的,包含了很多可以在安裝時進行配置的選項。以Postgres來說,你可能會需要配置數據庫的訪問密碼、存儲空間的大小和數據庫的初始化腳本等。

把Helm Chart與安裝時的配置項結合起來,就得到了一個特定的release。

以Postgres Chart為例,我們可以創建對應于開發、測試和生產環境的3個不同的release。每個release基于同樣的Chart,但是配置不同。配置項通常以YAML文件的形式來保存,也可以在命令行傳遞。

下面給出了的配置文件,對應于 Postgres 在開發環境上的release。

postgresqlUsername: dev
postgresqlPassword: password
persistence:
enabled: false

通過?helm install?命令可以安裝Chart。在安裝時需要指定Chart的名稱、release的名稱和配置文件。配置文件使用?-f?參數來傳遞,也可以使用?--set?來設置單個配置項的值。

下面的代碼使用默認的配置來安裝 Nginx。

helm install nginx bitnami/nginx

Release管理

之前說的是包的部分,下面介紹 Helm 對包的管理。每個 Helm Chart 有兩個版本號,一個是所安裝的應用的版本號,比如 Postgres 的版本號;另外一個是 Chart 自身的版本。使用語義化的版本號,可以保證應用的有序升級。

當創建了release之后,Helm可以對release進行管理,包括升級、回退和刪除。對release的更新會產生不同的版本。比如,在首次安裝了Nginx之后,release的版本為?1。可以通過?helm list?命令來查看。

之后我們接到一個需求,要求啟用Nginx與Prometheus的集成功能。只需要使用?helm upgrade?命令更新當前的release,傳遞一個新的配置項?metrics.enable=true?即可。當更新完成之后,release的版本為?2

helm upgrade --set metrics.enable=true nginx bitnami/nginx

如果發現之前的更新產生了問題,可以通過?helm rollback?命令,回退到版本?1。需要注意的是,在執行?helm rollback?命令之后,release的版本號實際上變成了?3。可以使用?helm history?命令來查看release的全部版本歷史記錄。

bd86ed0995075fe934455c5e501ddefe.png

在每次更新之前,還可以通過?helm diff?來查看新改動與當前release版本的差異。

helm diff upgrade --set metrics.enabled=true nginx bitnami/nginx

下面給出了?helm diff?命令的輸出結果的示例。

71da85a9784d5ed5848235bc8c99b770.png

當需要在Kubernetes上安裝軟件時,第一個選項是從 ArtifactHub 上查找,看是否已經有別人貢獻的Chart。這樣可以極大的降低開發的成本。比如,我之前安裝 Postgres 和Nginx使用的都是 Bitnami 維護的Chart。

對于內部項目的應用,只能自己開發 Chart。我將在下一篇文章中介紹 Helm Chart 的開發。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532116.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532116.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532116.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

flutter 分割線_Flutter 底部彈框 showModalBottomSheet 使用Demo

題記—— 執劍天涯,從你的點滴積累開始,所及之處,必精益求精。Flutter是谷歌推出的最新的移動開發框架。【x1】微信公眾號的每日提醒 隨時隨記 每日積累 隨心而過 文章底部掃碼關注【x2】各種系列的視頻教程 免費開源 關注 你不會迷路【x3】系…

python迭代器和for循環區別_python迭代器和for循環區別

迭代器(iterator):迭代器對象必須同時實現__iter__和__next__方法才是迭代器。對于迭代器來說,__iter__ 返回的是它自身 self,__next__ 則是返回迭代器中的下一個值,最后沒有元素時,拋出異常(異常可以被開發者看到)。1.迭代器一定是可迭代對象…

python中代理模式分為幾種_通俗 Python 設計模式——代理模式

今天來說一說代理模式。 代理模式顧名思義,是對資源進行代理訪問的一種模式,這里的資源是泛指在程序中會使用到的數據、操作、過程、對象等等。當然,針對不同的資源,代理進行的操作不盡相同,根據前人的總結&#xff0c…

layer文件ajax上傳,layer彈出層數據傳輸到content里面

在項目中使用layer彈出層的時候,遇到一個問題,就是利用ajax請求后臺數據成功時,調用layer彈出層(iframe),如何把數據傳到iframe里面去?經過百度,發現,使用js把數據拼接起來,然后在su…

清理offset_關于 kafka 日志清理策略的問題

現象:搭建了一個 kafka 服務, 使用 kafka-python 包正常生產數據, 但是 kafka 過五分鐘就把我的 topic 刪除掉. 但是配置 log 的已經配置了, 我認為 kafka 不應該刪除我的 topic 歷史數據.關于 log 清理的配置文件:############################# Log Flush Policy …

python面向對象思路_python面向對象方法

#需求:洗衣機,功能:能洗衣服#1、定義洗衣機類"""class 類名():代碼"""classWasher():defwash(self):print("能洗衣服")#2 創建對象#對象名 類名()haier Washer()#3、驗證成果#打印haier…

饑荒進地洞服務器無響應,饑荒聯機洞穴設置及常見問題的解決方法

進階篇服務端mod設置:首先(1)下載好要用mod,然后下載通用工具,解壓放到DST的mod文件夾里運行(2)此時在文檔\Klei\DoNotStarveTogether會多出一個文件modoverrides,把它復制到文檔\klei\DoNotStarveTogether_EasyConfigCaves&#…

roads 構筑極致用戶體驗_萬物互聯大勢所趨 華為保駕護航運營商“三個轉型”...

隨著通信技術及其應用的快速發展,人們發現物理世界和數字世界正在加速融合,數字經濟正在改變和顛覆著傳統市場格局。于是人們看到,電子商務、遠程教育、遠程醫療、物聯網、大數據等等,一波接一波的商業浪潮不斷涌現。然而支撐這一…

python列表字典_Python常用對字典、列表的操作

本文中使用的Python版本為3.x。合并兩個列表方法一a [1, 2, 3]b [4, 5, 6]print(a b)print(a)print(b)輸出結果為:[1,2,3,4,5,6][1,2,3][4,5,6]說明:“ab”后,a和b都沒有變化。方法二a [1, 2, 3]b [4, 5, 6]a.extend(b)print(a)print(b)…

魔獸對戰平臺修改服務器數據,《魔獸爭霸3》1.29補丁上線官方對戰平臺:平衡性大做改動...

IT之家3月1日消息 今天《魔獸爭霸》官方微博宣布《魔獸爭霸3》的最新補丁也就是1.29補丁已經登陸官方對戰平臺的PTR服務器上,想要嘗鮮的用戶可以前往官方對戰平臺進行更新和游玩。1.29補丁除了增加對于寬屏游戲的支持之外,還針對英雄單位進行平衡性的改動…

查詢列名在哪張表_探索SQL-多表查詢

一、表的加法(Union)1、用法:將兩個表合并成一個表2、語句:select 查詢結果 from 從哪張表查詢 union select 查詢結果 from 從哪張表查詢*需保留重復行*select 查詢結果 from 從哪張表查詢 union all select 查詢結果 from 從哪張…

使用未初始化的內存是什么意思_他們都說JVM能實際使用的內存比-Xmx指定的少?這是為什么呢...

這確實是個挺奇怪的問題,特別是當最常出現的幾種解釋理由都被排除后,看來JVM并沒有耍一些明顯的小花招:-Xmx和-Xms是相等的,因此檢測結果并不會因為堆內存增加而在運行時有所變化。通過關閉自適應調整策略(-XX:-UseAdaptiveSizePo…

定義整型數組_C語言基礎-數組怎么用

到目前為止,我們了解到C語言中可以使用整型,浮點型和字符型的數據類型來描述我們人類世界的各種數據,但是這些還遠遠不夠……我們在IOT領域經常會遇到這樣一個數據使用場景:某天的固定時間內,會有多臺(我們…

找出一個字符串中出現次數最多的字_海量數據中找出前k大數(topk問題)

在海量數據中找出出現頻率最好的前k個數,或者從海量數據中找出最大的前k個數,這類問題通常被稱為top K問題。針對top K類問題,通常比較好的方案是分治Trie樹/hash小頂堆(就是上面提到的最小堆),即先將數據集…

crowd counting_[crowd_counting]-SFCN-CVPR2019amp;amp;GCC dataset

1.Contribution(1)主要是提出了基于GTA5的GCC數據集數據集下載地址:https://gjy3035.github.io/GCC-CL/?gjy3035.github.io(2)提出了在如何在GCC上train,然后在傳統的通用數據集上test的遷移學習方案&…

代碼更換ui圖片_用技術的方式,在UI設計稿中設置隨機碼,保證高清

本文首發于:行者AI 在工作中會遇到批量給圖片添加文字,隨機碼等需求,當數據碼數量較大時,UI的工作量就會非常大,這時候我們可以用python來幫我們提高工作效率。1. 需求分析我們有這樣一張圖片,我們需要將一…

hash地址_redis中的hash擴容、漸進式rehash過程

背景: redis字典(hash表)當數據越來越多的時候,就會發生擴容,也就是rehash對比:java中的hashmap,當數據數量達到閾值的時候(0.75),就會發生rehash,hash表長度變為原來的二…

是什么牌子_水晶項鏈什么牌子好

閱讀本文前,請您先點擊上面的藍色字體,再點擊“關注”,這樣您就可以免費收到最新內容了。每天都有分享,完全是免費訂閱,請放心關注! …

什么是機器人的五點校正法_機器人校正方法

機器人校正方法【專利說明】機器人校正方法[0001]本申請案主張于2012年9月18日申請之美國臨時專利申請案第61/702,377號的優先權,所述專利申請案的揭示完整結合于此以供參考。技術領域[0002]本發明涉及一種工件加工,尤其涉及一種用于工件加工…

stn算子_深度學習常用算子(二)

1、Tensor維度變換1)Flatten作用:將輸入tensor中從start_axis維度到end_axis維度合并為1維2)Reshape作用:將輸入Tensor描述轉換為新的shape3)FreespaceExtract作用:將h維變成1,其他維度不變,從而完成對h的采樣&#xf…