1
0
mirror of https://github.com/rancher/rke.git synced 2025-04-27 19:25:44 +00:00

Add correct env vars if etcd 3.3 is used

This commit is contained in:
Sebastiaan van Steenis 2019-04-30 12:28:10 +02:00 committed by Alena Prokharchyk
parent 471146b25c
commit 1127a90a9c
2 changed files with 48 additions and 6 deletions

View File

@ -11,7 +11,6 @@ import (
b64 "encoding/base64"
ref "github.com/docker/distribution/reference"
"github.com/docker/docker/api/types"
"github.com/rancher/rke/docker"
"github.com/rancher/rke/hosts"
@ -35,6 +34,8 @@ const (
KubeletDockerConfigEnv = "RKE_KUBELET_DOCKER_CONFIG"
KubeletDockerConfigFileEnv = "RKE_KUBELET_DOCKER_FILE"
KubeletDockerConfigPath = "/var/lib/kubelet/config.json"
EtcdChangedEnvVersion = "v3.3.0"
)
var admissionControlOptionNames = []string{"enable-admission-plugins", "admission-control"}
@ -769,13 +770,42 @@ func (c *Cluster) BuildEtcdProcess(host *hosts.Host, etcdHosts []*hosts.Host, pr
}
registryAuthConfig, _, _ := docker.GetImageRegistryConfig(c.Services.Etcd.Image, c.PrivateRegistriesMap)
// Determine etcd version for correct etcdctl environment variables
etcdTag, err := util.GetImageTagFromImage(c.Services.Etcd.Image)
if err != nil {
logrus.Warn(err)
}
etcdSemVer, err := util.StrToSemVer(etcdTag)
if err != nil {
logrus.Warn(err)
}
etcdChangedEnvSemVer, err := util.StrToSemVer(EtcdChangedEnvVersion)
if err != nil {
logrus.Warn(err)
}
// Configure default etcdctl environment variables
Env := []string{}
Env = append(Env, "ETCDCTL_API=3")
Env = append(Env, fmt.Sprintf("ETCDCTL_ENDPOINT=https://%s:2379", listenAddress))
Env = append(Env, fmt.Sprintf("ETCDCTL_CACERT=%s", pki.GetCertPath(pki.CACertName)))
Env = append(Env, fmt.Sprintf("ETCDCTL_CERT=%s", pki.GetCertPath(nodeName)))
Env = append(Env, fmt.Sprintf("ETCDCTL_KEY=%s", pki.GetKeyPath(nodeName)))
// Apply old configuration to avoid replacing etcd container
if etcdSemVer.LessThan(*etcdChangedEnvSemVer) {
logrus.Debugf("Version [%s] is less than version [%s]", etcdSemVer, etcdChangedEnvSemVer)
Env = append(Env, fmt.Sprintf("ETCDCTL_ENDPOINT=https://%s:2379", listenAddress))
} else {
logrus.Debugf("Version [%s] is equal or higher than version [%s]", etcdSemVer, etcdChangedEnvSemVer)
// Point etcdctl to localhost in case we have listen all (0.0.0.0) configured
if listenAddress == "0.0.0.0" {
Env = append(Env, "ETCDCTL_ENDPOINTS=https://127.0.0.1:2379")
// If internal address is configured, set endpoint to that address as well
} else {
Env = append(Env, fmt.Sprintf("ETCDCTL_ENDPOINTS=https://%s:2379", listenAddress))
}
}
if architecture == "aarch64" {
architecture = "arm64"
}
@ -814,9 +844,11 @@ func BuildPortChecksFromPortList(host *hosts.Host, portList []string, proto stri
func (c *Cluster) GetKubernetesServicesOptions() v3.KubernetesServicesOptions {
clusterMajorVersion := util.GetTagMajorVersion(c.Version)
NamedkK8sImage, _ := ref.ParseNormalizedNamed(c.SystemImages.Kubernetes)
k8sImageTag, err := util.GetImageTagFromImage(c.SystemImages.Kubernetes)
if err != nil {
logrus.Warn(err)
}
k8sImageTag := NamedkK8sImage.(ref.Tagged).Tag()
k8sImageMajorVersion := util.GetTagMajorVersion(k8sImageTag)
if clusterMajorVersion != k8sImageMajorVersion && k8sImageMajorVersion != "" {
@ -851,8 +883,6 @@ func (c *Cluster) getRKEToolsEntryPoint() string {
v := strings.Split(c.SystemImages.KubernetesServicesSidecar, ":")
last := v[len(v)-1]
logrus.Debugf("Extracted version [%s] from image [%s]", last, c.SystemImages.KubernetesServicesSidecar)
sv, err := util.StrToSemVer(last)
if err != nil {
return DefaultToolsEntrypoint

View File

@ -7,7 +7,9 @@ import (
"strings"
"github.com/coreos/go-semver/semver"
ref "github.com/docker/distribution/reference"
v3 "github.com/rancher/types/apis/management.cattle.io/v3"
"github.com/sirupsen/logrus"
)
const (
@ -113,3 +115,13 @@ func IsFileExists(filePath string) (bool, error) {
return false, err
}
}
func GetImageTagFromImage(image string) (string, error) {
parsedImage, err := ref.ParseNormalizedNamed(image)
if err != nil {
return "", err
}
imageTag := parsedImage.(ref.Tagged).Tag()
logrus.Debugf("Extracted version [%s] from image [%s]", imageTag, image)
return imageTag, nil
}