internal/kubelet/daemon.go (62 lines of code) (raw):
package kubelet
import (
"context"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/eks-hybrid/internal/api"
"github.com/aws/eks-hybrid/internal/daemon"
)
const KubeletDaemonName = "kubelet"
var _ daemon.Daemon = &kubelet{}
type kubelet struct {
daemonManager daemon.DaemonManager
awsConfig *aws.Config
nodeConfig *api.NodeConfig
// environment variables to write for kubelet
environment map[string]string
// kubelet config flags without leading dashes
flags map[string]string
}
func NewKubeletDaemon(daemonManager daemon.DaemonManager, cfg *api.NodeConfig, awsConfig *aws.Config) daemon.Daemon {
return &kubelet{
daemonManager: daemonManager,
nodeConfig: cfg,
awsConfig: awsConfig,
environment: make(map[string]string),
flags: make(map[string]string),
}
}
func (k *kubelet) Configure() error {
if err := k.writeKubeletConfig(); err != nil {
return err
}
if err := k.writeKubeconfig(); err != nil {
return err
}
if err := k.writeImageCredentialProviderConfig(); err != nil {
return err
}
if err := writeClusterCaCert(k.nodeConfig.Spec.Cluster.CertificateAuthority); err != nil {
return err
}
if err := k.writeKubeletEnvironment(); err != nil {
return err
}
return nil
}
func (k *kubelet) EnsureRunning(ctx context.Context) error {
if err := k.daemonManager.DaemonReload(); err != nil {
return err
}
err := k.daemonManager.EnableDaemon(KubeletDaemonName)
if err != nil {
return err
}
return k.daemonManager.RestartDaemon(ctx, KubeletDaemonName)
}
func (k *kubelet) PostLaunch() error {
return nil
}
func (k *kubelet) Stop() error {
return k.daemonManager.StopDaemon(KubeletDaemonName)
}
func (k *kubelet) Name() string {
return KubeletDaemonName
}