Helm go sdk从外部位置安装图表



我使用以下代码安装源代码中限定的图表(例如,在我的go bin应用程序中的app/chart/chart1中(,现在我需要将图表移动到git repositoryartifactory

我的问题是如何从程序外部安装图表?

这是我使用的代码,适用于捆绑图表

我使用helm3加载程序包,当我的应用中捆绑了图表时,它就可以工作了

chart, err := loader.Load(“chart/chart1”)

https://pkg.go.dev/helm.sh/helm/v3@v3.5.4/pkg/chart/loader

我应该用http调用加载它,还是helm有一些内置功能?我们需要一些有效的方法来处理

helm在升级/安装命令中似乎首先检查了几个不同的位置,您可以在这里看到这些位置被调用。该函数的内容在这里。然后继续使用loader.Load

您可以使用类似的东西来安装nginx图表


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

loader.load仅检查文件和目录。如果要使用URL,helm-sdk在安装界面中提供了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方法。

最新更新