mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-25 12:17:52 +00:00
kubeadm: Remove ClusterConfiguration from InitConfiguration in v1beta2
Ever since v1alpha3, InitConfiguration is containing ClusterConfiguration embedded in it. This was done to mimic the internal InitConfiguration, which in turn is used throughout the kubeadm code base as if it is the old MasterConfiguration of v1alpha2. This, however, is confusing to users who vendor in kubeadm as the embedded ClusterConfiguration inside InitConfiguration is not marshalled to YAML. For this to happen, special care must be taken for the ClusterConfiguration field to marshalled separately. Thus, to make things smooth for users and to reduce third party exposure to technical debt, this change removes ClusterConfiguration embedding from InitConfiguration. Signed-off-by: Rostislav M. Georgiev <rostislavg@vmware.com>
This commit is contained in:
@@ -125,11 +125,9 @@ func TestLowercaseSANs(t *testing.T) {
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
cfg := &kubeadmapiv1beta2.InitConfiguration{
|
||||
ClusterConfiguration: kubeadmapiv1beta2.ClusterConfiguration{
|
||||
APIServer: kubeadmapiv1beta2.APIServer{
|
||||
CertSANs: test.in,
|
||||
},
|
||||
cfg := &kubeadmapiv1beta2.ClusterConfiguration{
|
||||
APIServer: kubeadmapiv1beta2.APIServer{
|
||||
CertSANs: test.in,
|
||||
},
|
||||
}
|
||||
|
||||
|
@@ -162,13 +162,16 @@ func SetClusterDynamicDefaults(cfg *kubeadmapi.ClusterConfiguration, advertiseAd
|
||||
}
|
||||
|
||||
// DefaultedInitConfiguration takes a versioned init config (often populated by flags), defaults it and converts it into internal InitConfiguration
|
||||
func DefaultedInitConfiguration(defaultversionedcfg *kubeadmapiv1beta2.InitConfiguration) (*kubeadmapi.InitConfiguration, error) {
|
||||
func DefaultedInitConfiguration(versionedInitCfg *kubeadmapiv1beta2.InitConfiguration, versionedClusterCfg *kubeadmapiv1beta2.ClusterConfiguration) (*kubeadmapi.InitConfiguration, error) {
|
||||
internalcfg := &kubeadmapi.InitConfiguration{}
|
||||
|
||||
// Takes passed flags into account; the defaulting is executed once again enforcing assignment of
|
||||
// static default values to cfg only for values not provided with flags
|
||||
kubeadmscheme.Scheme.Default(defaultversionedcfg)
|
||||
kubeadmscheme.Scheme.Convert(defaultversionedcfg, internalcfg, nil)
|
||||
kubeadmscheme.Scheme.Default(versionedInitCfg)
|
||||
kubeadmscheme.Scheme.Convert(versionedInitCfg, internalcfg, nil)
|
||||
|
||||
kubeadmscheme.Scheme.Default(versionedClusterCfg)
|
||||
kubeadmscheme.Scheme.Convert(versionedClusterCfg, &internalcfg.ClusterConfiguration, nil)
|
||||
|
||||
// Applies dynamic defaults to settings not provided with flags
|
||||
if err := SetInitDynamicDefaults(internalcfg); err != nil {
|
||||
@@ -194,18 +197,18 @@ func LoadInitConfigurationFromFile(cfgPath string) (*kubeadmapi.InitConfiguratio
|
||||
}
|
||||
|
||||
// LoadOrDefaultInitConfiguration takes a path to a config file and a versioned configuration that can serve as the default config
|
||||
// If cfgPath is specified, defaultversionedcfg will always get overridden. Otherwise, the default config (often populated by flags) will be used.
|
||||
// Then the external, versioned configuration is defaulted and converted to the internal type.
|
||||
// If cfgPath is specified, the versioned configs will always get overridden with the one in the file (specified by cfgPath).
|
||||
// The the external, versioned configuration is defaulted and converted to the internal type.
|
||||
// Right thereafter, the configuration is defaulted again with dynamic values (like IP addresses of a machine, etc)
|
||||
// Lastly, the internal config is validated and returned.
|
||||
func LoadOrDefaultInitConfiguration(cfgPath string, defaultversionedcfg *kubeadmapiv1beta2.InitConfiguration) (*kubeadmapi.InitConfiguration, error) {
|
||||
func LoadOrDefaultInitConfiguration(cfgPath string, versionedInitCfg *kubeadmapiv1beta2.InitConfiguration, versionedClusterCfg *kubeadmapiv1beta2.ClusterConfiguration) (*kubeadmapi.InitConfiguration, error) {
|
||||
if cfgPath != "" {
|
||||
// Loads configuration from config file, if provided
|
||||
// Nb. --config overrides command line flags
|
||||
return LoadInitConfigurationFromFile(cfgPath)
|
||||
}
|
||||
|
||||
return DefaultedInitConfiguration(defaultversionedcfg)
|
||||
return DefaultedInitConfiguration(versionedInitCfg, versionedClusterCfg)
|
||||
}
|
||||
|
||||
// BytesToInitConfiguration converts a byte slice to an internal, defaulted and validated InitConfiguration object.
|
||||
|
Reference in New Issue
Block a user