【问题标题】:Helm go sdk install chart from external locationHelm go sdk 从外部位置安装图表
【发布时间】:2021-07-13 19:33:16
【问题描述】:
我正在使用以下代码安装限制在我的源代码中的图表(例如,在我的 go bin 应用程序中的 app/chart/chart1 中),现在我需要将图表移动到 git 存储库或人工制品,
我的问题是如何从我的程序外部安装图表?
这是我使用的适用于捆绑图表的代码
我使用 helm3 加载程序包,当我将图表捆绑在我的应用程序中时它可以工作
chart, err := loader.Load(“chart/chart1”)
https://pkg.go.dev/helm.sh/helm/v3@v3.5.4/pkg/chart/loader
我应该通过 http 调用以某种方式加载它还是 helm 有一些内置功能?我们需要一些有效的方法来处理它
【问题讨论】:
标签:
go
kubernetes
kubernetes-helm
【解决方案1】:
你可以使用类似这样的东西来安装nginxchart
myChart, err := loader.Load("https://charts.bitnami.com/bitnami/nginx-8.8.4.tgz")
...
install := action.NewInstall(m.actionConfig)
install.ReleaseName = "my-release"
...
myRelease, err := install.Run(myChart, myValues)
类似于:
helm install my-release https://charts.bitnami.com/bitnami/nginx-8.8.4.tgz
【解决方案3】:
loader.load 仅检查文件和目录。如果要使用 URL helm sdk 在 Install 界面中提供了LocateChart 方法。这是一个例子:
settings := cli.New()
actionConfig := new(action.Configuration)
if err := actionConfig.Init(settings.RESTClientGetter(), settings.Namespace(), os.Getenv("HELM_DRIVER"), log.Printf); err != nil {
log.Printf("%+v", err)
os.Exit(1)
}
client := action.NewInstall(actionConfig)
chrt_path, err := client.LocateChart("https://github.com/kubernetes/ingress-nginx/releases/download/helm-chart-4.0.6/ingress-nginx-4.0.6.tgz", settings); if err != nil {
panic(err)
}
myChart, err := loader.Load(chrt_path); if err != nil {
panic(err)
}
然后您可以简单地设置安装选项并调用client.Run 方法。