mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-05 18:24:07 +00:00
Merge pull request #100350 from jr0d/jr/kubeadm-etcd-upgrade-with-metadata
kubeadm: support semver metadata imagetags for etcd during upgrades
This commit is contained in:
commit
bc703278dd
@ -20,6 +20,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
@ -286,7 +287,8 @@ func performEtcdStaticPodUpgrade(certsRenewMgr *renewal.Manager, client clientse
|
|||||||
// or the kubeadm preferred one for the desired Kubernetes version
|
// or the kubeadm preferred one for the desired Kubernetes version
|
||||||
var desiredEtcdVersion *version.Version
|
var desiredEtcdVersion *version.Version
|
||||||
if cfg.Etcd.Local.ImageTag != "" {
|
if cfg.Etcd.Local.ImageTag != "" {
|
||||||
desiredEtcdVersion, err = version.ParseSemantic(cfg.Etcd.Local.ImageTag)
|
desiredEtcdVersion, err = version.ParseSemantic(
|
||||||
|
convertImageTagMetadataToSemver(cfg.Etcd.Local.ImageTag))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return true, errors.Wrapf(err, "failed to parse tag %q as a semantic version", cfg.Etcd.Local.ImageTag)
|
return true, errors.Wrapf(err, "failed to parse tag %q as a semantic version", cfg.Etcd.Local.ImageTag)
|
||||||
}
|
}
|
||||||
@ -643,5 +645,14 @@ func GetEtcdImageTagFromStaticPod(manifestDir string) (string, error) {
|
|||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
return image.TagFromImage(pod.Spec.Containers[0].Image), nil
|
return convertImageTagMetadataToSemver(image.TagFromImage(pod.Spec.Containers[0].Image)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// convertImageTagMetadataToSemver converts imagetag in the format of semver_metadata to semver+metadata
|
||||||
|
func convertImageTagMetadataToSemver(tag string) string {
|
||||||
|
// Container registries do not support `+` characters in tag names. This prevents imagetags from
|
||||||
|
// correctly representing semantic versions which use the plus symbol to delimit build metadata.
|
||||||
|
// Kubernetes uses the convention of using an underscore in image registries to preserve
|
||||||
|
// build metadata information in imagetags.
|
||||||
|
return strings.Replace(tag, "_", "+", 1)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user