golang利用helm的sdk写一个chats转换成yaml文件 _
chats_dir: 就是 helm pull下来的仓库
可以用命令直接生成 helm3 template chats_dir --release-name hank
可以变成yaml文件,然后就可以直接apply了
下面利用helm的sdk把chats生成yaml代码
package main
import (
"fmt"
"log"
"os"
"helm.sh/helm/v3/pkg/action"
"helm.sh/helm/v3/pkg/chart/loader"
"helm.sh/helm/v3/pkg/cli"
"helm.sh/helm/v3/pkg/cli/values"
"helm.sh/helm/v3/pkg/getter"
)
func main() {
// 创建一个 helm 配置对象
settings := cli.New()
client := action.NewInstall(&action.Configuration{})
// 加载 chart 文件,这里应该说是加载chart的目录代码,其中values写好了
chartPath, err := client.ChartPathOptions.LocateChart("./chart", settings)
if err != nil {
log.Fatal(err)
}
chart, err := loader.Load(chartPath)
if err != nil {
log.Fatal(err)
}
// 创建一个 values 对象,用于存储 chart 的值
vals := values.Options{}
valueOpts := &vals
p := getter.All(settings)
val, err := valueOpts.MergeValues(p)
if err != nil {
log.Fatal(err)
}
// 创建一个 action 对象,用于执行 helm 操作
client.DryRun = true // 设置为 dry-run 模式,不实际安装 chart
client.ReleaseName = "my-release" // 设置 release 名称
client.Replace = true // 设置为替换模式,如果 release 已存在则覆盖
client.ClientOnly = true // 设置为客户端模式,不与集群交互
// 执行 helm template 操作,并获取结果
rel, err := client.Run(chart, val)
if err != nil {
log.Fatal(err)
}
// 将结果输出为 yaml 格式
fmt.Fprintln(os.Stdout, rel.Manifest)
}
![](https://pic.cnblogs.com/avatar/2227349/20210608193458.png)
githubgithub个人账号
__EOF__
![](https://pic.cnblogs.com/avatar/2227349/20210608193458.png)
- 本文作者: can-H
- 本文链接: https://www.cnblogs.com/can-H/p/17959058
- 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
- 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。
退出 订阅评论 我的博客
[Ctrl+Enter快捷键提交]
【推荐】参加阿里云PolarDB与函数计算动手活动,送博客园T恤
【推荐】「指间灵动,快码加编」:通义灵码,再次降临博客园
【推荐】阿里云创新加速季,5亿补贴享不停,上云礼包抢先领
· 剖析 Kafka 消息丢失的原因
· WPF 做一个超级简单的 1024 数字接龙游戏
· dotnet 融合 Avalonia 和 UNO 框架
· C# 13(.Net 9) 中的新特性 - 扩展类型
· C# 如何创建一个可快速重复使用的项目模板