chart構成
創建一個名為mychart的chart,查看文件結構
helm create mychart
[root@k8s-master ~]# tree mychart/ mychart/ ├── charts ├── Chart.yaml ├── templates │ ├── deployment.yaml │ ├── _helpers.tpl │ ├── ingress.yaml │ ├── NOTES.txt │ └── service.yaml └── values.yaml
所有kubenetes要執行的yaml模板都存放在templates文件夾下,例如上個例子中存放了deployment,service,ingress三個kubenetes資源對象。
values.yaml文件存放yaml模板中定義的默認值。
Chart.yaml存放cahrt的版本信息。
NOTES.txt顯示cahrt的release運行后的幫助信息。
helm轉移chart
首先,編輯和配置好本地的chart文件,然后使用helm打包成tar文件。
helm package ./mychart
把tar包拷入到另一個環境,通過helm install命令指定tar名稱導入。
helm install --name example3 mychart-0.1.0.tgz --set service.type=NodePort
helm本地repo
helm可以啟動一個本地HTTP服務器,作為一個為本地chart的repo服務。
helm serve
另開一個終端,可以搜索和安裝本地repository中的chart。
helm search local
helm install --name example4 local/mychart --set service.type=NodePort
chart中定義依賴
可以在chart目錄中創建一個requirements.yaml文件定義該chart的依賴。
$ cat > ./mychart/requirements.yaml <<EOF dependencies: - name: mariadb version: 0.6.0 repository: https://kubernetes-charts.storage.googleapis.com EOF
通過helm命令更新和下載cahrt的依賴
helm dep update ./mychart
在次安裝運行chart時會把依賴中定義的chart運行起來。
自定義chart repository
首先,把每個chart打包的tar文件集中存放到charts目錄,使用以下命令生成index.yaml文件。
mv mychart-0.1.0.tgz charts/ $ helm serve --repo-path ./charts
命令執行完后
charts目錄結構如下
[root@k8s-master ~]# tree ./charts ./charts ├── index.yaml └── mychart-0.1.0.tgz 0 directories, 2 files
把charts目錄在遠端web服務器上復制一份,保持連個文件里面tar包文件一樣。執行以下命令在本地和遠端生成新的index.yaml文件,該文件的url為遠端web服務器的url。
helm repo index charts --url http://192.168.122.1:81/charts
[root@k8s-master ~]# cat charts/index.yaml
apiVersion: v1
entries:
mychart:
- apiVersion: v1 created: 2018-01-16T11:53:46.922200367+08:00 description: A Helm chart for Kubernetes digest: 7471a2a8496517b4ce1014b2787d3dc745b981fb69c9e53a257ccd7ac390d036 name: mychart urls: - http://192.168.122.1:81/charts/mychart-0.1.0.tgz version: 0.1.0 generated: 2018-01-16T11:53:46.921691858+08:00
增加chart
在本地charts目錄和遠端web服務器目錄增加新chart的tar文件,然后執行以下命令重建index.yaml。
helm repo index charts --url http://192.168.122.1:81/charts
或者,在index.yaml中之增加新cahrt的元數據信息。
helm repo index charts --url http://192.168.122.1:81/charts --merge
把新生成的index.yaml拷貝到遠端web服務器上。
其他人使用該repo
通過以下命令增加repo
helm repo add charts http://192.168.122.1:81/charts [root@k8s-master ~]# helm repo list NAME URL local http://127.0.0.1:8879/charts stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts monocular https://kubernetes-helm.github.io/monocular charts http://192.168.122.1:81/charts
如果repo有更新,執行repo update命令會更新所以已增加的repo
helm repo update