mirror of
https://github.com/helm/helm.git
synced 2026-05-28 04:35:48 -04:00
Merge pull request #7071 from SvenskaSpel/issue-7055-helm-pull-ca-file-usage
Fixes #7055 helm pull ca file usage
This commit is contained in:
commit
893e8de183
5 changed files with 86 additions and 1 deletions
|
|
@ -63,6 +63,7 @@ func (p *Pull) Run(chartRef string) (string, error) {
|
|||
Getters: getter.All(p.Settings),
|
||||
Options: []getter.Option{
|
||||
getter.WithBasicAuth(p.Username, p.Password),
|
||||
getter.WithTLSClientConfig(p.CertFile, p.KeyFile, p.CaFile),
|
||||
},
|
||||
RepositoryConfig: p.Settings.RepositoryConfig,
|
||||
RepositoryCache: p.Settings.RepositoryCache,
|
||||
|
|
|
|||
|
|
@ -214,6 +214,10 @@ func (c *ChartDownloader) ResolveChartVersion(ref, version string) (*url.URL, er
|
|||
c.Options = append(c.Options, getter.WithBasicAuth(r.Config.Username, r.Config.Password))
|
||||
}
|
||||
|
||||
if r.Config.CertFile != "" || r.Config.KeyFile != "" || r.Config.CAFile != "" {
|
||||
c.Options = append(c.Options, getter.WithTLSClientConfig(r.Config.CertFile, r.Config.KeyFile, r.Config.CAFile))
|
||||
}
|
||||
|
||||
// Next, we need to load the index, and actually look up the chart.
|
||||
idxFile := filepath.Join(c.RepositoryCache, helmpath.CacheIndexFile(r.Config.Name))
|
||||
i, err := repo.LoadIndexFile(idxFile)
|
||||
|
|
|
|||
|
|
@ -80,6 +80,67 @@ func TestResolveChartRef(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestResolveChartOpts(t *testing.T) {
|
||||
tests := []struct {
|
||||
name, ref, version string
|
||||
expect []getter.Option
|
||||
}{
|
||||
{
|
||||
name: "repo with CA-file",
|
||||
ref: "testing-ca-file/foo",
|
||||
expect: []getter.Option{
|
||||
getter.WithURL("https://example.com/foo-1.2.3.tgz"),
|
||||
getter.WithTLSClientConfig("cert", "key", "ca"),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
c := ChartDownloader{
|
||||
Out: os.Stderr,
|
||||
RepositoryConfig: repoConfig,
|
||||
RepositoryCache: repoCache,
|
||||
Getters: getter.All(&cli.EnvSettings{
|
||||
RepositoryConfig: repoConfig,
|
||||
RepositoryCache: repoCache,
|
||||
}),
|
||||
}
|
||||
|
||||
// snapshot options
|
||||
snapshotOpts := c.Options
|
||||
|
||||
for _, tt := range tests {
|
||||
// reset chart downloader options for each test case
|
||||
c.Options = snapshotOpts
|
||||
|
||||
expect, err := getter.NewHTTPGetter(tt.expect...)
|
||||
if err != nil {
|
||||
t.Errorf("%s: failed to setup http client: %s", tt.name, err)
|
||||
continue
|
||||
}
|
||||
|
||||
u, err := c.ResolveChartVersion(tt.ref, tt.version)
|
||||
if err != nil {
|
||||
t.Errorf("%s: failed with error %s", tt.name, err)
|
||||
continue
|
||||
}
|
||||
|
||||
got, err := getter.NewHTTPGetter(
|
||||
append(
|
||||
c.Options,
|
||||
getter.WithURL(u.String()),
|
||||
)...,
|
||||
)
|
||||
if err != nil {
|
||||
t.Errorf("%s: failed to create http client: %s", tt.name, err)
|
||||
continue
|
||||
}
|
||||
|
||||
if *(got.(*getter.HTTPGetter)) != *(expect.(*getter.HTTPGetter)) {
|
||||
t.Errorf("%s: expected %s, got %s", tt.name, expect, got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestVerifyChart(t *testing.T) {
|
||||
v, err := VerifyChart("testdata/signtest-0.1.0.tgz", "testdata/helm-test-key.pub")
|
||||
if err != nil {
|
||||
|
|
|
|||
7
pkg/downloader/testdata/repositories.yaml
vendored
7
pkg/downloader/testdata/repositories.yaml
vendored
|
|
@ -15,4 +15,9 @@ repositories:
|
|||
- name: testing-relative
|
||||
url: "http://example.com/helm"
|
||||
- name: testing-relative-trailing-slash
|
||||
url: "http://example.com/helm/"
|
||||
url: "http://example.com/helm/"
|
||||
- name: testing-ca-file
|
||||
url: "https://example.com"
|
||||
certFile: "cert"
|
||||
keyFile: "key"
|
||||
caFile: "ca"
|
||||
|
|
|
|||
14
pkg/downloader/testdata/repository/testing-ca-file-index.yaml
vendored
Normal file
14
pkg/downloader/testdata/repository/testing-ca-file-index.yaml
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
apiVersion: v1
|
||||
entries:
|
||||
foo:
|
||||
- name: foo
|
||||
description: Foo Chart
|
||||
home: https://helm.sh/helm
|
||||
keywords: []
|
||||
maintainers: []
|
||||
sources:
|
||||
- https://github.com/helm/charts
|
||||
urls:
|
||||
- https://example.com/foo-1.2.3.tgz
|
||||
version: 1.2.3
|
||||
checksum: 0e6661f193211d7a5206918d42f5c2a9470b737d
|
||||
Loading…
Reference in a new issue