Skip to content

Commit 5e9a2a4

Browse files
authored
Add gosdk example to zh doc and fix bad link (#1746)
Signed-off-by: 靳聪 <[email protected]>
1 parent 4a8c110 commit 5e9a2a4

File tree

3 files changed

+136
-0
lines changed

3 files changed

+136
-0
lines changed

content/zh/docs/sdk/_index.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
title: "Go SDK"
3+
weight: 7
4+
---

content/zh/docs/sdk/examples.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
title: "示例"
3+
description: "演示Helm SDK的各项功能"
4+
weight: 4
5+
---
6+
7+
本文档通过一系列示例来演示Helm SDK的使用方法,旨在展示各种SDK功能。
8+
9+
最后一个示例展示了 `main.go` 驱动程序(详见[驱动示例](#驱动程序)),该程序会执行下述操作,并包含所需的辅助函数。
10+
11+
所有示例代码均位于 [helm/helm-www/sdkexamples/](https://github.com/helm/helm-www/tree/main/sdkexamples) 目录下,并且可以完整运行。
12+
13+
## 操作
14+
15+
### 安装操作 (Install) {#install-action}
16+
17+
此示例演示如何安装指定的 chart/release,支持指定版本和自定义values:
18+
19+
{{< highlightexamplego file="sdkexamples/install.go" >}}
20+
21+
### 升级操作(Upgrade) {#upgrade-action}
22+
23+
此示例演示如何使用指定的 chart、版本和 values 升级已有的 release:
24+
25+
{{< highlightexamplego file="sdkexamples/upgrade.go" >}}
26+
27+
### 卸载操作
28+
29+
此示例演示如何卸载指定的 release:
30+
31+
{{< highlightexamplego file="sdkexamples/uninstall.go" >}}
32+
33+
### 列表操作
34+
35+
此示例会列出当前配置命名空间下的所有已发布 chart:
36+
37+
{{< highlightexamplego file="sdkexamples/list.go" >}}
38+
39+
### 拉取操作
40+
41+
此示例演示如何从 OCI 仓库拉取一个 chart:
42+
43+
{{< highlightexamplego file="sdkexamples/pull.go" >}}
44+
45+
## 驱动程序
46+
47+
此处的驱动示例展示了 Helm SDK 各项操作所需的辅助函数,并演示了如何实际使用上述示例,从OCI仓库拉取、安装、升级和卸载 `podinfo` chart。
48+
49+
{{< highlightexamplego file="sdkexamples/main.go" >}}

content/zh/docs/sdk/gosdk.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
---
2+
title: "介绍"
3+
description: "介绍Helm Go SDK"
4+
aliases: ["/docs/gosdk"]
5+
weight: 1
6+
---
7+
8+
Helm 的 Go SDK 使自定义软件能够利用 Helm charts 和 Helm 的功能来管理 Kubernetes 软件部署
9+
(事实上,Helm CLI 本质上就是这样一个工具!)
10+
11+
目前,SDK 已经在功能上与 Helm CLI 分离。
12+
SDK 可以(并且正在)被独立工具使用。
13+
Helm 项目已承诺为 SDK 提供 API 稳定性。
14+
值得注意的是,SDK 在将 CLI 和 SDK 分离的初始工作中仍有一些未完善之处。Helm 项目旨在随着时间的推移进行改进。
15+
16+
完整的 API 文档可以在 [https://pkg.go.dev/helm.sh/helm/v3](https://pkg.go.dev/helm.sh/helm/v3) 找到。
17+
18+
下面简要概述了一些主要类型的包和一个简单示例。
19+
有关更多示例和功能更完整的"驱动程序",请参阅[示例](./examples.md)部分。
20+
21+
## 主要包概览
22+
23+
- [pkg/action](https://pkg.go.dev/helm.sh/helm/v3/pkg/action):
24+
包含执行 Helm 操作的主要"客户端"。
25+
这与 CLI 在底层使用的包相同。
26+
如果您只需要从另一个 Go 程序执行基本的 Helm 命令,这个包适合您
27+
- [pkg/chart](https://pkg.go.dev/helm.sh/helm/v3/pkg/chart), [pkg/chartutil](https://pkg.go.dev/helm.sh/helm/v3/pkg/chartutil):
28+
用于加载和操作 charts 的方法和辅助函数
29+
- [pkg/cli](https://pkg.go.dev/helm.sh/helm/v3/pkg/cli) 及其子包:
30+
包含标准 Helm 环境变量的所有处理程序,其子包包含输出和 values 文件处理
31+
- [pkg/release](https://pkg.go.dev/helm.sh/helm/v3/pkg/release):
32+
定义 `Release` 对象和状态
33+
34+
除了这些之外还有很多包,请查看文档以获取更多信息!
35+
36+
### 简单示例
37+
这是使用 Go SDK 执行 `helm list` 的简单示例。
38+
有关功能更完整的示例,请参阅[示例](./examples.md)部分。
39+
40+
```go
41+
package main
42+
43+
import (
44+
"log"
45+
"os"
46+
47+
"helm.sh/helm/v3/pkg/action"
48+
"helm.sh/helm/v3/pkg/cli"
49+
)
50+
51+
func main() {
52+
settings := cli.New()
53+
54+
actionConfig := new(action.Configuration)
55+
// 您可以传递空字符串而不是 settings.Namespace() 来列出所有命名空间
56+
if err := actionConfig.Init(settings.RESTClientGetter(), settings.Namespace(), os.Getenv("HELM_DRIVER"), log.Printf); err != nil {
57+
log.Printf("%+v", err)
58+
os.Exit(1)
59+
}
60+
61+
client := action.NewList(actionConfig)
62+
// 仅列出已部署的
63+
client.Deployed = true
64+
results, err := client.Run()
65+
if err != nil {
66+
log.Printf("%+v", err)
67+
os.Exit(1)
68+
}
69+
70+
for _, rel := range results {
71+
log.Printf("%+v", rel)
72+
}
73+
}
74+
75+
```
76+
77+
## 兼容性
78+
79+
Helm SDK 明确遵循 Helm 向后兼容性保证:
80+
81+
<https://github.com/helm/community/blob/main/hips/hip-0004.md>
82+
83+
也就是说,破坏性更改只会在主要版本中进行。

0 commit comments

Comments
 (0)