From 54d6db119196815d2c1ca5ccdf23d24fb185829f Mon Sep 17 00:00:00 2001 From: xiangpengzhao Date: Fri, 17 Nov 2017 11:36:53 +0800 Subject: [PATCH] Make updateNodeWithConfigMap public --- cmd/kubeadm/app/cmd/join.go | 7 +- cmd/kubeadm/app/phases/kubelet/kubelet.go | 83 ++++++++++------------- 2 files changed, 42 insertions(+), 48 deletions(-) diff --git a/cmd/kubeadm/app/cmd/join.go b/cmd/kubeadm/app/cmd/join.go index 4656b8cda85..5ec77b15e27 100644 --- a/cmd/kubeadm/app/cmd/join.go +++ b/cmd/kubeadm/app/cmd/join.go @@ -239,8 +239,13 @@ func (j *Join) Run(out io.Writer) error { // NOTE: flag "--dynamic-config-dir" should be specified in /etc/systemd/system/kubelet.service.d/10-kubeadm.conf if features.Enabled(j.cfg.FeatureGates, features.DynamicKubeletConfig) { + client, err := kubeconfigutil.ClientSetFromFile(kubeadmconstants.GetAdminKubeConfigPath()) + if err != nil { + return err + } + // Update the node with remote base kubelet configuration - if err := kubeletphase.UpdateNodeWithBaseKubeletConfiguration(j.cfg); err != nil { + if err := kubeletphase.UpdateNodeWithConfigMap(client, j.cfg.NodeName); err != nil { return err } } diff --git a/cmd/kubeadm/app/phases/kubelet/kubelet.go b/cmd/kubeadm/app/phases/kubelet/kubelet.go index fb05785e3c0..a3799b9d04c 100644 --- a/cmd/kubeadm/app/phases/kubelet/kubelet.go +++ b/cmd/kubeadm/app/phases/kubelet/kubelet.go @@ -31,7 +31,6 @@ import ( kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" "k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient" - kubeconfigutil "k8s.io/kubernetes/cmd/kubeadm/app/util/kubeconfig" rbachelper "k8s.io/kubernetes/pkg/apis/rbac/v1" kubeletconfigscheme "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme" kubeletconfigv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1alpha1" @@ -64,54 +63,11 @@ func CreateBaseKubeletConfiguration(cfg *kubeadmapi.MasterConfiguration, client return fmt.Errorf("error creating base kubelet configmap RBAC rules: %v", err) } - return updateNodeWithConfigMap(client, cfg.NodeName) + return UpdateNodeWithConfigMap(client, cfg.NodeName) } -// UpdateNodeWithBaseKubeletConfiguration updates node with remote base kubelet configuration -func UpdateNodeWithBaseKubeletConfiguration(cfg *kubeadmapi.NodeConfiguration) error { - client, err := kubeconfigutil.ClientSetFromFile(kubeadmconstants.GetAdminKubeConfigPath()) - if err != nil { - return err - } - - return updateNodeWithConfigMap(client, cfg.NodeName) -} - -// createKubeletBaseConfigMapRBACRules creates the RBAC rules for exposing the base kubelet ConfigMap in the kube-system namespace to unauthenticated users -func createKubeletBaseConfigMapRBACRules(client clientset.Interface) error { - if err := apiclient.CreateOrUpdateRole(client, &rbac.Role{ - ObjectMeta: metav1.ObjectMeta{ - Name: kubeadmconstants.KubeletBaseConfigMapRoleName, - Namespace: metav1.NamespaceSystem, - }, - Rules: []rbac.PolicyRule{ - rbachelper.NewRule("get").Groups("").Resources("configmaps").Names(kubeadmconstants.KubeletBaseConfigurationConfigMap).RuleOrDie(), - }, - }); err != nil { - return err - } - - return apiclient.CreateOrUpdateRoleBinding(client, &rbac.RoleBinding{ - ObjectMeta: metav1.ObjectMeta{ - Name: kubeadmconstants.KubeletBaseConfigMapRoleName, - Namespace: metav1.NamespaceSystem, - }, - RoleRef: rbac.RoleRef{ - APIGroup: rbac.GroupName, - Kind: "Role", - Name: kubeadmconstants.KubeletBaseConfigMapRoleName, - }, - Subjects: []rbac.Subject{ - { - Kind: "Group", - Name: kubeadmconstants.NodesGroup, - }, - }, - }) -} - -// updateNodeWithConfigMap updates node ConfigSource with KubeletBaseConfigurationConfigMap -func updateNodeWithConfigMap(client clientset.Interface, nodeName string) error { +// UpdateNodeWithConfigMap updates node ConfigSource with KubeletBaseConfigurationConfigMap +func UpdateNodeWithConfigMap(client clientset.Interface, nodeName string) error { node, err := client.CoreV1().Nodes().Get(nodeName, metav1.GetOptions{}) if err != nil { return err @@ -148,3 +104,36 @@ func updateNodeWithConfigMap(client clientset.Interface, nodeName string) error return nil } + +// createKubeletBaseConfigMapRBACRules creates the RBAC rules for exposing the base kubelet ConfigMap in the kube-system namespace to unauthenticated users +func createKubeletBaseConfigMapRBACRules(client clientset.Interface) error { + if err := apiclient.CreateOrUpdateRole(client, &rbac.Role{ + ObjectMeta: metav1.ObjectMeta{ + Name: kubeadmconstants.KubeletBaseConfigMapRoleName, + Namespace: metav1.NamespaceSystem, + }, + Rules: []rbac.PolicyRule{ + rbachelper.NewRule("get").Groups("").Resources("configmaps").Names(kubeadmconstants.KubeletBaseConfigurationConfigMap).RuleOrDie(), + }, + }); err != nil { + return err + } + + return apiclient.CreateOrUpdateRoleBinding(client, &rbac.RoleBinding{ + ObjectMeta: metav1.ObjectMeta{ + Name: kubeadmconstants.KubeletBaseConfigMapRoleName, + Namespace: metav1.NamespaceSystem, + }, + RoleRef: rbac.RoleRef{ + APIGroup: rbac.GroupName, + Kind: "Role", + Name: kubeadmconstants.KubeletBaseConfigMapRoleName, + }, + Subjects: []rbac.Subject{ + { + Kind: "Group", + Name: kubeadmconstants.NodesGroup, + }, + }, + }) +}