## 1. NOTES.txt
我們前面在使用 `helm install` 命令的時候,Helm 都會為我們打印出一大堆介紹信息,這樣當別的用戶在使用我們的 chart 包的時候就可以根據這些注釋信息快速了解我們的 chart 包的使用方法,這些信息就是編寫在 `NOTES.txt` 文件之中的,這個文件是純文本的,但是它和其他模板一樣,具有所有可用的普通模板函數和對象。
現在我們在前面的示例中 templates 目錄下面創建一個 NOTES.txt 文件:
```bash
Thank you for installing {{ .Chart.Name }}.
Your release is named {{ .Release.Name }}.
To learn more about the release, try:
$ helm status {{ .Release.Name }}
$ helm get {{ .Release.Name }}
```
我們可以看到我們在 `NOTES.txt` 文件中也使用 `Chart` 和 `Release` 對象,現在我們在 `mychart` 包根目錄下面執行安裝命令查看是否能夠得到上面的注釋信息:
```bash
$ helm install .
Error: release nomadic-deer failed: ConfigMap in version "v1" cannot be handled as a ConfigMap: v1.ConfigMap: Data: ReadString: expects " or n, but found [, error found in #10 byte of ...|rselist":[{"0":"K8s"|..., bigger context ...|:{"app":"mychart","chart":"mychart","courselist":[{"0":"K8s"},{"1":"Python"},{"2":"Search"},{"3":"Go|...
```
我們可以看到出現了上面的錯誤信息,但是如果我們去執行 debug 命令來調試的話是沒有任何問題的,是可以正常渲染的,但是為什么在正式安裝的時候確出現了問題呢?這是因為我們在 debug 調試階段只是檢驗模板是否可以正常渲染,并沒有去檢查對應的 kubernetes 資源對象對 yaml 文件的格式要求,所以我們說 debug 測試通過,并不代表 chart 就真正的是可用狀態,比如我們這里是一個 ConfigMap 的資源對象,ConfigMap 對 data 區域的內容是有嚴格要求的,比如我們這里出現了下面這樣的內容:
```bash
web: true
courselist:
- 0: "K8s"
- 1: "Python"
- 2: "Search"
- 3: "Golang"
```
這的確是一個合法的 yaml 文件的格式,但是對 `ConfigMap` 就不合法了,需要把 `true` 變成字符串,下面的字典數組變成一個多行的字符串,這樣就是一個合法的 `ConfigMap`了:(`templates/config.yaml`)
```bash
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
labels:
{{- include "mychart.labels" . | indent 4}}
data:
app: mychart
myvalue: {{ .Values.hello | default "Hello World" | quote }}
{{- $releaseName := .Release.Name }}
{{- with .Values.course }}
k8s: {{ .k8s | upper | quote }}
python: {{ .python | repeat 5 | quote }}
release: {{ $releaseName }}
{{- if eq .python "django" }}
web: "true"
{{- end }}
{{- end }}
courselist: |
{{- range $index, $course := .Values.courselist }}
{{ $course | title | quote }}
{{- end }}
{{- range $key, $val := .Values.course }}
{{ $key }}: {{ $val | upper | quote }}
{{- end }}
{{- include "mychart.labels" . | indent 2 }}
```
現在我們再來執行安裝命令:
```bash
$ helm install .
NAME: nosy-pig
LAST DEPLOYED: Sat Sep 29 19:26:16 2018
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1/ConfigMap
NAME DATA AGE
nosy-pig-configmap 11 0s
NOTES:
Thank you for installing mychart.
Your release is named nosy-pig.
To learn more about the release, try:
$ helm status nosy-pig
$ helm get nosy-pig
```
現在已經安裝成功了,而且下面的注釋部分也被渲染出來了,我們可以看到 `NOTES.txt` 里面使用到的模板對象都被正確渲染了。
為我們創建的 chart 包提供一個清晰的 `NOTES.txt` 文件是非常有必要的,可以為用戶提供有關如何使用新安裝 `chart` 的詳細信息,這是一種非常友好的方式方法。