mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-17 18:25:26 +00:00
fix
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
|
||||
本教程只是一个快速开始的示例,完整的插件文档请看:[kustomize 插件](plugins.md)
|
||||
|
||||
本示例将使用 bash 编写了一个傻瓜 _exec_ 插件,用来生成一个 `ConfigMap`。
|
||||
本示例将使用 bash 编写了一个简单的 _exec_ 插件,用来生成一个 `ConfigMap`。
|
||||
|
||||
在不破坏当前的设置的情况下,尝试本教程。
|
||||
尝试本教程不会破坏你的当前设置。
|
||||
|
||||
#### 环境要求
|
||||
|
||||
@@ -13,8 +13,7 @@
|
||||
* `curl`
|
||||
* `Go 1.13`
|
||||
|
||||
|
||||
## 定义一个工作空间
|
||||
## 创建一个工作空间/目录
|
||||
|
||||
```
|
||||
DEMO=$(mktemp -d)
|
||||
@@ -147,7 +146,7 @@ mkdir -p $MY_PLUGIN_DIR
|
||||
|
||||
插件的目录结构为: `apiVersion 的 value/小写 kind 的 value`。
|
||||
|
||||
插件拥有自己的目录不但可以保存插件代码,还可以保存在测试以及任何可能需要的补充数据文件。
|
||||
插件拥有自己的目录,不但可以保存插件代码,还可以保存测试代码以需要的补充数据文件。
|
||||
|
||||
## 编写插件
|
||||
|
||||
@@ -191,7 +190,7 @@ mkdir -p $DEMO/bin
|
||||
mv kustomize $DEMO/bin
|
||||
```
|
||||
|
||||
## 检查这个目录
|
||||
## 检查目录结构
|
||||
|
||||
```
|
||||
tree $DEMO
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
# Go plugin 注意事项
|
||||
|
||||
_Go 插件_ 是由 Go [plugin package] 描述的编译器,需要特殊的构建标志,不能单独运行,必须加载到正在运行的 Go 程序中。
|
||||
_Go 插件_ 是一个编译产品/组件,其定义见 [plugin package],需要特殊的构建标志,不能单独运行,必须加载到正在运行的 Go 程序中。
|
||||
|
||||
> 用 Go 编写的普通程序可以作为 _exec 插件_,但是不能作为 _Go 插件_。
|
||||
|
||||
@@ -19,9 +19,9 @@ Go 插件编译会创建一个 [ELF] 格式的 `.so` 文件,根据定义,该
|
||||
|
||||
主程序 ELF 和插件 ELF 的编译条件(软件包依赖项的版本 `GOOS`,`GOARCH`)之间的偏移会导致插件加载失败,并带有无用的错误消息。
|
||||
|
||||
Exec 插件也会缺乏出处,但不会因编译不正确而失败。
|
||||
Exec 插件也会缺乏来源,但不会因编译不正确而失败。
|
||||
|
||||
在任何情况下,共享插件的最好方法是使用某种 _捆绑包_(git repo URL、git 存档文件、tar 包等),其中包含可在下解包的源代码,测试和相关数据 `$XDG_CONFIG_HOME/kustomize/plugin`。
|
||||
在任何情况下,共享插件的最好方法是使用某种 _捆绑包_(git repo URL、git 存档文件、tar 包等),其中包含可解包至 `$XDG_CONFIG_HOME/kustomize/plugin` 的源代码,测试和相关数据。
|
||||
|
||||
对于 Go 插件,使用共享插件的最终用户 _必须同时编译 kustomize 和 plugin_。
|
||||
|
||||
@@ -47,15 +47,15 @@ go build -buildmode plugin \
|
||||
|
||||
### 安全
|
||||
|
||||
Go 插件开发者可以操作与原生 kustomize 操作相同的 API,可确保某些语义、变量和检查等一致。通过stdin/stdout 处理此问题的 exec 插件子流程将使下游转换器和使用者解决问题变得更容易。
|
||||
Go 插件开发者可以操作与原生 kustomize 操作相同的 API,可确保某些语义、变量和检查等一致。exec 插件子进程通过 stdin/stdout 来处理这些问题,但对于下游的转化器和使用者来说,会更容易把事情搞砸。
|
||||
|
||||
关键点:如果插件通过 kustomize 提供的文件 `Loader` 接口读取文件,则会受到 kustomize 文件加载限制的约束。当然,除了代码审核之外,没有什么可以阻止 Go 插件导入 io 包并执行其所需的任何操作。
|
||||
关键点:如果插件通过 kustomize 提供的文件 `Loader` 接口读取文件,则会受到 kustomize 文件加载限制的约束。当然,除了代码审计之外,没有什么可以阻止 Go 插件导入 io 包并执行其所需的任何操作。
|
||||
|
||||
### Debugging
|
||||
|
||||
Go 插件开发者可以在功能测试中运行插件时,在 _本地_ 调试插件,并在插件内部和其他位置设置断点。
|
||||
|
||||
为了获得两全其美的方式(共享性和安全性),开发人员可以编写一个 `.go` 程序作为 _exec 插件_,但可以通过处理该程序 `go generate` 来发出 Go 插件(反之亦然)。
|
||||
为了获得两全其美的方式(共享性和安全性),开发人员可以编写一个 `.go` 程序作为 _exec 插件_,同时可以被 `go generate` 程序处理生成 Go 插件(反之亦然)。
|
||||
|
||||
### 贡献单元化
|
||||
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
|
||||
请务必阅读 [Go plugin 注意事项](goPluginCaveats.md)。
|
||||
|
||||
该示例使用 Go 插件,`SopsEncodedSecrets` 该插件位于 [sopsencodedsecrets repository]中。这是一个进程内的 Go 插件,而不是恰巧用 Go 编写的 exec 插件(这是 Go 作者的另一种选择)。
|
||||
该示例使用 Go 插件 `SopsEncodedSecrets`,该插件位于 [sopsencodedsecrets repository]中。这是一个进程内的 Go 插件,而不是恰巧用 Go 编写的 exec 插件(这是 Go 作者的另一种选择)。
|
||||
|
||||
在不破坏当前的设置的情况下,尝试本教程。
|
||||
尝试本教程不会破坏你的当前设置。
|
||||
|
||||
#### 环境要求
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
* Google cloud (gcloud) 安装
|
||||
* 具有 KMS 权限的 Google帐户
|
||||
|
||||
## 定义一个工作空间
|
||||
## 创建一个工作空间/目录
|
||||
|
||||
```shell
|
||||
# 将这些目录分开,以免造成 DEMO 目录的混乱。
|
||||
@@ -68,7 +68,7 @@ PLUGIN_ROOT=$DEMO/kustomize/plugin
|
||||
|
||||
并在下面的命令行中临时设置 `XDG_CONFIG_HOME`。
|
||||
|
||||
### What apiVersion and kind?
|
||||
### 使用什么 apiVersion 和 kind?
|
||||
|
||||
在 kustomize 插件的开发时,插件代码不关心也不知道配置文件中的 `apiVersion` 或 `kind`。
|
||||
|
||||
@@ -178,7 +178,7 @@ generators:
|
||||
EOF
|
||||
```
|
||||
|
||||
现在生成真实的加密数据了。
|
||||
接下来生成真实的加密数据。
|
||||
|
||||
### 确保您已安装加密工具
|
||||
|
||||
|
||||
Reference in New Issue
Block a user