Merge pull request #1117 from sunny0826/master

chinese helloworld doc
This commit is contained in:
Kubernetes Prow Robot
2019-05-29 10:52:27 -07:00
committed by GitHub
4 changed files with 357 additions and 45 deletions

View File

@@ -1,4 +1,4 @@
English | [简体中文](zh/README-CN.md)
English | [简体中文](zh/README.md)
# Examples

View File

@@ -1,44 +0,0 @@
[English](../README.md) | 简体中文
# 示例
这些示例默认 `kustomize` 在您的 `$PATH` 中。
这些示例通过了 [pre-commit](../../bin/pre-commit.sh) 测试,并且应该与 HEAD 一起使用。
```
go get sigs.k8s.io/kustomize
```
* [hello world](../helloWorld/README.md) - 部署多个不同配置的 Hello World 服务。
* [last mile helm](../chart.md) - 对 helm chart 进行 last mile 修改。
* [LDAP](../ldap/README.md) - 部署多个配置不同的 LDAP 服务。
* [mySql](../mySql/README.md) - 从头开始创建一个 MySQL 的生产配置。
* [springboot](../springboot/README.md) - 从头开始创建一个 Spring Boot 项目的生产配置。
* [combineConfigs](../combineConfigs.md) -
融合来自不同用户的配置数据(例如来自 devops/SRE 和 developers
* [configGenerations](../configGeneration.md) - 当 ConfigMapGenerator 修改时进行滚动更新。
* [secret generation](../secretGeneratorPlugin.md) - 生成 Secret。
* [generatorOptions](../generatorOptions.md) -修改所有 ConfigMapGenerator 和 SecretGenerator 的行为。
* [breakfast](../breakfast.md) - 给 Alice 和 Bob 定制一顿早餐 :)
* [vars](../wordpress/README.md) - 通过 vars 将一个资源的数据注入另一个资源的容器参数 (例如,为 wordpress 指定 SQL 服务)。
* [image names and tags](../image.md) - 在不使用 patch 的情况下更新镜像名称和标签。
* [multibases](../multibases/README.md) - 使用相同的 base 生成三个 variantsdevstagingproduction
* [remote target](../remoteBuild.md) - 通过 github URL 来构建 kustomization 。
* [json patch](../jsonpatch.md) -在 kustomization 中应用 json patch 。
* [transformer configs](../transformerconfigs/README.md) - 自定义 transformer 配置。

55
examples/zh/README.md Normal file
View File

@@ -0,0 +1,55 @@
[English](../README.md) | 简体中文
# 示例
这些示例默认 `kustomize` 在您的 `$PATH` 中。
这些示例通过了 [pre-commit](../../bin/pre-commit.sh) 测试,并且应该与 HEAD 一起使用。
```
go get sigs.k8s.io/kustomize
```
基本用法
* [configGenerations](../configGeneration.md) - 当 ConfigMapGenerator 修改时进行滚动更新。
* [combineConfigs](../combineConfigs.md) - 融合来自不同用户的配置数据(例如来自 devops/SRE 和 developers
* [generatorOptions](../generatorOptions.md) -修改所有 ConfigMapGenerator 和 SecretGenerator 的行为。
* [vars](../wordpress/README.md) - 通过 vars 将一个资源的数据注入另一个资源的容器参数 (例如,为 wordpress 指定 SQL 服务)。
* [image names and tags](../image.md) - 在不使用 patch 的情况下更新镜像名称和标签。
* [remote target](../remoteBuild.md) - 通过 github URL 来构建 kustomization 。
* [json patch](../jsonpatch.md) -在 kustomization 中应用 json patch 。
高级用法
- generator 插件:
* [last mile helm](../chart.md) - 对 helm chart 进行 last mile 修改。
* [secret generation](../secretGeneratorPlugin.md) - 生成 Secret。
- 定制内建 transformer 配置
* [transformer configs](../transformerconfigs/README.md) - 自定义 transformer 配置。
多 Variant 示例
* [hello world](helloWorld.md) - 部署多个不同配置的 Hello World 服务。
* [LDAP](../ldap/README.md) - 部署多个配置不同的 LDAP 服务。
* [springboot](../springboot/README.md) - 从头开始创建一个 Spring Boot 项目的生产配置。
* [mySql](../mySql/README.md) - 从头开始创建一个 MySQL 的生产配置。
* [breakfast](../breakfast.md) - 给 Alice 和 Bob 定制一顿早餐 :)
* [multibases](../multibases/README.md) - 使用相同的 base 生成三个 variantsdevstagingproduction
>声明:部分文档可能稍微滞后于英文版本,同步工作持续进行中

