mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Add option to bootstrap kubeconfig for hollow-node
This commit is contained in:
parent
f49a15ae50
commit
27336259ba
@ -17,6 +17,7 @@ limitations under the License.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
goflag "flag"
|
goflag "flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -30,6 +31,7 @@ import (
|
|||||||
|
|
||||||
v1 "k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/api/resource"
|
"k8s.io/apimachinery/pkg/api/resource"
|
||||||
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
@ -45,6 +47,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||||
"k8s.io/kubernetes/pkg/cluster/ports"
|
"k8s.io/kubernetes/pkg/cluster/ports"
|
||||||
cadvisortest "k8s.io/kubernetes/pkg/kubelet/cadvisor/testing"
|
cadvisortest "k8s.io/kubernetes/pkg/kubelet/cadvisor/testing"
|
||||||
|
"k8s.io/kubernetes/pkg/kubelet/certificate/bootstrap"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/cm"
|
"k8s.io/kubernetes/pkg/kubelet/cm"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/cri/remote"
|
"k8s.io/kubernetes/pkg/kubelet/cri/remote"
|
||||||
fakeremote "k8s.io/kubernetes/pkg/kubelet/cri/remote/fake"
|
fakeremote "k8s.io/kubernetes/pkg/kubelet/cri/remote/fake"
|
||||||
@ -55,21 +58,23 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type hollowNodeConfig struct {
|
type hollowNodeConfig struct {
|
||||||
KubeconfigPath string
|
KubeconfigPath string
|
||||||
KubeletPort int
|
BootstrapKubeconfigPath string
|
||||||
KubeletReadOnlyPort int
|
CertDirectory string
|
||||||
Morph string
|
KubeletPort int
|
||||||
NodeName string
|
KubeletReadOnlyPort int
|
||||||
ServerPort int
|
Morph string
|
||||||
ContentType string
|
NodeName string
|
||||||
UseRealProxier bool
|
ServerPort int
|
||||||
ProxierSyncPeriod time.Duration
|
ContentType string
|
||||||
ProxierMinSyncPeriod time.Duration
|
UseRealProxier bool
|
||||||
NodeLabels map[string]string
|
ProxierSyncPeriod time.Duration
|
||||||
RegisterWithTaints []v1.Taint
|
ProxierMinSyncPeriod time.Duration
|
||||||
MaxPods int
|
NodeLabels map[string]string
|
||||||
ExtendedResources map[string]string
|
RegisterWithTaints []v1.Taint
|
||||||
UseHostImageService bool
|
MaxPods int
|
||||||
|
ExtendedResources map[string]string
|
||||||
|
UseHostImageService bool
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -83,6 +88,8 @@ var knownMorphs = sets.NewString("kubelet", "proxy")
|
|||||||
|
|
||||||
func (c *hollowNodeConfig) addFlags(fs *pflag.FlagSet) {
|
func (c *hollowNodeConfig) addFlags(fs *pflag.FlagSet) {
|
||||||
fs.StringVar(&c.KubeconfigPath, "kubeconfig", "/kubeconfig/kubeconfig", "Path to kubeconfig file.")
|
fs.StringVar(&c.KubeconfigPath, "kubeconfig", "/kubeconfig/kubeconfig", "Path to kubeconfig file.")
|
||||||
|
fs.StringVar(&c.BootstrapKubeconfigPath, "bootstrap-kubeconfig", "", "Path to bootstrap kubeconfig file.")
|
||||||
|
fs.StringVar(&c.CertDirectory, "cert-dir", "/etc/srv/", "Path to cert directory for bootstraping.")
|
||||||
fs.IntVar(&c.KubeletPort, "kubelet-port", ports.KubeletPort, "Port on which HollowKubelet should be listening.")
|
fs.IntVar(&c.KubeletPort, "kubelet-port", ports.KubeletPort, "Port on which HollowKubelet should be listening.")
|
||||||
fs.IntVar(&c.KubeletReadOnlyPort, "kubelet-read-only-port", ports.KubeletReadOnlyPort, "Read-only port on which Kubelet is listening.")
|
fs.IntVar(&c.KubeletReadOnlyPort, "kubelet-read-only-port", ports.KubeletReadOnlyPort, "Read-only port on which Kubelet is listening.")
|
||||||
fs.StringVar(&c.NodeName, "name", "fake-node", "Name of this Hollow Node.")
|
fs.StringVar(&c.NodeName, "name", "fake-node", "Name of this Hollow Node.")
|
||||||
@ -116,6 +123,13 @@ func (c *hollowNodeConfig) createClientConfigFromFile() (*restclient.Config, err
|
|||||||
return config, nil
|
return config, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *hollowNodeConfig) bootstrapClientConfig() error {
|
||||||
|
if c.BootstrapKubeconfigPath != "" {
|
||||||
|
return bootstrap.LoadClientCert(context.TODO(), c.KubeconfigPath, c.BootstrapKubeconfigPath, c.CertDirectory, types.NodeName(c.NodeName))
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (c *hollowNodeConfig) createHollowKubeletOptions() *kubemark.HollowKubletOptions {
|
func (c *hollowNodeConfig) createHollowKubeletOptions() *kubemark.HollowKubletOptions {
|
||||||
return &kubemark.HollowKubletOptions{
|
return &kubemark.HollowKubletOptions{
|
||||||
NodeName: c.NodeName,
|
NodeName: c.NodeName,
|
||||||
@ -175,6 +189,10 @@ func run(cmd *cobra.Command, config *hollowNodeConfig) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// create a client to communicate with API server.
|
// create a client to communicate with API server.
|
||||||
|
err := config.bootstrapClientConfig()
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("Failed to bootstrap, error: %w. Exiting", err)
|
||||||
|
}
|
||||||
clientConfig, err := config.createClientConfigFromFile()
|
clientConfig, err := config.createClientConfigFromFile()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Failed to create a ClientConfig, error: %w. Exiting", err)
|
return fmt.Errorf("Failed to create a ClientConfig, error: %w. Exiting", err)
|
||||||
|
Loading…
Reference in New Issue
Block a user