mirror of https://github.com/k3s-io/k3s
Merge pull request #72581 from liggitt/runtime-config-warning
preserve prior behavior of ignoring invalid --runtime-config keyspull/564/head
commit
988c9d619e
|
@ -14,6 +14,7 @@ go_library(
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/server/storage:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/server/storage:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/flag:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/util/flag:go_default_library",
|
||||||
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
serverstore "k8s.io/apiserver/pkg/server/storage"
|
serverstore "k8s.io/apiserver/pkg/server/storage"
|
||||||
utilflag "k8s.io/apiserver/pkg/util/flag"
|
utilflag "k8s.io/apiserver/pkg/util/flag"
|
||||||
|
"k8s.io/klog"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GroupVersionRegistry provides access to registered group versions.
|
// GroupVersionRegistry provides access to registered group versions.
|
||||||
|
@ -106,7 +107,8 @@ func MergeAPIResourceConfigs(
|
||||||
// individual resource enablement/disablement is only supported in the extensions/v1beta1 API group for legacy reasons.
|
// individual resource enablement/disablement is only supported in the extensions/v1beta1 API group for legacy reasons.
|
||||||
// all other API groups are expected to contain coherent sets of resources that are enabled/disabled together.
|
// all other API groups are expected to contain coherent sets of resources that are enabled/disabled together.
|
||||||
if len(tokens) > 2 && (groupVersion != schema.GroupVersion{Group: "extensions", Version: "v1beta1"}) {
|
if len(tokens) > 2 && (groupVersion != schema.GroupVersion{Group: "extensions", Version: "v1beta1"}) {
|
||||||
return nil, fmt.Errorf("invalid key %s, individual resource enablement/disablement is not supported in %s", key, groupVersion.String())
|
klog.Warningf("ignoring invalid key %s, individual resource enablement/disablement is not supported in %s, and will prevent starting in future releases", key, groupVersion.String())
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exclude group not registered into the registry.
|
// Exclude group not registered into the registry.
|
||||||
|
|
|
@ -117,11 +117,6 @@ func TestParseRuntimeConfig(t *testing.T) {
|
||||||
expectedAPIConfig: func() *serverstore.ResourceConfig {
|
expectedAPIConfig: func() *serverstore.ResourceConfig {
|
||||||
config := newFakeAPIResourceConfigSource()
|
config := newFakeAPIResourceConfigSource()
|
||||||
config.EnableVersions(scheme.PrioritizedVersionsAllGroups()...)
|
config.EnableVersions(scheme.PrioritizedVersionsAllGroups()...)
|
||||||
config.EnableResources(
|
|
||||||
extensionsapiv1beta1.SchemeGroupVersion.WithResource("deployments"),
|
|
||||||
extensionsapiv1beta1.SchemeGroupVersion.WithResource("replicasets"),
|
|
||||||
extensionsapiv1beta1.SchemeGroupVersion.WithResource("daemonsets"),
|
|
||||||
)
|
|
||||||
return config
|
return config
|
||||||
},
|
},
|
||||||
err: false,
|
err: false,
|
||||||
|
@ -138,7 +133,6 @@ func TestParseRuntimeConfig(t *testing.T) {
|
||||||
expectedAPIConfig: func() *serverstore.ResourceConfig {
|
expectedAPIConfig: func() *serverstore.ResourceConfig {
|
||||||
config := newFakeAPIResourceConfigSource()
|
config := newFakeAPIResourceConfigSource()
|
||||||
config.DisableVersions(extensionsapiv1beta1.SchemeGroupVersion)
|
config.DisableVersions(extensionsapiv1beta1.SchemeGroupVersion)
|
||||||
config.DisableResources(extensionsapiv1beta1.SchemeGroupVersion.WithResource("ingresses"))
|
|
||||||
return config
|
return config
|
||||||
},
|
},
|
||||||
err: false,
|
err: false,
|
||||||
|
@ -197,11 +191,9 @@ func TestParseRuntimeConfig(t *testing.T) {
|
||||||
return newFakeAPIResourceConfigSource()
|
return newFakeAPIResourceConfigSource()
|
||||||
},
|
},
|
||||||
expectedAPIConfig: func() *serverstore.ResourceConfig {
|
expectedAPIConfig: func() *serverstore.ResourceConfig {
|
||||||
config := newFakeAPIResourceConfigSource()
|
return newFakeAPIResourceConfigSource()
|
||||||
config.DisableVersions(extensionsapiv1beta1.SchemeGroupVersion)
|
|
||||||
return config
|
|
||||||
},
|
},
|
||||||
err: true,
|
err: false, // no error for backwards compatibility
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for index, test := range testCases {
|
for index, test := range testCases {
|
||||||
|
|
|
@ -38,22 +38,18 @@ func NewResourceConfig() *ResourceConfig {
|
||||||
return &ResourceConfig{GroupVersionConfigs: map[schema.GroupVersion]bool{}, ResourceConfigs: map[schema.GroupVersionResource]bool{}}
|
return &ResourceConfig{GroupVersionConfigs: map[schema.GroupVersion]bool{}, ResourceConfigs: map[schema.GroupVersionResource]bool{}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DisableAll disables all group/versions. It does not modify individual resource enablement/disablement.
|
||||||
func (o *ResourceConfig) DisableAll() {
|
func (o *ResourceConfig) DisableAll() {
|
||||||
for k := range o.GroupVersionConfigs {
|
for k := range o.GroupVersionConfigs {
|
||||||
o.GroupVersionConfigs[k] = false
|
o.GroupVersionConfigs[k] = false
|
||||||
}
|
}
|
||||||
for k := range o.ResourceConfigs {
|
|
||||||
o.ResourceConfigs[k] = false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EnableAll enables all group/versions. It does not modify individual resource enablement/disablement.
|
||||||
func (o *ResourceConfig) EnableAll() {
|
func (o *ResourceConfig) EnableAll() {
|
||||||
for k := range o.GroupVersionConfigs {
|
for k := range o.GroupVersionConfigs {
|
||||||
o.GroupVersionConfigs[k] = true
|
o.GroupVersionConfigs[k] = true
|
||||||
}
|
}
|
||||||
for k := range o.ResourceConfigs {
|
|
||||||
o.ResourceConfigs[k] = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DisableVersions disables the versions entirely.
|
// DisableVersions disables the versions entirely.
|
||||||
|
|
|
@ -98,26 +98,59 @@ func TestDisabledResource(t *testing.T) {
|
||||||
t.Errorf("expected enabled for %v, from %v", g2v1rEnabled, config)
|
t.Errorf("expected enabled for %v, from %v", g2v1rEnabled, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable all enables specific resources
|
// DisableAll() only disables to the group/version level for compatibility
|
||||||
|
// corresponds to --runtime-config=api/all=false
|
||||||
|
config.DisableAll()
|
||||||
|
if config.ResourceEnabled(g1v1rEnabled) {
|
||||||
|
t.Errorf("expected disabled for %v, from %v", g1v1rEnabled, config)
|
||||||
|
}
|
||||||
|
if config.ResourceEnabled(g1v2rEnabled) {
|
||||||
|
t.Errorf("expected disabled for %v, from %v", g1v2rEnabled, config)
|
||||||
|
}
|
||||||
|
if config.ResourceEnabled(g2v1rEnabled) {
|
||||||
|
t.Errorf("expected disabled for %v, from %v", g2v1rEnabled, config)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DisableAll() only disables to the group/version level for compatibility
|
||||||
|
// corresponds to --runtime-config=api/all=false,g1/v1=true
|
||||||
|
config.DisableAll()
|
||||||
|
config.EnableVersions(g1v1)
|
||||||
|
if !config.ResourceEnabled(g1v1rEnabled) {
|
||||||
|
t.Errorf("expected enabled for %v, from %v", g1v1rEnabled, config)
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnableAll() only enables to the group/version level for compatibility
|
||||||
config.EnableAll()
|
config.EnableAll()
|
||||||
|
|
||||||
// all resources under g1v1 are now enabled
|
// all unspecified or enabled resources under all groups now enabled
|
||||||
if !config.ResourceEnabled(g1v1rUnspecified) {
|
if !config.ResourceEnabled(g1v1rUnspecified) {
|
||||||
t.Errorf("expected enabled for %v, from %v", g1v1rUnspecified, config)
|
t.Errorf("expected enabled for %v, from %v", g1v1rUnspecified, config)
|
||||||
}
|
}
|
||||||
if !config.ResourceEnabled(g1v1rEnabled) {
|
if !config.ResourceEnabled(g1v1rEnabled) {
|
||||||
t.Errorf("expected enabled for %v, from %v", g1v1rEnabled, config)
|
t.Errorf("expected enabled for %v, from %v", g1v1rEnabled, config)
|
||||||
}
|
}
|
||||||
if !config.ResourceEnabled(g1v1rDisabled) {
|
if !config.ResourceEnabled(g1v2rUnspecified) {
|
||||||
t.Errorf("expected enabled for %v, from %v", g1v1rDisabled, config)
|
t.Errorf("expected enabled for %v, from %v", g1v2rUnspecified, config)
|
||||||
|
}
|
||||||
|
if !config.ResourceEnabled(g1v2rEnabled) {
|
||||||
|
t.Errorf("expected enabled for %v, from %v", g1v2rEnabled, config)
|
||||||
|
}
|
||||||
|
if !config.ResourceEnabled(g2v1rUnspecified) {
|
||||||
|
t.Errorf("expected enabled for %v, from %v", g2v1rUnspecified, config)
|
||||||
|
}
|
||||||
|
if !config.ResourceEnabled(g2v1rEnabled) {
|
||||||
|
t.Errorf("expected enabled for %v, from %v", g2v1rEnabled, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
// previously disabled resources are now enabled
|
// previously disabled resources are still disabled
|
||||||
if !config.ResourceEnabled(g1v2rDisabled) {
|
if config.ResourceEnabled(g1v1rDisabled) {
|
||||||
t.Errorf("expected enabled for %v, from %v", g1v2rDisabled, config)
|
t.Errorf("expected disabled for %v, from %v", g1v1rDisabled, config)
|
||||||
}
|
}
|
||||||
if !config.ResourceEnabled(g2v1rDisabled) {
|
if config.ResourceEnabled(g1v2rDisabled) {
|
||||||
t.Errorf("expected enabled for %v, from %v", g2v1rDisabled, config)
|
t.Errorf("expected disabled for %v, from %v", g1v2rDisabled, config)
|
||||||
|
}
|
||||||
|
if config.ResourceEnabled(g2v1rDisabled) {
|
||||||
|
t.Errorf("expected disabled for %v, from %v", g2v1rDisabled, config)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue