Skip to content

Commit

Permalink
Merge pull request #31 from whmzsu/whmzsu
Browse files Browse the repository at this point in the history
update with upstream
  • Loading branch information
whmzsu authored Nov 24, 2018
2 parents 789dd07 + 20899c5 commit 8afd3cd
Show file tree
Hide file tree
Showing 28 changed files with 549 additions and 294 deletions.
12 changes: 6 additions & 6 deletions chart/chart_repository-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

本节介绍如何创建和使用 Helm chart repo。在高层次上,chart 库是可以存储和共享打包 chart 的位置。

官方 chart 库由 [Kubernetes Charts](https://github.com/kubernetes/charts) 维护 ,我们欢迎参与贡献。Helm 还可以轻松创建和运行自己的 chart 库。本指南讲解了如何做到这一点。
官方 chart 库由 [Helm Charts](https://github.com/helm/charts) 维护 ,我们欢迎参与贡献。Helm 还可以轻松创建和运行自己的 chart 库。本指南讲解了如何做到这一点。

## 前提条件

Expand All @@ -13,7 +13,7 @@

chart 库是带有一个 index.yaml 文件和任意个打包 cahrt 的 HTTP 服务器。当准备好分享 chart 时,首选方法是将其上传到 chart 库。

** 注意:** 对于 Helm 2.0.0,chart 库没有任何内部认证。 在 GitHub 中有一个跟踪进度的问题 [issue tracking progress](https://github.com/kubernetes/helm/issues/1038)
** 注意:** 对于 Helm 2.0.0,chart 库没有任何内部认证。 在 GitHub 中有一个跟踪进度的问题 [issue tracking progress](https://github.com/helm/issues/1038)

由于 chart 库可以是任何可以提供 YAML 和 tar 文件并可以回答 GET 请求的 HTTP 服务器,因此当托管自己的 chart 库时,很多选择。例如,可以使用 Google 云端存储(GCS)存储桶,Amazon S3 存储桶,Github Pages,甚至可以创建自己的 Web 服务器。

Expand Down Expand Up @@ -52,7 +52,7 @@ entries:
home: https://k8s.io/helm
name: alpine
sources:
- https://github.com/kubernetes/helm
- https://github.com/helm
urls:
- https://technosophos.github.io/tscharts/alpine-0.2.0.tgz
version: 0.2.0
Expand All @@ -62,7 +62,7 @@ entries:
home: https://k8s.io/helm
name: alpine
sources:
- https://github.com/kubernetes/helm
- https://github.com/helm
urls:
- https://technosophos.github.io/tscharts/alpine-0.1.0.tgz
version: 0.1.0
Expand All @@ -73,7 +73,7 @@ entries:
home: https://k8s.io/helm
name: nginx
sources:
- https://github.com/kubernetes/charts
- https://github.com/helm/charts
urls:
- https://technosophos.github.io/tscharts/nginx-1.1.0.tgz
version: 1.1.0
Expand Down Expand Up @@ -116,7 +116,7 @@ Now serving you on 127.0.0.1:8879

恭喜,现在你有一个空的 GCS bucket 准备好给 chart 提供服务!

可以使用 Google Cloud Storage 命令行工具或使用 GCS Web UI 上传 chart 库。这是官方 Kubernetes Charts 存储库托管其 chart 的技术,因此如果遇到困难,可能需要查看该项目 [peek at that project](https://github.com/kubernetes/charts)
可以使用 Google Cloud Storage 命令行工具或使用 GCS Web UI 上传 chart 库。这是官方 Kubernetes Charts 存储库托管其 chart 的技术,因此如果遇到困难,可能需要查看该项目 [peek at that project](https://github.com/helm/charts)

** 注意:** 可以通过此处的 HTTPS 地址方便的访问公开的 GCS 存储桶 `https://bucket-name.storage.googleapis.com/`

Expand Down
2 changes: 1 addition & 1 deletion chart/chart_repository_faq-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

本节跟踪使用 chart 库时的一些常遇到的问题。

我们很欢迎你的帮助来改进这个文档。要添加,更正或删除信息,提出问题或向我们发送 PR。
我们很欢迎你的帮助来改进这个文档。要添加,更正或删除信息,提出问题[file an issue](https://github.com/helm/helm/issues)或向我们发送 PR。

## Fetching

Expand Down
20 changes: 10 additions & 10 deletions chart/chart_tests-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@

## 示例测试

下面是一个示例 mariadb chart 中 helm 测试 pod 定义的示例:
下面是一个示例 WordPress chart 中 helm 测试 pod 定义的示例。这个测试验证了 mariadb 的连接和登录

```
mariadb/
wordpress/
Chart.yaml
README.md
values.yaml
Expand All @@ -40,34 +40,34 @@ mariadb/
apiVersion: v1
kind: Pod
metadata:
name: "{{ .Release.Name }}-credentials-test"
name: "{{.Release.Name}}-credentials-test"
annotations:
"helm.sh/hook": test-success
spec:
containers:
- name: {{ .Release.Name }}-credentials-test
image: {{ .Values.image }}
- name: {{.Release.Name}}-credentials-test
image: {{.Values.image}}
env:
- name: MARIADB_HOST
value: {{ template "mariadb.fullname" . }}
value: {{template "mariadb.fullname" .}}
- name: MARIADB_PORT
value: "3306"
- name: WORDPRESS_DATABASE_NAME
value: {{ default "" .Values.mariadb.mariadbDatabase | quote }}
value: {{default "" .Values.mariadb.mariadbDatabase | quote}}
- name: WORDPRESS_DATABASE_USER
value: {{ default "" .Values.mariadb.mariadbUser | quote }}
value: {{default "" .Values.mariadb.mariadbUser | quote}}
- name: WORDPRESS_DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: {{ template "mariadb.fullname" . }}
name: {{template "mariadb.fullname" .}}
key: mariadb-password
command: ["sh", "-c", "mysql --host=$MARIADB_HOST --port=$MARIADB_PORT --user=$WORDPRESS_DATABASE_USER --password=$WORDPRESS_DATABASE_PASSWORD"]
restartPolicy: Never
```

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

1. `$ helm install mariadb`
1. `$ helm install wordpress`
```
NAME: quirky-walrus
LAST DEPLOYED: Mon Feb 13 13:50:43 2017
Expand Down
20 changes: 10 additions & 10 deletions chart/charts-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ nginx-1.2.3.tgz
更复杂的 SemVer 2 命名也是支持的,例如 version: 1.2.3-alpha.1+ef365。但非 SemVer 命名是明确禁止的。
** 注意 **:虽然 Helm Classic 和 Deployment Manager 在 chart 方面都非常适合 GitHub,但 Kubernetes Helm 并不依赖或需要 GitHub 甚至 Git。因此,它不使用 Git SHA 进行版本控制。
** 注意 ** :虽然 Helm Classic 和 Deployment Manager 在 chart 方面都非常适合 GitHub,但 Kubernetes Helm 并不依赖或需要 GitHub 甚至 Git。因此,它不使用 Git SHA 进行版本控制。
许多 Helm 工具都使用 `Chart.yaml` 的 v`ersion` 字段,其中包括 CLI 和 Tiller 服务。在生成包时,helm package 命令将使用它在 Chart.yaml 中的版本名作为包名。系统假定 chart 包名称中的版本号与 `Chart.yaml` 中的版本号相匹配。不符合这个情况会导致错误。
Expand All @@ -77,7 +77,7 @@ nginx-1.2.3.tgz
### 弃用 charts
在管理 chart tepo 库中的 chart 时,有时需要弃用 chart。`Chart.yaml` 的 d`eprecated` 字段可用于将 chart 标记为已弃用。如果存储库中最新版本的 chart 标记为已弃用,则整个 chart 被视为已弃用。chart 名称稍后可以通过发布未标记为已弃用的较新版本来重新使用。废弃 chart 的工作流程根据 [kubernetes/charts](https://github.com/kubernetes/charts) 项目的工作流程如下:
在管理 chart tepo 库中的 chart 时,有时需要弃用 chart。`Chart.yaml` 的 d`eprecated` 字段可用于将 chart 标记为已弃用。如果存储库中最新版本的 chart 标记为已弃用,则整个 chart 被视为已弃用。chart 名称稍后可以通过发布未标记为已弃用的较新版本来重新使用。废弃 chart 的工作流程根据 [helm/charts](https://github.com/helm/charts) 项目的工作流程如下:
- 更新 chart 的 `Chart.yaml` 以将 chart 标记为启用,并且更新版本
- 在 chart Repository 中发布新的 chart 版本
Expand Down Expand Up @@ -387,7 +387,7 @@ wordpress:

因此,单个 release 是使用 charts 及其依赖关系创建的所有对象。

Kubernetes 类型的安装顺序由 kind_sorter.go 中的枚举 InstallOrder 给出([the Helm source file](https://github.com/kubernetes/helm/blob/master/pkg/tiller/kind_sorter.go#L26)))。
Kubernetes 类型的安装顺序由 kind_sorter.go 中的枚举 InstallOrder 给出([the Helm source file](https://github.com/helm/blob/master/pkg/tiller/kind_sorter.go#L26)))。

## 模板 Templates 和值 Values

Expand All @@ -413,15 +413,15 @@ metadata:
name: deis-database
namespace: deis
labels:
heritage: deis
app.kubernetes.io/managed-by: deis
spec:
replicas: 1
selector:
app: deis-database
app.kubernetes.io/name: deis-database
template:
metadata:
labels:
app: deis-database
app.kubernetes.io/name: deis-database
spec:
serviceAccount: deis-database
containers:
Expand Down Expand Up @@ -514,15 +514,15 @@ metadata:
name: deis-database
namespace: deis
labels:
heritage: deis
app.kubernetes.io/managed-by: deis
spec:
replicas: 1
selector:
app: deis-database
app.kubernetes.io/name: deis-database
template:
metadata:
labels:
app: deis-database
app.kubernetes.io/name: deis-database
spec:
serviceAccount: deis-database
containers:
Expand Down Expand Up @@ -655,5 +655,5 @@ repo 库的主要特征是存在一个名为的特殊文件 `index.yaml`,它

- `Chart.yaml` 将被生成器覆盖。
- 用户将期望修改这样的 chart 内容,因此文档应该指出用户如何做到这一点。
- 所有匹配项 <CHARTNAME> 将被替换为指定的 chart 名称,以便起始 chart 可用作模板。
- 所有 templates 目录下的匹配项 `<CHARTNAME>` 将被替换为指定的 chart 名称,以便起始 chart 可用作模板。另外, `values.yaml` 的 `<CHARTNAME>` 也会被替换.
- 目前添加chart的唯一方法是手动将其复制到`$HELM_HOME/starters`。在chart的文档中,你需要解释该过程。
16 changes: 8 additions & 8 deletions chart/charts_hooks-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ kind: Job
metadata:
name: "{{.Release.Name}}"
labels:
heritage: {{.Release.Service | quote }}
release: {{.Release.Name | quote }}
chart: "{{.Chart.Name}}-{{.Chart.Version}}"
app.kubernetes.io/managed-by: {{.Release.Service | quote}}
app.kubernetes.io/instance: {{.Release.Name | quote}}
helm.sh/chart: "{{.Chart.Name}}-{{.Chart.Version}}"
annotations:
# This is what defines this resource as a hook. Without this line, the
# job is considered part of the release.
Expand All @@ -81,15 +81,15 @@ spec:
metadata:
name: "{{.Release.Name}}"
labels:
heritage: {{.Release.Service | quote }}
release: {{.Release.Name | quote }}
chart: "{{.Chart.Name}}-{{.Chart.Version}}"
app.kubernetes.io/managed-by: {{.Release.Service | quote}}
app.kubernetes.io/instance: {{.Release.Name | quote}}
helm.sh/chart: "{{.Chart.Name}}-{{.Chart.Version}}"
spec:
restartPolicy: Never
containers:
- name: post-install-job
image: "alpine:3.3"
command: ["/bin/sleep","{{default "10" .Values.sleepyTime}}"]
command: ["/bin/sleep","{{default"10".Values.sleepyTime}}"]

```

Expand Down Expand Up @@ -119,7 +119,7 @@ spec:
"helm.sh/hook-weight": "5"
```

hook 权重可以是正数或负数,但必须表示为字符串。当 Tiller 开始执行一个特定类型的 hook 的执行周期时,它会按升序对这些 hook 进行排序。
hook 权重可以是正数或负数,但必须表示为字符串。当 Tiller 开始执行一个特定类型的 hook (例: `pre-install` hooks `post-install` hooks, 等等) 执行周期时,它会按升序对这些 hook 进行排序。

还可以定义确定何时删除相应的 hook 资源的策略。hook 删除策略使用以下注释来定义:

Expand Down
72 changes: 55 additions & 17 deletions chart/charts_tips_and_tricks-zh_cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

Helm 使用 Go 模板 [Go templates](https://godoc.org/text/template) 来模板化你的资源文件。虽然 Go 提供了几个内置函数,但我们添加了许多其他函数。

首先,我们在 Sprig 库 [Sprig library](https://godoc.org/github.com/Masterminds/sprig) 中添加了几乎所有的功能 。出于安全原因,我们删除了两个:`env``expandenv`(这会让 chart 作者访问 Tiller 的环境)。
首先,我们在 Sprig 库 [Sprig library](https://godoc.org/github.com/Masterminds/sprig) 中添加了几乎所有的函数 。出于安全原因,我们删除了两个:`env``expandenv`(这会让 chart 作者访问 Tiller 的环境)。

我们还添加了两个特殊的模板函数:`include``required``include` 函数允许引入另一个模板,然后将结果传递给其他模板函数。

Expand All @@ -20,26 +20,26 @@ value: {{include "mytpl" . | lower | quote}}
下面的 `required` 函数示例声明了. Values.who 的条目是必需的,并且在缺少该条目时将显示错误消息:

```yaml
value: {{required "A valid .Values.who entry required!" .Values.who }}
value: {{required "A valid .Values.who entry required!" .Values.who}}
```

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

当使用字符串数据时,引用字符串比把它们留为空白字符更安全:

```
name: {{.Values.MyName | quote }}
```yaml
name: {{.Values.MyName | quote}}
```

但是,使用整数时 _不要引用值_。在很多情况下,这可能会导致 Kubernetes 内部的解析错误。

```
port: {{ .Values.Port }}
```yaml
port: {{.Values.Port}}
```

这种做法不适用于预期为字符串的 env 变量值,即使它们表示为整数:

```
```yaml
env:
-name: HOST
value: "http://host"
Expand All @@ -54,7 +54,7 @@ Go 提供了一种使用内置 `template` 指令将一个模板包含在另一
为了能够包含模板,然后对该模板的输出执行操作,Helm 有一个特殊的 `include` 函数:

```
{{ include "toYaml" $value | indent 2 }}
{{- include "toYaml" $value | nindent 2}}
```
上面包含一个名为的模板 toYaml,传递它 $value 的值,然后将该模板的输出传递给该 indent 函数。
Expand All @@ -70,18 +70,56 @@ Go 提供了一种设置模板选项以控制 map 使用 map 中不存在的键
例如:
```
{{ required "A valid foo is required!" .Values.foo }}
{{required "A valid foo is required!" .Values.foo}}
```
上面将在定义. Values.foo 时渲染模板,但在未定义. Values.foo 时无法渲染并报错退出。
## 使用'tpl' 函数
`tpl` 函数允许开发人员将字符串计算为模板内的模板。
这对于将模板字符串作为值传递给 chart 或渲染外部配置文件很有用。
语法: `{{tpl TEMPLATE_STRING VALUES}}`
样例:
```yaml
# values
template: "{{.Values.name}}"
name: "Tom"
# template
{{tpl .Values.template .}}
# output
Tom
```

渲染一个外部配置文件:

```yaml
# external configuration file conf/app.conf
firstName={{.Values.firstName}}
lastName={{.Values.lastName}}

# values
firstName: Peter
lastName: Parker

# template
{{tpl (.Files.Get "conf/app.conf") . }}

# output
firstName=Peter
lastName=Parker
```
## 创建镜像拉取的 Secrets

镜像拉的 secrets 实质上是注册,用户名和密码的组合。在正在部署的应用程序中可能需要它们,但要创建它们需要多次运行 base64。我们可以编写一个帮助程序模板来组合 Docker 配置文件,以用作 Secret 的有效载体。这里是一个例子:

首先,假设凭证在 `values.yaml` 文件中定义如下:

```
```yaml
imageCredentials:
registry: quay.io
username: someone
Expand All @@ -90,20 +128,20 @@ imageCredentials:
然后我们定义我们的帮助模板如下:
```
{{- define "imagePullSecret" }}
{{- define "imagePullSecret"}}
{{- printf "{\"auths\": {\"%s\": {\"auth\": \"%s\"}}}" .Values.imageCredentials.registry (printf "%s:%s" .Values.imageCredentials.username .Values.imageCredentials.password | b64enc) | b64enc }}
{{- end }}
{{- end}}
```
最后,我们在更大的模板中使用助手模板来创建 Secret manifest:

```
```yaml
apiVersion: v1
kind: Secret
metadata:
name: myregistrykey
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: {{ template "imagePullSecret" . }}
.dockerconfigjson: {{template "imagePullSecret" .}}
```
## ConfigMaps 或 Secrets 更改时自动 Roll Deployments
Expand All @@ -118,7 +156,7 @@ spec:
template:
metadata:
annotations:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
checksum/config: {{include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
[...]
```

Expand All @@ -144,11 +182,11 @@ metadata:

有时候你想在 chart 中创建一些可重用的部分,无论它们是块还是模板部分。通常,将这些文件保存在自己的文件中会更整洁。

`templates/` 目录中,任何以下划线 _ 开头的文件都不会输出 Kubernetesmanifest 文件。另按照惯例,辅助模板和 partials 被放置在一个 _helpers.tpl 文件中。
在 `templates/` 目录中,任何以下划线 "-" 开头的文件都不会输出 Kubernetesmanifest 文件。另按照惯例,辅助模板和 partials 被放置在一个 `_helpers.tpl` 文件中。

## 具有许多依赖关系的复杂 chart

官方 chart repo 存储库 [official charts repository](https://github.com/kubernetes/charts) 中的许多 chart 是用于创建更高级应用程序的 “构建块”。chart 可能用于创建大规模应用程序的实例。在这种情况下,一张伞形 chart 可能有多个子 chart,每个子 chart 都是整体的一部分。
官方 chart repo 存储库 [official charts repository](https://github.com/helm/charts) 中的许多 chart 是用于创建更高级应用程序的 “构建块”。chart 可能用于创建大规模应用程序的实例。在这种情况下,一张伞形 chart 可能有多个子 chart,每个子 chart 都是整体的一部分。

当前最佳做法是:从各个子 chart 组成复杂应用程序,创建公开全局配置的顶层伞形 chart,然后使用 charts / 子目录嵌入每个组件 chart。

Expand Down
Loading

0 comments on commit 8afd3cd

Please sign in to comment.