Add template function returning the latest image

Apply suggestions from code review

Co-authored-by: Peter Rifel <rifelpet@users.noreply.github.com>
This commit is contained in:
Ole Markus With 2021-01-30 08:34:09 +01:00
parent 55a5915515
commit 05092f8389
4 changed files with 21 additions and 4 deletions

View File

@ -16,8 +16,8 @@ metadata:
kops.k8s.io/cluster: {{ '{{.clusterName}}.{{.dnsZone}}' }}
name: nodes
spec:
image: coreos.com/CoreOS-stable-1409.6.0-hvm
kubernetesVersion: {{ '{{.kubernetesVersion}}' }}
image: {{ ChannelRecommendedImage .cloud .kubernetesVersion }}
kubernetesVersion: {{ '{{ ChannelRecommendedKubernetesUpgradeVersion .kubernetesVersion }}' }}
machineType: m4.large
maxPrice: "0.5"
maxSize: 20
@ -127,9 +127,13 @@ spec:
This function returns the kubernetes version recommended for the running kops version.
##### ChannelRecommendedKopsUpgradeVersion <kuberneteVersion>
##### ChannelRecommendedKubernetesUpgradeVersion <kuberneteVersion>
This function returns the kubernetes upgrade recommendation given that you run `<kubernetesVersion>`. Typically this is the latest minor version supported by the given channel.
This function returns the recommended kubernetes version given that you currently run `<kubernetesVersion>`. Typically this is the latest patch version supported by the given channel.
##### ChannelRecommendedImage <cloudProvider> <kuberneteVersion>
This function returns the recommended image for the given cloud provider and kubernetes version.
#### Sprig functions

View File

@ -13,6 +13,7 @@ go_library(
"//pkg/apis/kops:go_default_library",
"//pkg/apis/kops/util:go_default_library",
"//vendor/github.com/Masterminds/sprig/v3:go_default_library",
"//vendor/github.com/blang/semver/v4:go_default_library",
],
)

View File

@ -20,6 +20,7 @@ import (
"text/template"
"github.com/Masterminds/sprig/v3"
"github.com/blang/semver/v4"
"k8s.io/kops"
kopsapi "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/kops/util"
@ -62,5 +63,11 @@ func (r *Templater) templateFuncsMap(tm *template.Template) template.FuncMap {
}
funcs["ChannelRecommendedImage"] = func(cloud, k8sVersion string) string {
ver, _ := semver.ParseTolerant(k8sVersion)
imageSpec := r.channel.FindImage(kopsapi.CloudProviderID(cloud), ver)
return imageSpec.Name
}
return funcs
}

View File

@ -95,6 +95,11 @@ func TestRenderChannelFunctions(t *testing.T) {
Template: `{{ ChannelRecommendedKubernetesUpgradeVersion "1.4.2" }}`,
Expected: "1.4.8",
},
{
Context: map[string]interface{}{},
Template: `{{ ChannelRecommendedImage "aws" "1.4.2" }}`,
Expected: "kope.io/k8s-1.4-debian-jessie-amd64-hvm-ebs-2016-10-21",
},
}
makeRenderTests(t, cases)
}