301
examples/zh/helloWorld.md Normal file
View File

@@ -0,0 +1,301 @@
[base]: ../../docs/glossary.md#base
[config]: https://github.com/kinflate/example-hello
[gitops]: ../../docs/glossary.md#gitops
[hello]: https://github.com/monopole/hello
[kustomization]: ../../docs/glossary.md#kustomization
[original]: https://github.com/kinflate/example-hello
[overlay]: ../../docs/glossary.md#overlay
[overlays]: ../../docs/glossary.md#overlay
[patch]: ../../docs/glossary.md#patch
[variant]: ../../docs/glossary.md#variant
[variants]: ../../docs/glossary.md#variant
# Demo: hello world with variants
步骤:
1. 下载 [base] 配置。
2. 进行定制。
3. 基于定制后的 base 新建2个不同的 [overlays] (_staging_ 和 _production_)。
4. 运行 kustomize 和 kubectl 来部署 staging 和 production 。
首先创建一个工作空间:
<!-- @makeWorkplace @test -->
```
DEMO_HOME=$(mktemp -d)
```
或者:
> ```
> DEMO_HOME=~/hello
> ```
## 创建 base
如果要使用 [overlays] 创建 [variants] ,必须先创建一个共同的 [base] 。
为了使本文档保持简洁base 的资源位于补充目录中,并不在此处,请按照下面的方法下载它们:
<!-- @downloadBase @test -->
```
BASE=$DEMO_HOME/base
mkdir -p $BASE
curl -s -o "$BASE/#1.yaml" "https://raw.githubusercontent.com\
/kubernetes-sigs/kustomize\
/master/examples/helloWorld\
/{configMap,deployment,kustomization,service}.yaml"
```
观察该目录:
<!-- @runTree @test -->
```
tree $DEMO_HOME
```
可以看到:
> ```
> /tmp/tmp.IyYQQlHaJP
> └── base
> ├── configMap.yaml
> ├── deployment.yaml
> ├── kustomization.yaml
> └── service.yaml
> ```
这些 resources 可以立即在 k8s 集群中部署:
> ```
> kubectl apply -f $DEMO_HOME/base
> ```
实例化 _hello_ 服务, `kubectl` 只能识别 resources 文件。
### The Base Kustomization
`base` 目录中包含一个 [kustomization] 文件:
<!-- @showKustomization @test -->
```
more $BASE/kustomization.yaml
```
(可选)在 base 目录上运行 `kustomize` 将定制过的 resources 打印到标准输出:
<!-- @buildBase @test -->
```
kustomize build $BASE
```
### 定制 base
定制 _app label_ 并应用于所有的 resources
<!-- @addLabel @test -->
```
sed -i.bak 's/app: hello/app: my-hello/' \
$BASE/kustomization.yaml
```
查看效果:
<!-- @checkLabel @test -->
```
kustomize build $BASE | grep -C 3 app:
```
## 创建 Overlays
创建包含 _staging__production_ 的 [overlay]
* _Staging_ 包含生产环境中无法应用的带有风险的功能。
* _Production_ 包含更多的副本数。
* 来自这些集群 [variants] 的问候消息将与来自其他集群的不同。
<!-- @overlayDirectories @test -->
```
OVERLAYS=$DEMO_HOME/overlays
mkdir -p $OVERLAYS/staging
mkdir -p $OVERLAYS/production
```
#### Staging Kustomization
`staging` 目录中创建一个 kustomization 文件,用来定义一个新的名称前缀和一些不同的 labels 。
<!-- @makeStagingKustomization @test -->
```
cat <<'EOF' >$OVERLAYS/staging/kustomization.yaml
namePrefix: staging-
commonLabels:
variant: staging
org: acmeCorporation
commonAnnotations:
note: Hello, I am staging!
bases:
- ../../base
patchesStrategicMerge:
- map.yaml
EOF
```
#### Staging Patch
新增一个自定义的 configMap 将问候消息从 _Good Morning!_ 改为 _Have a pineapple!_
同时,将 _risky_ 标记设置为 true 。
<!-- @stagingMap @test -->
```
cat <<EOF >$OVERLAYS/staging/map.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: the-map
data:
altGreeting: "Have a pineapple!"
enableRisky: "true"
EOF
```
#### Production Kustomization
`production` 目录中创建一个 kustomization 文件,用来定义一个新的名称前缀和 labels 。
<!-- @makeProductionKustomization @test -->
```
cat <<EOF >$OVERLAYS/production/kustomization.yaml
namePrefix: production-
commonLabels:
variant: production
org: acmeCorporation
commonAnnotations:
note: Hello, I am production!
bases:
- ../../base
patchesStrategicMerge:
- deployment.yaml
EOF
```
#### Production Patch
因为生产环境需要处理更多的流量,新建一个 production patch 来增加副本数。
<!-- @productionDeployment @test -->
```
cat <<EOF >$OVERLAYS/production/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: the-deployment
spec:
replicas: 10
EOF
```
## 比较 overlays
`DEMO_HOME` 现在包含:
- _base_ 目录:对拉取到的源配置进行了简单定制
- _overlays_ 目录:包含在集群中创建不同 _staging__production_ [variants] 的 kustomizations 和 patches 。
查看目录结构和差异:
<!-- @listFiles @test -->
```
tree $DEMO_HOME
```
可以看到:
> ```
> /tmp/tmp.IyYQQlHaJP1
> ├── base
> │   ├── configMap.yaml
> │   ├── deployment.yaml
> │   ├── kustomization.yaml
> │   └── service.yaml
> └── overlays
> ├── production
> │   ├── deployment.yaml
> │   └── kustomization.yaml
> └── staging
> ├── kustomization.yaml
> └── map.yaml
> ```
直接比较 _staging__production_ 输出的不同:
<!-- @compareOutput -->
```
diff \
<(kustomize build $OVERLAYS/staging) \
<(kustomize build $OVERLAYS/production) |\
more
```
部分比较输出:
> ```diff
> < altGreeting: Have a pineapple!
> < enableRisky: "true"
> ---
> > altGreeting: Good Morning!
> > enableRisky: "false"
> 8c8
> < note: Hello, I am staging!
> ---
> > note: Hello, I am production!
> 11c11
> < variant: staging
> ---
> > variant: production
> 13c13
> (...truncated)
> ```
## 部署
输出不同 _overlys_ 的配置:
<!-- @buildStaging @test -->
```
kustomize build $OVERLAYS/staging
```
<!-- @buildProduction @test -->
```
kustomize build $OVERLAYS/production
```
将上述命令传递给 kubectl 进行部署:
> ```
> kustomize build $OVERLAYS/staging |\
> kubectl apply -f -
> ```
> ```
> kustomize build $OVERLAYS/production |\
> kubectl apply -f -
> ```
也可使用 `kubectl` (v1.14.0 以上版本)
> ```
> kubectl apply -k $OVERLAYS/staging
> ```
> ```
> kubectl apply -k $OVERLAYS/production
> ```