mirror of https://github.com/kubernetes/kops.git
Use NodeupConfig for KubernetesVersion
This commit is contained in:
parent
7419620b80
commit
4179fcce58
|
@ -34,6 +34,7 @@ import (
|
|||
"k8s.io/kops/pkg/apis/kops/util"
|
||||
"k8s.io/kops/pkg/apis/nodeup"
|
||||
"k8s.io/kops/pkg/dns"
|
||||
"k8s.io/kops/pkg/model/components"
|
||||
"k8s.io/kops/pkg/systemd"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
"k8s.io/kops/upup/pkg/fi/nodeup/nodetasks"
|
||||
|
@ -84,9 +85,9 @@ type NodeupModelContext struct {
|
|||
|
||||
// Init completes initialization of the object, for example pre-parsing the kubernetes version
|
||||
func (c *NodeupModelContext) Init() error {
|
||||
k8sVersion, err := util.ParseKubernetesVersion(c.Cluster.Spec.KubernetesVersion)
|
||||
k8sVersion, err := util.ParseKubernetesVersion(c.NodeupConfig.KubernetesVersion)
|
||||
if err != nil || k8sVersion == nil {
|
||||
return fmt.Errorf("unable to parse KubernetesVersion %q", c.Cluster.Spec.KubernetesVersion)
|
||||
return fmt.Errorf("unable to parse KubernetesVersion %q", c.NodeupConfig.KubernetesVersion)
|
||||
}
|
||||
c.kubernetesVersion = *k8sVersion
|
||||
c.bootstrapCerts = map[string]*nodetasks.BootstrapCert{}
|
||||
|
@ -355,6 +356,17 @@ func (c *NodeupModelContext) BuildBootstrapKubeconfig(name string, ctx *fi.Nodeu
|
|||
}
|
||||
}
|
||||
|
||||
// RemapImage applies any needed remapping to an image reference.
|
||||
func (c *NodeupModelContext) RemapImage(image string) string {
|
||||
if components.IsBaseURL(c.NodeupConfig.KubernetesVersion) && c.IsKubernetesLT("1.25") {
|
||||
image = strings.Replace(image, "registry.k8s.io", "k8s.gcr.io", 1)
|
||||
}
|
||||
if c.Architecture != architectures.ArchitectureAmd64 {
|
||||
image = strings.Replace(image, "-amd64", "-"+string(c.Architecture), 1)
|
||||
}
|
||||
return image
|
||||
}
|
||||
|
||||
// IsKubernetesGTE checks if the version is greater-than-or-equal
|
||||
func (c *NodeupModelContext) IsKubernetesGTE(version string) bool {
|
||||
if c.kubernetesVersion.Major == 0 {
|
||||
|
|
|
@ -33,7 +33,6 @@ import (
|
|||
"k8s.io/kops/pkg/wellknownusers"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
"k8s.io/kops/upup/pkg/fi/nodeup/nodetasks"
|
||||
"k8s.io/kops/util/pkg/architectures"
|
||||
"k8s.io/kops/util/pkg/proxy"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
|
@ -606,13 +605,7 @@ func (b *KubeAPIServerBuilder) buildPod(ctx context.Context, kubeAPIServer *kops
|
|||
resourceLimits["memory"] = *kubeAPIServer.MemoryLimit
|
||||
}
|
||||
|
||||
image := kubeAPIServer.Image
|
||||
if components.IsBaseURL(b.Cluster.Spec.KubernetesVersion) && b.IsKubernetesLT("1.25") {
|
||||
image = strings.Replace(image, "registry.k8s.io", "k8s.gcr.io", 1)
|
||||
}
|
||||
if b.Architecture != architectures.ArchitectureAmd64 {
|
||||
image = strings.Replace(image, "-amd64", "-"+string(b.Architecture), 1)
|
||||
}
|
||||
image := b.RemapImage(kubeAPIServer.Image)
|
||||
|
||||
container := &v1.Container{
|
||||
Name: "kube-apiserver",
|
||||
|
|
|
@ -25,11 +25,9 @@ import (
|
|||
"k8s.io/kops/pkg/flagbuilder"
|
||||
"k8s.io/kops/pkg/k8scodecs"
|
||||
"k8s.io/kops/pkg/kubemanifest"
|
||||
"k8s.io/kops/pkg/model/components"
|
||||
"k8s.io/kops/pkg/rbac"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
"k8s.io/kops/upup/pkg/fi/nodeup/nodetasks"
|
||||
"k8s.io/kops/util/pkg/architectures"
|
||||
"k8s.io/kops/util/pkg/distributions"
|
||||
"k8s.io/kops/util/pkg/proxy"
|
||||
|
||||
|
@ -204,13 +202,7 @@ func (b *KubeControllerManagerBuilder) buildPod(kcm *kops.KubeControllerManagerC
|
|||
// Add the volumePluginDir flag if provided in the kubelet spec, or set above based on the OS
|
||||
flags = append(flags, "--flex-volume-plugin-dir="+volumePluginDir)
|
||||
|
||||
image := kcm.Image
|
||||
if components.IsBaseURL(b.Cluster.Spec.KubernetesVersion) && b.IsKubernetesLT("1.25") {
|
||||
image = strings.Replace(image, "registry.k8s.io", "k8s.gcr.io", 1)
|
||||
}
|
||||
if b.Architecture != architectures.ArchitectureAmd64 {
|
||||
image = strings.Replace(image, "-amd64", "-"+string(b.Architecture), 1)
|
||||
}
|
||||
image := b.RemapImage(kcm.Image)
|
||||
|
||||
container := &v1.Container{
|
||||
Name: "kube-controller-manager",
|
||||
|
|
|
@ -18,7 +18,6 @@ package model
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
@ -26,11 +25,9 @@ import (
|
|||
"k8s.io/kops/pkg/flagbuilder"
|
||||
"k8s.io/kops/pkg/k8scodecs"
|
||||
"k8s.io/kops/pkg/kubemanifest"
|
||||
"k8s.io/kops/pkg/model/components"
|
||||
"k8s.io/kops/pkg/rbac"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
"k8s.io/kops/upup/pkg/fi/nodeup/nodetasks"
|
||||
"k8s.io/kops/util/pkg/architectures"
|
||||
)
|
||||
|
||||
// KubeProxyBuilder installs kube-proxy
|
||||
|
@ -153,13 +150,7 @@ func (b *KubeProxyBuilder) buildPod() (*v1.Pod, error) {
|
|||
"--oom-score-adj=-998",
|
||||
}...)
|
||||
|
||||
image := c.Image
|
||||
if b.Architecture != architectures.ArchitectureAmd64 {
|
||||
image = strings.Replace(image, "-amd64", "-"+string(b.Architecture), 1)
|
||||
}
|
||||
if components.IsBaseURL(b.Cluster.Spec.KubernetesVersion) && b.IsKubernetesLT("1.25") {
|
||||
image = strings.Replace(image, "registry.k8s.io", "k8s.gcr.io", 1)
|
||||
}
|
||||
image := b.RemapImage(c.Image)
|
||||
|
||||
container := &v1.Container{
|
||||
Name: "kube-proxy",
|
||||
|
|
|
@ -20,7 +20,6 @@ import (
|
|||
"fmt"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/kops/pkg/apis/kops"
|
||||
|
@ -28,12 +27,10 @@ import (
|
|||
"k8s.io/kops/pkg/flagbuilder"
|
||||
"k8s.io/kops/pkg/k8scodecs"
|
||||
"k8s.io/kops/pkg/kubemanifest"
|
||||
"k8s.io/kops/pkg/model/components"
|
||||
"k8s.io/kops/pkg/model/components/kubescheduler"
|
||||
"k8s.io/kops/pkg/rbac"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
"k8s.io/kops/upup/pkg/fi/nodeup/nodetasks"
|
||||
"k8s.io/kops/util/pkg/architectures"
|
||||
"k8s.io/kops/util/pkg/proxy"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
|
@ -217,13 +214,7 @@ func (b *KubeSchedulerBuilder) buildPod(kubeScheduler *kops.KubeSchedulerConfig)
|
|||
},
|
||||
}
|
||||
|
||||
image := kubeScheduler.Image
|
||||
if components.IsBaseURL(b.Cluster.Spec.KubernetesVersion) && b.IsKubernetesLT("1.25") {
|
||||
image = strings.Replace(image, "registry.k8s.io", "k8s.gcr.io", 1)
|
||||
}
|
||||
if b.Architecture != architectures.ArchitectureAmd64 {
|
||||
image = strings.Replace(image, "-amd64", "-"+string(b.Architecture), 1)
|
||||
}
|
||||
image := b.RemapImage(kubeScheduler.Image)
|
||||
|
||||
healthAction := &v1.HTTPGetAction{
|
||||
Host: "127.0.0.1",
|
||||
|
|
|
@ -23,10 +23,8 @@ import (
|
|||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/blang/semver/v4"
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/kops/pkg/apis/kops"
|
||||
"k8s.io/kops/pkg/apis/kops/util"
|
||||
"k8s.io/kops/pkg/flagbuilder"
|
||||
"k8s.io/kops/pkg/rbac"
|
||||
"k8s.io/kops/pkg/systemd"
|
||||
|
@ -111,12 +109,7 @@ func (t *ProtokubeBuilder) Build(c *fi.NodeupModelBuilderContext) error {
|
|||
|
||||
// buildSystemdService generates the manifest for the protokube service
|
||||
func (t *ProtokubeBuilder) buildSystemdService() (*nodetasks.Service, error) {
|
||||
k8sVersion, err := util.ParseKubernetesVersion(t.Cluster.Spec.KubernetesVersion)
|
||||
if err != nil || k8sVersion == nil {
|
||||
return nil, fmt.Errorf("unable to parse KubernetesVersion %q", t.Cluster.Spec.KubernetesVersion)
|
||||
}
|
||||
|
||||
protokubeFlags, err := t.ProtokubeFlags(*k8sVersion)
|
||||
protokubeFlags, err := t.ProtokubeFlags()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -179,7 +172,7 @@ type ProtokubeFlags struct {
|
|||
}
|
||||
|
||||
// ProtokubeFlags is responsible for building the command line flags for protokube
|
||||
func (t *ProtokubeBuilder) ProtokubeFlags(k8sVersion semver.Version) (*ProtokubeFlags, error) {
|
||||
func (t *ProtokubeBuilder) ProtokubeFlags() (*ProtokubeFlags, error) {
|
||||
f := &ProtokubeFlags{
|
||||
Channels: t.NodeupConfig.Channels,
|
||||
Cloud: fi.PtrTo(string(t.BootConfig.CloudProvider)),
|
||||
|
|
|
@ -38,6 +38,8 @@ type Config struct {
|
|||
Channels []string `json:"channels,omitempty"`
|
||||
// ApiserverAdditionalIPs are additional IP address to put in the apiserver server cert.
|
||||
ApiserverAdditionalIPs []string `json:",omitempty"`
|
||||
// KubernetesVersion is the version of Kubernetes to install.
|
||||
KubernetesVersion string
|
||||
// Packages specifies additional packages to be installed.
|
||||
Packages []string `json:"packages,omitempty"`
|
||||
|
||||
|
@ -168,15 +170,16 @@ func NewConfig(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) (*Confi
|
|||
igHooks := filterHooks(instanceGroup.Spec.Hooks, instanceGroup.Spec.Role)
|
||||
|
||||
config := Config{
|
||||
ClusterName: cluster.ObjectMeta.Name,
|
||||
CAs: map[string]string{},
|
||||
KeypairIDs: map[string]string{},
|
||||
SysctlParameters: instanceGroup.Spec.SysctlParameters,
|
||||
VolumeMounts: instanceGroup.Spec.VolumeMounts,
|
||||
FileAssets: append(filterFileAssets(instanceGroup.Spec.FileAssets, role), filterFileAssets(cluster.Spec.FileAssets, role)...),
|
||||
Hooks: [][]kops.HookSpec{igHooks, clusterHooks},
|
||||
ContainerRuntime: cluster.Spec.ContainerRuntime,
|
||||
Docker: cluster.Spec.Docker,
|
||||
ClusterName: cluster.ObjectMeta.Name,
|
||||
KubernetesVersion: cluster.Spec.KubernetesVersion,
|
||||
CAs: map[string]string{},
|
||||
KeypairIDs: map[string]string{},
|
||||
SysctlParameters: instanceGroup.Spec.SysctlParameters,
|
||||
VolumeMounts: instanceGroup.Spec.VolumeMounts,
|
||||
FileAssets: append(filterFileAssets(instanceGroup.Spec.FileAssets, role), filterFileAssets(cluster.Spec.FileAssets, role)...),
|
||||
Hooks: [][]kops.HookSpec{igHooks, clusterHooks},
|
||||
ContainerRuntime: cluster.Spec.ContainerRuntime,
|
||||
Docker: cluster.Spec.Docker,
|
||||
}
|
||||
|
||||
bootConfig := BootConfig{
|
||||
|
|
Loading…
Reference in New Issue