mirror of
https://github.com/rancher/rke.git
synced 2025-07-04 02:57:52 +00:00
honor kubernetes_version setting
This commit is contained in:
parent
dad34d4da2
commit
a64e8f64fb
@ -168,7 +168,10 @@ func InitClusterObject(ctx context.Context, rkeConfig *v3.RancherKubernetesEngin
|
||||
}
|
||||
|
||||
// Setting cluster Defaults
|
||||
c.setClusterDefaults(ctx)
|
||||
err := c.setClusterDefaults(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// extract cluster network configuration
|
||||
c.setNetworkOptions()
|
||||
|
||||
|
@ -11,6 +11,7 @@ import (
|
||||
"github.com/rancher/rke/log"
|
||||
"github.com/rancher/rke/services"
|
||||
"github.com/rancher/rke/templates"
|
||||
"github.com/rancher/rke/util"
|
||||
"github.com/rancher/types/apis/management.cattle.io/v3"
|
||||
)
|
||||
|
||||
@ -75,7 +76,7 @@ func setDefaultIfEmpty(varName *string, defaultValue string) {
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Cluster) setClusterDefaults(ctx context.Context) {
|
||||
func (c *Cluster) setClusterDefaults(ctx context.Context) error {
|
||||
if len(c.SSHKeyPath) == 0 {
|
||||
c.SSHKeyPath = DefaultClusterSSHKeyPath
|
||||
}
|
||||
@ -144,10 +145,15 @@ func (c *Cluster) setClusterDefaults(ctx context.Context) {
|
||||
}
|
||||
c.PrivateRegistriesMap[pr.URL] = pr
|
||||
}
|
||||
c.setClusterImageDefaults()
|
||||
err := c.setClusterImageDefaults()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
c.setClusterServicesDefaults()
|
||||
c.setClusterNetworkDefaults()
|
||||
c.setClusterAuthnDefaults()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Cluster) setClusterServicesDefaults() {
|
||||
@ -200,13 +206,17 @@ func (c *Cluster) setClusterServicesDefaults() {
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Cluster) setClusterImageDefaults() {
|
||||
func (c *Cluster) setClusterImageDefaults() error {
|
||||
var privRegURL string
|
||||
imageDefaults, ok := v3.K8sVersionToRKESystemImages[c.Version]
|
||||
if !ok {
|
||||
imageDefaults = v3.K8sVersionToRKESystemImages[DefaultK8sVersion]
|
||||
|
||||
// Version Check
|
||||
err := util.ValidateVersion(c.Version)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
imageDefaults := v3.AllK8sVersions[c.Version]
|
||||
|
||||
for _, privReg := range c.PrivateRegistries {
|
||||
if privReg.IsDefault {
|
||||
privRegURL = privReg.URL
|
||||
@ -243,6 +253,8 @@ func (c *Cluster) setClusterImageDefaults() {
|
||||
for k, v := range systemImagesDefaultsMap {
|
||||
setDefaultIfEmpty(k, v)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Cluster) setClusterNetworkDefaults() {
|
||||
|
@ -12,6 +12,7 @@ import (
|
||||
"github.com/rancher/rke/cluster"
|
||||
"github.com/rancher/rke/pki"
|
||||
"github.com/rancher/rke/services"
|
||||
"github.com/rancher/rke/util"
|
||||
"github.com/rancher/types/apis/management.cattle.io/v3"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/urfave/cli"
|
||||
@ -402,11 +403,21 @@ func getAddonManifests(reader *bufio.Reader) ([]string, error) {
|
||||
|
||||
func generateSystemImagesList(version string, all bool) error {
|
||||
allVersions := []string{}
|
||||
|
||||
for version := range v3.AllK8sVersions {
|
||||
err := util.ValidateVersion(version)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
allVersions = append(allVersions, version)
|
||||
}
|
||||
if all {
|
||||
for version, rkeSystemImages := range v3.AllK8sVersions {
|
||||
err := util.ValidateVersion(version)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
logrus.Infof("Generating images list for version [%s]:", version)
|
||||
uniqueImages := getUniqueSystemImageList(rkeSystemImages)
|
||||
for _, image := range uniqueImages {
|
||||
|
45
util/util.go
45
util/util.go
@ -7,6 +7,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/coreos/go-semver/semver"
|
||||
"github.com/rancher/types/apis/management.cattle.io/v3"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -63,3 +64,47 @@ func IsSymlink(file string) (bool, error) {
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
|
||||
// ValidateVersion - Return error if version is not valid
|
||||
// Is version major.minor >= oldest major.minor supported
|
||||
// Is version in the AllK8sVersions list
|
||||
// Is version not in the "bad" list
|
||||
func ValidateVersion(version string) error {
|
||||
// Create target version and current versions list
|
||||
targetVersion, err := StrToSemVer(version)
|
||||
if err != nil {
|
||||
return fmt.Errorf("%s is not valid semver", version)
|
||||
}
|
||||
currentVersionsList := []*semver.Version{}
|
||||
for _, ver := range v3.K8sVersionsCurrent {
|
||||
v, err := StrToSemVer(ver)
|
||||
if err != nil {
|
||||
return fmt.Errorf("%s in Current Versions list is not valid semver", ver)
|
||||
}
|
||||
|
||||
currentVersionsList = append(currentVersionsList, v)
|
||||
}
|
||||
|
||||
// Make sure Target version is greater than or equal to oldest major.minor supported.
|
||||
semver.Sort(currentVersionsList)
|
||||
if targetVersion.Major < currentVersionsList[0].Major {
|
||||
return fmt.Errorf("%s is an unsupported Kubernetes version - see 'rke config --system-images --all' for versions supported with this release", version)
|
||||
}
|
||||
if targetVersion.Major == currentVersionsList[0].Major {
|
||||
if targetVersion.Minor < currentVersionsList[0].Minor {
|
||||
return fmt.Errorf("%s is an unsupported Kubernetes version - see 'rke config --system-images --all' for versions supported with this release", version)
|
||||
}
|
||||
}
|
||||
// Make sure Target version is in the AllK8sVersions list.
|
||||
_, ok := v3.AllK8sVersions[version]
|
||||
if !ok {
|
||||
return fmt.Errorf("%s is an unsupported Kubernetes version - see 'rke config --system-images --all' for versions supported with this release", version)
|
||||
}
|
||||
// Make sure Target version is not "bad".
|
||||
_, ok = v3.K8sBadVersions[version]
|
||||
if ok {
|
||||
return fmt.Errorf("%s is an unsupported Kubernetes version - see 'rke config --system-images --all' for versions supported with this release", version)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user