mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-19 18:02:01 +00:00
Merge pull request #115575 from SataQiu/fix-20230207
kubeadm: fix a bug where the uploaded kubelet configuration in kube-system/kubelet-config ConfigMap does not respect user patch
This commit is contained in:
commit
8e31885e36
@ -104,7 +104,7 @@ func getUploadConfigPhaseFlags() []string {
|
||||
|
||||
// runUploadKubeadmConfig uploads the kubeadm configuration to a ConfigMap
|
||||
func runUploadKubeadmConfig(c workflow.RunData) error {
|
||||
cfg, client, err := getUploadConfigData(c)
|
||||
cfg, client, _, err := getUploadConfigData(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -118,13 +118,13 @@ func runUploadKubeadmConfig(c workflow.RunData) error {
|
||||
|
||||
// runUploadKubeletConfig uploads the kubelet configuration to a ConfigMap
|
||||
func runUploadKubeletConfig(c workflow.RunData) error {
|
||||
cfg, client, err := getUploadConfigData(c)
|
||||
cfg, client, patchesDir, err := getUploadConfigData(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
klog.V(1).Infoln("[upload-config] Uploading the kubelet component config to a ConfigMap")
|
||||
if err = kubeletphase.CreateConfigMap(&cfg.ClusterConfiguration, client); err != nil {
|
||||
if err = kubeletphase.CreateConfigMap(&cfg.ClusterConfiguration, patchesDir, client); err != nil {
|
||||
return errors.Wrap(err, "error creating kubelet configuration ConfigMap")
|
||||
}
|
||||
|
||||
@ -135,15 +135,15 @@ func runUploadKubeletConfig(c workflow.RunData) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func getUploadConfigData(c workflow.RunData) (*kubeadmapi.InitConfiguration, clientset.Interface, error) {
|
||||
func getUploadConfigData(c workflow.RunData) (*kubeadmapi.InitConfiguration, clientset.Interface, string, error) {
|
||||
data, ok := c.(InitData)
|
||||
if !ok {
|
||||
return nil, nil, errors.New("upload-config phase invoked with an invalid data struct")
|
||||
return nil, nil, "", errors.New("upload-config phase invoked with an invalid data struct")
|
||||
}
|
||||
cfg := data.Cfg()
|
||||
client, err := data.Client()
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
return nil, nil, "", err
|
||||
}
|
||||
return cfg, client, err
|
||||
return cfg, client, data.PatchesDir(), err
|
||||
}
|
||||
|
@ -68,10 +68,7 @@ func WriteConfigToDisk(cfg *kubeadmapi.ClusterConfiguration, kubeletDir, patches
|
||||
|
||||
// CreateConfigMap creates a ConfigMap with the generic kubelet configuration.
|
||||
// Used at "kubeadm init" and "kubeadm upgrade" time
|
||||
func CreateConfigMap(cfg *kubeadmapi.ClusterConfiguration, client clientset.Interface) error {
|
||||
configMapName := kubeadmconstants.KubeletBaseConfigurationConfigMap
|
||||
fmt.Printf("[kubelet] Creating a ConfigMap %q in namespace %s with the configuration for the kubelets in the cluster\n", configMapName, metav1.NamespaceSystem)
|
||||
|
||||
func CreateConfigMap(cfg *kubeadmapi.ClusterConfiguration, patchesDir string, client clientset.Interface) error {
|
||||
kubeletCfg, ok := cfg.ComponentConfigs[componentconfigs.KubeletGroup]
|
||||
if !ok {
|
||||
return errors.New("no kubelet component config found in the active component config set")
|
||||
@ -82,6 +79,17 @@ func CreateConfigMap(cfg *kubeadmapi.ClusterConfiguration, client clientset.Inte
|
||||
return err
|
||||
}
|
||||
|
||||
// Apply patches to the KubeletConfiguration
|
||||
if len(patchesDir) != 0 {
|
||||
kubeletBytes, err = applyKubeletConfigPatches(kubeletBytes, patchesDir, os.Stdout)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "could not apply patches to the KubeletConfiguration")
|
||||
}
|
||||
}
|
||||
|
||||
configMapName := kubeadmconstants.KubeletBaseConfigurationConfigMap
|
||||
fmt.Printf("[kubelet] Creating a ConfigMap %q in namespace %s with the configuration for the kubelets in the cluster\n", configMapName, metav1.NamespaceSystem)
|
||||
|
||||
configMap := &v1.ConfigMap{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: configMapName,
|
||||
|
@ -58,7 +58,7 @@ func TestCreateConfigMap(t *testing.T) {
|
||||
t.Fatalf("unexpected failure when defaulting InitConfiguration: %v", err)
|
||||
}
|
||||
|
||||
if err := CreateConfigMap(&internalcfg.ClusterConfiguration, client); err != nil {
|
||||
if err := CreateConfigMap(&internalcfg.ClusterConfiguration, "", client); err != nil {
|
||||
t.Errorf("CreateConfigMap: unexpected error %v", err)
|
||||
}
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ func PerformPostUpgradeTasks(client clientset.Interface, cfg *kubeadmapi.InitCon
|
||||
}
|
||||
|
||||
// Create the new, version-branched kubelet ComponentConfig ConfigMap
|
||||
if err := kubeletphase.CreateConfigMap(&cfg.ClusterConfiguration, client); err != nil {
|
||||
if err := kubeletphase.CreateConfigMap(&cfg.ClusterConfiguration, patchesDir, client); err != nil {
|
||||
errs = append(errs, errors.Wrap(err, "error creating kubelet configuration ConfigMap"))
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user