我使用以下代码安装源代码中限定的图表(例如,在我的go bin应用程序中的app/chart/chart1
中(,现在我需要将图表移动到git repository或artifactory,
我的问题是如何从程序外部安装图表?
这是我使用的代码,适用于捆绑图表
我使用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
方法。