通常 `ConfigMaps` 或 `Secrets` 作為配置文件注入到容器中,或者有其他需要滾動 pod 的外部依賴項更改。根據應用程序的不同,如果使用后續helm upgrade的 .
如果另一個文件發生更改,該`sha256sum`函數可用于確保更新部署的注釋部分:
```bash
kind: Deployment
spec:
template:
metadata:
annotations:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
[...]
```
注意:如果您將此添加到庫圖表中,您將無法訪問`$.Template.BasePath`. 相反,您可以使用`{{ include ("mylibchart.configmap") . | sha256sum }}.`
如果您總是想滾動部署,您可以使用與上面類似的注釋步驟,而不是用隨機字符串替換,這樣它總是會更改并導致部署滾動:
```bash
kind: Deployment
spec:
template:
metadata:
annotations:
rollme: {{ randAlphaNum 5 | quote }}
[...]
```
模板函數的每次調用都會生成一個唯一的隨機字符串。這意味著如果需要同步多個資源使用的隨機字符串,所有相關資源都需要在同一個模板文件中。
這兩種方法都允許您的部署利用內置的更新策略邏輯來避免停機。
> 注意:
> 1. 過去我們建議使用`--recreate-pods`標志作為另一個選項。該標志在 Helm 3 中被標記為已棄用,以支持上述更具聲明性的方法。
>
> 2. Helm 中有一些函數允許您生成隨機數據、加密密鑰等。這些很好用。但請注意,在升級期間,模板會重新執行。當模板運行生成與上次運行不同的數據時,將觸發該資源的更新。