大家好,我是张晋涛。
在上一篇 《企业级云原生应用交付及管理系列 - Helm 基础 (一)》 中,我主要介绍了 Helm 的诞生及其发展,包括 Helm 各个版本的情况及社区的发展。
此外,还介绍了 Helm 的架构,概念,插件以及其基本用法。
本节我将默认读者已经有一定的 Helm 和 Kubernetes 基础, 介绍 Helm 的一些高阶特性和用法, 如果有不清楚的概念可以看我的历史文章。
准备
这里我们使用 helm create
命令来创建一个 Helm chart。执行完成后,会在当前目录创建一个新的目录,其中包含了 Helm 预先创建的一个模板。本文中的后续内容均会基于该 Helm chart 完成。
tao@moelove:~$ helm create moelove
Creating moelove
tao@moelove:~$ ls
moelove
tao@moelove:~$ tree
.
└── moelove
├── Chart.yaml
├── charts
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── service.yaml
│ ├── serviceaccount.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
4 directories, 10 files
Debug
在我们去创建/维护,或者使用 Helm chart 进行应用部署的时候,有时候可能会遇到一些错误。那么如何对 Helm chart 进行 debug 呢?这是很多人都会遇到的一个问题。
Helm chart 是通过 YAML 进行维护的,而 YAML 是缩进/语法敏感的。假如你的缩进或者语法有问题,都将会导致报错。最简单的检查办法是使用 helm lint
进行检查。
比如我们进行如下修改:
diff --git a/values.yaml b/values.yaml
index 4a8b237..696a77d 100644
--- a/values.yaml
+++ b/values.yaml
@@ -5,7 +5,7 @@
replicaCount: 1
image:
- repository: nginx
+ repository: nginx
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: ""
可以看到,我们将 image.repository
的缩进搞错了。这时进行安装将看到如下报错:
tao@moelove:~$ helm install foo .
Error: INSTALLATION FAILE