k8s helm映象版本永遠不要用latest

2022-02-18 08:18:17 字數 1575 閱讀 4004

對於容器編排工具k8s來說,你可以使用它規定的yaml格式的指令碼,使用客戶端kubectl來與k8s進行通訊,將你定義好的yaml部署指令碼應用到k8s集群上,而這對yaml指令碼一般來說都是很像的,就是說,你需要反覆的使用同樣結構的**,這對於開發人員來說不是乙個好的訊號,所以helm出現了,它是一種模板化的部署工具,你定義好模板之後,把變數的物件放在values.yaml裡就可以了。

在使用helm進行部署時出現了乙個問題,使用映象時習慣的使用了latest這個版本,也就是最新版本,在使用helm進行部署時,對於相同版本號的映象來說,它對於的pod居然沒有從新編排,這個問題直接影響了整個部署的方式,在jenkins專案部署之後,還需要手動進行pod的部署,這顯然是不能接受的,最後在helm裡打算使用docker具體的映象版本號。

jenkins從gitlab上拉取專案源**

編譯專案,測試專案

打包專案成為映象,映象版本使用jenkins的tagid,它是當前任務的版本,我們可以直接用

上傳映象到私有倉庫harbor裡

拉取helm chart倉庫**,這個倉庫裡儲存所有服務需要的charts資訊

使用sed命令將當前tagid寫入charts到values.yaml檔案的對應服務映象版本的位置,使用了yaml的錨點和引用功能

使用helm package打包你的服務

使用helm upgrade公升級你的現有服務

將charts倉庫的變化儲存,然後提交到gitlab裡

整個部署過程完畢!

使用sed命令可以在文件中查詢某些字元,並且在這些字元所在行的下一行去插入新的內容

sh """

sed -i "/$-imagetag/" $/charts/$/values.yaml

sed -i "/$-imagetag/a \\ imagetag: $config.tagid" $/charts/$/values.yaml

"""

上面**中,我們對values.yaml裡的某個服務名字尾是-imagetag的內容的下一行進行刪除;並且在它的下一行插入新的內容imagetag:版本號;這一行請注意,我們使用了兩個\,它是乙個轉義付符號,它會在imagetag前面插入一些空格。

你可以為values.yaml裡新增乙個引用片斷,然後在values.yaml其它位置使用它們,即它類似於先定義一些內容,然後在一些位置插入它們。

hello-world-imagetag: &helloworldimagetagid

imagetag: 1

- name: hello-world

port: 9001

hasvm: true

<<: *helloworldimagetagid

上面的**,在hasvm這行下面,就裡引用我們的imagetag: 1這行的內容,而helloworldimagetagid是我們定義的別名,在引用的位置需要使用這個別名。

這篇文章對於正在使用jenkins,k8s部署你的微服務的同事來說,是非常不錯的文章!

k8s部署php映象

之前寫了 製作php nginx環境映象製作了乙個php映象。那麼如何使用這個映象呢?docker命令解釋 rm 防止docker產生tag為 none的的映象 d 使得產生的container在後台執行 name 指定該container 名稱為php 方便之後操作 p 指定埠 第乙個80為宿主機...

k8s的 容器映象

my registry.example.com 5000 example web example v1.0.1 2.綠色部分 registry 埠 3.紫色部分 repository 名字 4.紅色部分 image 名字 5.棕色部分 image 標籤 更新映象 如果您期望每次啟動 pod 時,都強...

國內安裝K8S映象源

yum install y kubelet kubeadm kubectl啟動 systemctl enable kubelet systemctl start kubelet關閉防火牆 systemctl stop firewalld systemctl disable firewalld set...