Commit 300aa76d authored by Bhargav Nookala's avatar Bhargav Nookala

Allow customization of API Versions when using Helm Template with --api-versions or -a

Signed-off-by: 's avatarBhargav Nookala <nooknb@gmail.com>
parent 5437dd4d
......@@ -75,6 +75,7 @@ type templateCmd struct {
releaseIsUpgrade bool
renderFiles []string
kubeVersion string
apiVersions []string
outputDir string
}
......@@ -104,6 +105,7 @@ func newTemplateCmd(out io.Writer) *cobra.Command {
f.StringArrayVar(&t.fileValues, "set-file", []string{}, "Set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)")
f.StringVar(&t.nameTemplate, "name-template", "", "Specify template used to name the release")
f.StringVar(&t.kubeVersion, "kube-version", defaultKubeVersion, "Kubernetes version used as Capabilities.KubeVersion.Major/Minor")
f.StringArrayVarP(&t.apiVersions, "api-versions", "a", []string{}, "Kubernetes api versions used for Capabilities.APIVersions")
f.StringVar(&t.outputDir, "output-dir", "", "Writes the executed templates to files in output-dir instead of stdout")
return cmd
......@@ -167,6 +169,7 @@ func (t *templateCmd) run(cmd *cobra.Command, args []string) error {
Namespace: t.namespace,
},
KubeVersion: t.kubeVersion,
APIVersions: t.apiVersions,
}
renderedTemplates, err := renderutil.Render(c, config, renderOpts)
......
......@@ -175,6 +175,13 @@ func TestTemplateCmd(t *testing.T) {
expectKey: "subchart1/templates/service.yaml",
expectValue: "kube-version/major: \"1\"\n kube-version/minor: \"6\"\n kube-version/gitversion: \"v1.6.0\"",
},
{
name: "check_kube_api_versions",
desc: "verify --api-versions overrides kubernetes api versions",
args: []string{subchart1ChartPath, "--api-versions", "helm.k8s.io/test"},
expectKey: "subchart1/templates/service.yaml",
expectValue: "kube-api-version/test: v1",
},
}
for _, tt := range tests {
......
......@@ -24,6 +24,7 @@ helm template [flags] CHART
### Options
```
-a, --api-versions stringArray Kubernetes api versions used for Capabilities.APIVersions
-x, --execute stringArray Only execute the given templates
-h, --help help for template
--is-upgrade Set .Release.IsUpgrade instead of .Release.IsInstall
......@@ -55,4 +56,4 @@ helm template [flags] CHART
* [helm](helm.md) - The Helm package manager for Kubernetes.
###### Auto generated by spf13/cobra on 17-Jun-2019
###### Auto generated by spf13/cobra on 3-Oct-2019
......@@ -11,6 +11,9 @@ metadata:
kube-version/major: "{{ .Capabilities.KubeVersion.Major }}"
kube-version/minor: "{{ .Capabilities.KubeVersion.Minor }}"
kube-version/gitversion: "v{{ .Capabilities.KubeVersion.Major }}.{{ .Capabilities.KubeVersion.Minor }}.0"
{{ if .Capabilities.APIVersions.Has "helm.k8s.io/test" }}
kube-api-version/test: v1
{{ end }}
spec:
type: {{ .Values.service.type }}
ports:
......
......@@ -31,6 +31,7 @@ import (
type Options struct {
ReleaseOptions chartutil.ReleaseOptions
KubeVersion string
APIVersions []string
}
// Render chart templates locally and display the output.
......@@ -79,6 +80,10 @@ func Render(c *chart.Chart, config *chart.Config, opts Options) (map[string]stri
caps.KubeVersion.GitVersion = fmt.Sprintf("v%d.%d.0", kv.Major(), kv.Minor())
}
if len(opts.APIVersions) > 0 {
caps.APIVersions = chartutil.NewVersionSet(append(opts.APIVersions, "v1")...)
}
vals, err := chartutil.ToRenderValuesCaps(c, config, opts.ReleaseOptions, caps)
if err != nil {
return nil, err
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment