Support client certs when accessing remote repos (#47)

This is important for deployments where the chart repo is protected by client cert validation.

helmfile.yaml is extended to support `certFile` and `keyFile`:

```
 repositories:
   - name: roboll
     url: http://roboll.io/charts
    certFile: optional_client_cert
    keyFile: optional_client_key
```

Everything works the same if you don't provide values for them.

Regarding the implementation, the "helm repo add" command already supports the cert-file and key-file values, so we just have to pass them through.
This commit is contained in:
Greg Burton
2018-03-10 22:16:31 +09:00
committed by KUOKA Yusuke
parent e4961a8c34
commit 1ad426b338
4 changed files with 15 additions and 6 deletions
+7 -2
View File
@@ -30,8 +30,13 @@ func (helm *execer) SetExtraArgs(args ...string) {
helm.extra = args
}
func (helm *execer) AddRepo(name, repository string) error {
out, err := helm.exec("repo", "add", name, repository)
func (helm *execer) AddRepo(name, repository, certfile, keyfile string) error {
var args []string
args = append(args, "repo", "add", name, repository)
if certfile != "" && keyfile != "" {
args = append(args, "--cert-file", certfile, "--key-file", keyfile)
}
out, err := helm.exec(args...)
if helm.writer != nil {
helm.writer.Write(out)
}
+1 -1
View File
@@ -3,7 +3,7 @@ package helmexec
type Interface interface {
SetExtraArgs(args ...string)
AddRepo(name, repository string) error
AddRepo(name, repository, certfile, keyfile string) error
UpdateRepo() error
SyncRelease(name, chart string, flags ...string) error