Matches ctl version to upstream

This commit is contained in:
2026-03-28 20:28:22 +08:00
parent 848daefffe
commit ecceff225f
25 changed files with 591 additions and 159 deletions

View File

@@ -6,8 +6,8 @@ import (
"os"
"strings"
monov1alpha1 "undecided.project/monok8s/pkg/apis/monok8s/v1alpha1"
"gopkg.in/yaml.v3"
monov1alpha1 "undecided.project/monok8s/pkg/apis/monok8s/v1alpha1"
)
const EnvVar = "MONOKSCONFIG"
@@ -62,11 +62,8 @@ func ApplyDefaults(cfg *monov1alpha1.MonoKSConfig) {
if cfg.Spec.ContainerRuntimeEndpoint == "" {
cfg.Spec.ContainerRuntimeEndpoint = "unix:///var/run/crio/crio.sock"
}
if cfg.Spec.BootstrapMode == "" {
cfg.Spec.BootstrapMode = "init"
}
if cfg.Spec.JoinKind == "" {
cfg.Spec.JoinKind = "worker"
if cfg.Spec.ClusterRole == "" {
cfg.Spec.ClusterRole = "control-plane"
}
if cfg.Spec.CNIPlugin == "" {
cfg.Spec.CNIPlugin = "none"
@@ -102,30 +99,26 @@ func Validate(cfg *monov1alpha1.MonoKSConfig) error {
if !strings.Contains(cfg.Spec.Network.ManagementCIDR, "/") {
problems = append(problems, "spec.network.managementCIDR must include a CIDR prefix")
}
if cfg.Spec.BootstrapMode != "init" && cfg.Spec.BootstrapMode != "join" {
problems = append(problems, "spec.bootstrapMode must be init or join")
}
if cfg.Spec.JoinKind != "worker" && cfg.Spec.JoinKind != "control-plane" {
problems = append(problems, "spec.joinKind must be worker or control-plane")
if cfg.Spec.ClusterRole != "control-plane" && cfg.Spec.ClusterRole != "worker" {
problems = append(problems, "spec.clusterRole can either be control-plane or worker")
}
for _, ns := range cfg.Spec.Network.DNSNameservers {
if ns == "10.96.0.10" {
problems = append(problems, "spec.network.dnsNameservers must not include cluster DNS service IP 10.96.0.10")
}
}
if cfg.Spec.BootstrapMode == "join" {
if cfg.Spec.ClusterRole == "worker" {
if cfg.Spec.APIServerEndpoint == "" {
problems = append(problems, "spec.apiServerEndpoint is required for join mode")
problems = append(problems, "spec.apiServerEndpoint is required to join a cluster")
}
if cfg.Spec.BootstrapToken == "" {
problems = append(problems, "spec.bootstrapToken is required for join mode")
problems = append(problems, "spec.bootstrapToken is required to join a cluster")
}
if cfg.Spec.DiscoveryTokenCACertHash == "" {
problems = append(problems, "spec.discoveryTokenCACertHash is required for join mode")
}
if cfg.Spec.JoinKind == "control-plane" && cfg.Spec.ControlPlaneCertKey == "" {
problems = append(problems, "spec.controlPlaneCertKey is required for control-plane join")
problems = append(problems, "spec.discoveryTokenCACertHash is required to join a cluster")
}
} else if !cfg.Spec.InitControlPlane && cfg.Spec.ControlPlaneCertKey == "" {
problems = append(problems, "spec.controlPlaneCertKey is required for control-plane join")
}
if len(problems) > 0 {
return errors.New(strings.Join(problems, "; "))