Skip to content

Commit

Permalink
Update with upstream Helm project
Browse files Browse the repository at this point in the history
  • Loading branch information
whmzsu committed Feb 26, 2019
1 parent 628eac8 commit 21bf7c1
Show file tree
Hide file tree
Showing 22 changed files with 450 additions and 62 deletions.
30 changes: 30 additions & 0 deletions chart/chart_repository-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,36 @@ Now serving you on 127.0.0.1:8879

本部分介绍了提供 chart 库的几种方法。

### ChartMuseum

Helm 提供了一个 open-source Helm 库服务叫 [ChartMuseum](https://chartmuseum.com) ,你可以自己托管这个服务.

ChartMuseum 支撑多种云存储后端. 配置它指向你存放 chart 包的目录或者 bucket,index.yaml 文件会自动动态生成。

它也可以通过 [Helm chart](https://github.com/helm/charts/tree/master/stable/chartmuseum) 部署:
```
helm install stable/chartmuseum
```

或者 [Docker image](https://hub.docker.com/r/chartmuseum/chartmuseum/tags):
```
docker run --rm -it \
-p 8080:8080 \
-v $(pwd)/charts:/charts \
-e DEBUG=true \
-e STORAGE=local \
-e STORAGE_LOCAL_ROOTDIR=/charts \
chartmuseum/chartmuseum
```

你可以将它加到本地存储库:
```
helm repo add chartmuseum http://localhost:8080
```

ChartMuseum 提供其他特性, 如 chart 上传的 API. 查看更多信息 [README](https://github.com/helm/chartmuseum).


### Google 云端存储

第一步是创建 GCS 存储桶。我们会给我们称之为 `fantastic-charts`
Expand Down
2 changes: 1 addition & 1 deletion chart/chart_tests-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ spec:

## 在 release 上运行测试套件的步骤

1. `$ helm install wordpress`
1. `$ helm install stable\wordpress`
```
NAME: quirky-walrus
LAST DEPLOYED: Mon Feb 13 13:50:43 2017
Expand Down
4 changes: 2 additions & 2 deletions chart/charts-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ tillerVersion: The version of Tiller that this chart requires. This should be ex
其他字段将被忽略。

### Charts 和版本控制
每个 chart 都必须有一个版本号。版本必须遵循 [SemVer 2](http://semver.org/) 标准。与 Helm Class 格式不同,Kubernetes Helm 使用版本号作为发布标记。存储库中的软件包由名称加版本识别。
每个 chart 都必须有一个版本号。版本必须遵循 [SemVer 2](https://semver.org/) 标准。与 Helm Class 格式不同,Kubernetes Helm 使用版本号作为发布标记。存储库中的软件包由名称加版本识别。

例如,`nginx` version 字段设置为 1.2.3 将被命名为:

Expand Down Expand Up @@ -613,7 +613,7 @@ apache:

- [Go templates](https://godoc.org/text/template)
- [Extra template functions](https://godoc.org/github.com/Masterminds/sprig)
- [The YAML format](http://yaml.org/spec/)
- [The YAML format](https://yaml.org/spec/)

## 使用 Helm 管理 chart

Expand Down
11 changes: 4 additions & 7 deletions chart/charts_hooks-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,12 +135,9 @@ hook 权重可以是正数或负数,但必须表示为字符串。当 Tiller
* "before-hook-creation" 指定 Tiller 应在删除新 hook 之前删除以前的 hook。

### 自动删除以前版本的 hook
当 helm 的 release 更新时,有可能 hook 资源已经存在于群集中。默认情况下,helm 会尝试创建资源,并抛出错误 "... already exists"。
当 helm 的 release 更新, 如果这个 release 使用了 hook,有可能 hook 资源已经存在于群集中。默认情况下,helm 会尝试创建资源,并抛出错误 "... already exists"。

我们可以选择 `"helm.sh/hook-delete-policy": "before-hook-creation"`,取代 `"helm.sh/hook-delete-policy": "hook-succeeded,hook-failed"` 因为:
Hook 资源可能已经存在的一个常见原因是,在以前的安装 / 升级中使用它之后它没有被删除。事实上,有充分理由说明为什么人们可能想要保留 hook:例如,在出现问题时帮助手动调试。在这种情况下,确保后续尝试创建 hook 的推​​荐方法不会失败是定义一个 `"hook-delete-policy"`,它可以处理这个:`"helm.sh/hook-delete-policy": "before-hook-creation"`。在安装新 hook 之前,此 hook 注释会导致删除任何现有挂钩。

* 例如为了手动调试,将错误的 hook 作业资源保存在 kubernetes 中是很方便的。
* 出于某种原因,可能有必要将成功的 hook 资源保留在 kubernetes 中。
* 同时,在 helm release 升级之前进行手动资源删除是不可取的。

`"helm.sh/hook-delete-policy": "before-hook-creation"` 在hook中的注释,如果在新的hook启动前有一个hook的话,会使Tiller将以前的release中的hook删除,而这个hook同时它可能正在被其他一个策略使用。
如果偏好在每次使用后删除钩子(而不是在后续使用时处理它,如上所示)
我们可以选择使用 `"helm.sh/hook-delete-policy": "hook-succeeded,hook-failed"`
9 changes: 8 additions & 1 deletion chart/charts_tips_and_tricks-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,13 @@ value: {{include "mytpl" . | lower | quote}}
value: {{required "A valid .Values.who entry required!" .Values.who}}
```

当使用 `include` 函数时,可以使用 `dict` 函数给它传递一个通过当前上下文自定义对象树。

```yaml
{{- include "mytpl" (dict "key1" .Values.originalKey1 "key2" .Values.originalKey2) }}
```


## 引用字符串,不要引用整数

当使用字符串数据时,引用字符串比把它们留为空白字符更安全:
Expand Down Expand Up @@ -192,7 +199,7 @@ metadata:

下面的项目说明了两种强大的设计模式:

**SAP's [OpenStack chart](https://github.com/sapcc/openstack-helm):**:该 chart 在 Kubernetes 上安装完整的 OpenStack IaaS。所有 chart 都收集在一个 GitHub 存储库中。
**SAP's [OpenStack chart](https://github.com/sapcc/openstack-helm):**:该 chart 在 Kubernetes 上安装完整的 SAP 云的 OpenStack IaaS。所有 chart 都收集在一个 GitHub 存储库中,除了一些子模块

**Deis's [Workflow](https://github.com/deis/workflow/tree/master/charts/workflow):**: 该 chart 显示了整个 Deis PaaS 系统的一个 chart。但与 SAP chart 不同的是,该伞形 chart 是从每个组件构建而来的,每个组件都在不同的 Git 存储库中进行跟踪。查看 `requirements.yaml` 文件以查看此 chart 是如何由其 CI/CD 流水线组成的。

Expand Down
6 changes: 3 additions & 3 deletions chart/provenance-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ Provenance 文件包含 chart 的 YAML 文件以及几条验证信息。Provenan

- 包含 chart 文件(Chart.yaml)可以让人员和工具轻松查看 chart 内容。
- 包括 chart 包(.tgz 文件)的签名(SHA256,就像 Docker)一样,可用于验证 chart 包的完整性。
- 整个文件使用 PGP 使用的算法进行签名(参见 [http://keybase.io],这是一种使加密签名和验证变得容易的新方法)。
- 整个文件使用 PGP 使用的算法进行签名(参见 [https://keybase.io],这是一种使加密签名和验证变得容易的新方法)。

这样的组合给了用户以下保证:

Expand All @@ -171,7 +171,7 @@ keywords:
- proxy
source:
- https://github.com/foo/bar
home: http://nginx.com
home: https://nginx.com
...
files:
Expand All @@ -187,7 +187,7 @@ WkQAmQGHuuoLEJuKhRNo+Wy7mhE7u1YG

注意,YAML 部分包含两个文档(由分隔 `...\n`)。首先是 Chart.yaml。第二个是校验和,一个文件名到 SHA-256 摘要的映射(上显示的值是假的 / 被截断的)

签名块是一个标准的 PGP 签名,它提供了 [防篡改](http://www.rossde.com/PGP/pgp_signatures.html) 功能。
签名块是一个标准的 PGP 签名,它提供了 [防篡改](https://www.rossde.com/PGP/pgp_signatures.html) 功能。

## Chart 库

Expand Down
2 changes: 1 addition & 1 deletion chart_best_practices/conventions-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Chart 名称中不能使用大写字母和下划线。Chart 名称不应使用

## 版本号

只要有可能,Helm 使用 [SemVer 2](http://semver.org) 来表示版本号。(请注意,Docker 镜像 tag 不一定遵循 SemVer,因此被视为该规则的一个例外。)
只要有可能,Helm 使用 [SemVer 2](https://semver.org) 来表示版本号。(请注意,Docker 镜像 tag 不一定遵循 SemVer,因此被视为该规则的一个例外。)

当 SemVer 版本存储在 Kubernetes 标签中时,我们通常会将该 `+` 字符更改为一个 `_` 字符,因为标签不允许 `+` 标志作为值。

Expand Down
4 changes: 2 additions & 2 deletions chart_best_practices/custom_resource_definitions-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ Helm 优化为尽可能快地将尽可能多的资源加载到 Kubernetes 中。

### 方法 2:预安装 hook

要将这两者打包在一起,在 CRD 定义中添加一个 `pre-install` 钩子,以便在执行 chart 的其余部分之前完全安装它。
要将这两者打包在一起,在 CRD 定义中添加一个 `crd-install` 钩子,以便在执行 chart 的其余部分之前完全安装它。

请注意,如果使用`pre-install` hook创建CRD ,则该CRD定义在`helm delete`运行时不会被删除。
请注意,如果使用`crd-install` hook创建CRD ,则该CRD定义在`helm delete`运行时不会被删除。
8 changes: 4 additions & 4 deletions chart_template_guide/control_structures-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ data:
myvalue: "Hello World"
drink: {{.Values.favorite.drink | default "tea" | quote}}
food: {{.Values.favorite.food | upper | quote}}
{{if and (.Values.favorite.drink) (eq .Values.favorite.drink "coffee") }}mug: true{{ end }}
{{if and .Values.favorite.drink (eq .Values.favorite.drink "coffee") }}mug: true{{ end }}

```
注意 `.Values.favorite.drink` 必须已定义,否则在将它与 “coffee” 进行比较时会抛出错误。由于我们在上一个例子中注释掉了 `drink:coffee`,因此输出不应该包含 `mug:true` 标志。但是如果我们将该行添加回 `values.yaml` 文件中,输出应该如下所示:
Expand All @@ -74,7 +74,7 @@ data:
在查看条件时,我们应该快速查看模板中的空格控制方式。让我们看一下前面的例子,并将其格式化为更容易阅读的格式:
```
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
Expand Down Expand Up @@ -114,7 +114,7 @@ data:
mug 不正确地缩进。让我们简单地缩进那行,然后重新运行:
```
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
Expand Down Expand Up @@ -327,7 +327,7 @@ data:
- "Onions"
```

现在,在这个例子中,我们碰到了一些棘手的事情。该 `toppings: |-` 行声明了一个多行字符串。所以我们的 toppings list 实际上不是 YAML 清单。这是一个很大的字符串。我们为什么要这样做?因为 ConfigMaps 中的数据 `data` 由键 / 值对组成,其中键和值都是简单的字符串。要理解这种情况,请查看 Kubernetes ConfigMap 文档。但对我们来说,这个细节并不重要。
现在,在这个例子中,我们碰到了一些棘手的事情。该 `toppings: |-` 行声明了一个多行字符串。所以我们的 toppings list 实际上不是 YAML 清单。这是一个很大的字符串。我们为什么要这样做?因为 ConfigMaps 中的数据 `data` 由键 / 值对组成,其中键和值都是简单的字符串。要理解这种情况,请查看 [Kubernetes ConfigMap 文档](https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/).。但对我们来说,这个细节并不重要。
> YAML 中的 `|-` 标记表示一个多行字符串。这可以是一种有用的技术,用于在清单中嵌入大块数据,如此处所示。

Expand Down
47 changes: 31 additions & 16 deletions chart_template_guide/functions_and_pipelines-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@

让我们从一个最佳实践开始:当从. Values 对象注入字符串到模板中时,我们引用这些字符串。我们可以通过调用 quote 模板指令中的函数来实现:

```
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
name: {{.Release.Name}}-configmap
data:
myvalue: "Hello World"
drink: {{ quote .Values.favorite.drink }}
food: {{ quote .Values.favorite.food }}
drink: {{quote .Values.favorite.drink}}
food: {{quote .Values.favorite.food}}
```
模板函数遵循语法 `functionName arg1 arg2...`。在上面的代码片段中,`quote .Values.favorite.drink` 调用 quote 函数并将一个参数传递给它。
Expand All @@ -29,11 +29,11 @@ Helm 拥有超过 60 种可用函数。其中一些是由 Go 模板语言 [Go te
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
name: {{.Release.Name}}-configmap
data:
myvalue: "Hello World"
drink: {{ .Values.favorite.drink | quote }}
food: {{ .Values.favorite.food | quote }}
drink: {{.Values.favorite.drink | quote}}
food: {{.Values.favorite.food | quote}}
```

在这个例子中,没有调用 `quote ARGUMENT`,我们调换了顺序。我们使用管道(|)将 “参数” 发送给函数:`.Values.favorite.drink | quote`。使用管道,我们可以将几个功能链接在一起:
Expand All @@ -42,11 +42,11 @@ data:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
name: {{.Release.Name}}-configmap
data:
myvalue: "Hello World"
drink: {{ .Values.favorite.drink | quote }}
food: {{ .Values.favorite.food | upper | quote }}
drink: {{.Values.favorite.drink | quote}}
food: {{.Values.favorite.food | upper | quote}}
```
> 反转顺序是模板中的常见做法。你会看到.`val | quote` 比 `quote .val` 更常见。练习也是。

Expand All @@ -73,11 +73,11 @@ data:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
name: {{.Release.Name}}-configmap
data:
myvalue: "Hello World"
drink: {{ .Values.favorite.drink | repeat 5 | quote }}
food: {{ .Values.favorite.food | upper | quote }}
drink: {{.Values.favorite.drink | repeat 5 | quote}}
food: {{.Values.favorite.food | upper | quote}}
```

该 repeat 函数将回送给定的字符串和给定的次数,所以我们将得到这个输出:
Expand All @@ -99,13 +99,13 @@ data:
经常使用的一个函数是 `default`:`default DEFAULT_VALUE GIVEN_VALUE`。该功能允许在模板内部指定默认值,以防该值被省略。让我们用它来修改上面的饮料示例:

```yaml
drink: {{ .Values.favorite.drink | default "tea" | quote }}
drink: {{.Values.favorite.drink | default "tea" | quote}}
```

如果我们像往常一样运行,我们会得到我们的 coffee:


```
```yaml
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
Expand Down Expand Up @@ -142,7 +142,7 @@ data:
在实际的 chart 中,所有静态默认值应该存在于 values.yaml 中,不应该使用该 default 命令重复(否则它们将是重复多余的)。但是,default 命令对于计算的值是合适的,因为计算值不能在 values.yaml 中声明。例如:

```yaml
drink: {{ .Values.favorite.drink | default (printf "%s-tea" (include "fullname" .)) }}
drink: {{.Values.favorite.drink | default (printf "%s-tea" (include "fullname" .)) }}
```

在一些地方,一个 `if` 条件可能比这 `default` 更适合。我们将在下一节中看到这些。
Expand All @@ -153,4 +153,19 @@ drink: {{ .Values.favorite.drink | default (printf "%s-tea" (include "fullname"

对于模板,运算符(eq,ne,lt,gt,and,or 等等)都是已实现的功能。在管道中,运算符可以用圆括号(`(` 和 `)`)分组。

将运算符放到声明的前面,后面跟着它的参数,就像使用函数一样。要多个运算符一起使用,将每个函数通过圆括号分隔。

```yaml
{{/* include the body of this if statement when the variable .Values.fooString xists and is set to "foo" */}}
{{if and .Values.fooString (eq .Values.fooString "foo") }}
{{...}}
{{end}}
{{/* do not include the body of this if statement because unset variables evaluate o false and .Values.setVariable was negated with the not function. */}}
{{if or .Values.anUnsetVariable (not .Values.aSetVariable) }}
{{...}}
{{end}}
```

现在我们可以从函数和管道转向流控制,条件,循环和范围修饰符。
6 changes: 3 additions & 3 deletions chart_template_guide/getting_started-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ Creating mychart
看一下 `mychart/templates/` 目录,发现如下几个文件已经存在。

- NOTES.txt:chart 的 “帮助文本”。这会在用户运行 `helm install` 时显示给用户。
- deployment.yaml:创建 Kubernetes [deployment](http://kubernetes.io/docs/user-guide/deployments/) 的基本 manifest
- service.yaml:为 deployment 创建 service 端点的基本 manifest
- deployment.yaml:创建 Kubernetes [deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) 的基本 manifest
- service.yaml:为 deployment 创建 service 端点 [service endpoint](https://kubernetes.io/docs/concepts/services-networking/service/) 的基本 manifest
- `_helpers.tpl`:放置模板助手的地方,可以在整个 chart 中重复使用

而我们要做的就是...... 全部删除它们!这样我们就可以从头开始学习我们的教程。实际上,我们将创建自己的 NOTES.txt 和_helpers.tpl。
Expand Down Expand Up @@ -124,7 +124,7 @@ data:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
name: {{.Release.Name}}-configmap
data:
myvalue: "Hello World"
```
Expand Down
22 changes: 22 additions & 0 deletions chart_template_guide/helm_ignore_file-zh_cn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#.helmignore 文件

`.helmignore` 文件用于指定不想包含在 helm chart 中的文件。

如果此文件存在,`helm package` 命令将在打包应用程序时忽略在 `.helmignore` 文件中指定的模式匹配的所有文件。

这有助于避免在 helmchart 中添加不需要或敏感的文件或目录。

`.helmignore` 文件支持 Unix shell glob 匹配,相对路径匹配和否定(以!为前缀)。每行只考虑一种模式。

这是一个示例 `.helmignore` 文件:

```
# comment
.git
*/temp*
*/*/temp*
temp?
```

** 我们非常欢迎你的帮助 ** 改进本文档。添加,更正或删除信息,[提出问题](https://github.com/helm/helm/issues) 或向我们发送 PR。
**如果对中文版的文档有错误,或者想改进优化**[访问此链接](https://github.com/whmzsu/helm-doc-zh-cn/issues)
2 changes: 1 addition & 1 deletion chart_template_guide/subcharts_and_globals-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ data:
dessert: cake
```

## 覆盖父 chart 中的值
## 覆盖子 chart 中的值

我们原来的 chart,`mychart` 现在是其 `mysubchart` 的父 chart,。这种关系完全是因为 mysubchart 内在 mychart/charts 目录中。

Expand Down
14 changes: 7 additions & 7 deletions chart_template_guide/values_files-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ favoriteDrink: coffee
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
name: {{.Release.Name}}-configmap
data:
myvalue: "Hello World"
drink: {{ .Values.favoriteDrink }}
drink: {{.Values.favoriteDrink}}
```
注意我们在最后一行 \{\{ .Values.favoriteDrink\}\} 获取 `favoriteDrink` 的值。
Expand Down Expand Up @@ -53,7 +53,7 @@ data:

由于 `favoriteDrink` 在默认 `values.yaml` 文件中设置为 `coffee`,这就是模板中显示的值。我们可以轻松地在我们的 helm install 命令中通过加一个 `--set` 添标志来覆盖:

```
```bash
helm install --dry-run --debug --set favoriteDrink=slurm ./mychart
SERVER: "localhost:44134"
CHART PATH: /Users/mattbutcher/Code/Go/src/k8s.io/helm/_scratch/mychart
Expand Down Expand Up @@ -84,15 +84,15 @@ favorite:

现在我们稍微修改模板:

```
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
name: {{.Release.Name}}-configmap
data:
myvalue: "Hello World"
drink: {{ .Values.favorite.drink }}
food: {{ .Values.favorite.food }}
drink: {{.Values.favorite.drink}}
food: {{.Values.favorite.food}}
```

虽然以这种方式构建数据是可以的,但建议保持 value 树浅一些,平一些。当我们看看为子 chart 分配值时,我们将看到如何使用树结构来命名值。
Expand Down
2 changes: 1 addition & 1 deletion chart_template_guide/wrapping_up-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
但是当谈到 chart 的实际日常开发时,本指南还没有涉及很多事情。以下是一些有用的指向其他文档的指南,这些指南将帮助您创建新 chart:

- Kubernetes chart 项目 [Helm Charts project](https://github.com/helm/charts) 是 chart 不可缺少的来源。该项目也是 chart 开发中最佳实践的标准。
- Kubernetes 用户指南 [User's Guide](http://kubernetes.io/docs/user-guide/) 提供了可以使用的各种资源类型的详细示例,从 ConfigMaps 和 Secrets 到 DaemonSetkubernetes 和 Deployments。
- Kubernetes [Documentation](https://kubernetes.io/docs/home/) 提供了可以使用的各种资源类型的详细示例,从 ConfigMaps 和 Secrets 到 DaemonSetkubernetes 和 Deployments。
- Helm chart 指南 [Charts Guide](../chart/charts-zh_cn.md) 介绍了使用 chart 的工作流程。
- Helm Chart Hooks 指南 [Chart Hooks Guide](../chart/charts_hooks-zh_cn.md) 解释了如何创建生命周期 hook。
- Helm chart 技巧和窍门文章 [Chart Hooks Guide](../chart/charts_hooks-zh_cn.md) 提供了一些写 chart 的有用技巧。
Expand Down
Loading

0 comments on commit 21bf7c1

Please sign in to comment.