天天看點

helm更新latest鏡像

有不少朋友跟我說,helm更新statefullset或者deployment時,使用latest鏡像,無法更新,其實這個問題很好解決的,可以使用git-hash來解決,參考文章 https://www.yinyubo.cn/?p=535

也可以使用我們本篇文章裡的辦法,添加環境變量來解決

helm更新的原理是,yaml檔案沒有變更,則不會更新,我們要想使用latest鏡像先terminating老的pod,再running一個新的pod,隻要使我們的statefullset或者deployment的yaml檔案發生變更即可。下面貼出解決代碼

containers:
        - image: '鏡像名:latest'
          imagePullPolicy: Always
          env:
            - name: upgrade_time
              value: {{ date "2006-01-02-150405" .Release.Time }}      

鏡像使用latest,拉取政策使用alway pull的政策。在環境變量裡添加一個upgrade_time更新時間,該時間使用helm的date功能生成,這樣我們的yaml就能做到每次helm upgrade都發生變更,每次都能去拉取最新的鏡像并且更新。并且我們可以在部署之後,通過kubectl exec -it “pod名字” sh 進入容器,檢查env裡的upgrade_time看看是否更新。

很簡單吧,快試試吧