mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-07-17 11:28:58 +00:00
Make API group enablement accurate for generic API server
This commit is contained in:
@@ -80,7 +80,7 @@ func NewConfig(opts options.CompletedOptions) (*Config, error) {
|
||||
genericConfig, versionedInformers, storageFactory, err := controlplaneapiserver.BuildGenericConfig(
|
||||
opts,
|
||||
[]*runtime.Scheme{legacyscheme.Scheme, apiextensionsapiserver.Scheme, aggregatorscheme.Scheme},
|
||||
controlplane.DefaultAPIResourceConfigSource(),
|
||||
controlplane.DefaultGenericAPIResourceConfigSource(),
|
||||
generatedopenapi.GetOpenAPIDefinitions,
|
||||
)
|
||||
if err != nil {
|
||||
|
||||
@@ -443,69 +443,88 @@ func (c CompletedConfig) StorageProviders(client *kubernetes.Clientset) ([]contr
|
||||
}
|
||||
|
||||
var (
|
||||
// stableAPIGroupVersionsEnabledByDefault is a list of our stable versions.
|
||||
stableAPIGroupVersionsEnabledByDefault = []schema.GroupVersion{
|
||||
// genericStableAPIGroupVersionsEnabledByDefault is a list of our stable versions for API groups provided by GenericStorageProviders.
|
||||
genericStableAPIGroupVersionsEnabledByDefault = []schema.GroupVersion{
|
||||
admissionregistrationv1.SchemeGroupVersion,
|
||||
apiv1.SchemeGroupVersion,
|
||||
appsv1.SchemeGroupVersion,
|
||||
authenticationv1.SchemeGroupVersion,
|
||||
authorizationapiv1.SchemeGroupVersion,
|
||||
certificatesapiv1.SchemeGroupVersion,
|
||||
coordinationapiv1.SchemeGroupVersion,
|
||||
eventsv1.SchemeGroupVersion,
|
||||
rbacv1.SchemeGroupVersion,
|
||||
flowcontrolv1.SchemeGroupVersion,
|
||||
}
|
||||
// stableAPIGroupVersionsEnabledByDefault is a list of our stable versions for additional API groups only provided in kube-apiserver.
|
||||
stableAPIGroupVersionsEnabledByDefault = []schema.GroupVersion{
|
||||
appsv1.SchemeGroupVersion,
|
||||
autoscalingapiv1.SchemeGroupVersion,
|
||||
autoscalingapiv2.SchemeGroupVersion,
|
||||
batchapiv1.SchemeGroupVersion,
|
||||
certificatesapiv1.SchemeGroupVersion,
|
||||
coordinationapiv1.SchemeGroupVersion,
|
||||
discoveryv1.SchemeGroupVersion,
|
||||
eventsv1.SchemeGroupVersion,
|
||||
networkingapiv1.SchemeGroupVersion,
|
||||
nodev1.SchemeGroupVersion,
|
||||
policyapiv1.SchemeGroupVersion,
|
||||
rbacv1.SchemeGroupVersion,
|
||||
resourcev1.SchemeGroupVersion,
|
||||
storageapiv1.SchemeGroupVersion,
|
||||
schedulingapiv1.SchemeGroupVersion,
|
||||
flowcontrolv1.SchemeGroupVersion,
|
||||
}
|
||||
|
||||
// betaAPIGroupVersionsDisabledByDefault is for all future beta groupVersions.
|
||||
betaAPIGroupVersionsDisabledByDefault = []schema.GroupVersion{
|
||||
// genericBetaAPIGroupVersionsDisabledByDefault is for all future beta groupVersions for API groups provided by GenericStorageProviders.
|
||||
genericBetaAPIGroupVersionsDisabledByDefault = []schema.GroupVersion{
|
||||
admissionregistrationv1beta1.SchemeGroupVersion,
|
||||
authenticationv1beta1.SchemeGroupVersion,
|
||||
certificatesv1beta1.SchemeGroupVersion,
|
||||
coordinationv1beta1.SchemeGroupVersion,
|
||||
storageapiv1beta1.SchemeGroupVersion,
|
||||
flowcontrolv1beta1.SchemeGroupVersion,
|
||||
flowcontrolv1beta2.SchemeGroupVersion,
|
||||
flowcontrolv1beta3.SchemeGroupVersion,
|
||||
svmv1beta1.SchemeGroupVersion,
|
||||
}
|
||||
// betaAPIGroupVersionsDisabledByDefault is for all future beta groupVersions for additional API groups only provided in kube-apiserver.
|
||||
betaAPIGroupVersionsDisabledByDefault = []schema.GroupVersion{
|
||||
storageapiv1beta1.SchemeGroupVersion,
|
||||
networkingapiv1beta1.SchemeGroupVersion,
|
||||
resourcev1beta1.SchemeGroupVersion,
|
||||
resourcev1beta2.SchemeGroupVersion,
|
||||
svmv1beta1.SchemeGroupVersion,
|
||||
}
|
||||
|
||||
// alphaAPIGroupVersionsDisabledByDefault holds the alpha APIs we have. They are always disabled by default.
|
||||
alphaAPIGroupVersionsDisabledByDefault = []schema.GroupVersion{
|
||||
// genericAlphaAPIGroupVersionsDisabledByDefault holds the alpha APIs we have for API groups provided by GenericStorageProviders. They are always disabled by default.
|
||||
genericAlphaAPIGroupVersionsDisabledByDefault = []schema.GroupVersion{
|
||||
admissionregistrationv1alpha1.SchemeGroupVersion,
|
||||
apiserverinternalv1alpha1.SchemeGroupVersion,
|
||||
authenticationv1alpha1.SchemeGroupVersion,
|
||||
apiserverinternalv1alpha1.SchemeGroupVersion,
|
||||
coordinationv1alpha2.SchemeGroupVersion,
|
||||
resourcev1alpha3.SchemeGroupVersion,
|
||||
certificatesv1alpha1.SchemeGroupVersion,
|
||||
}
|
||||
// alphaAPIGroupVersionsDisabledByDefault holds the alpha APIs we have for additional API groups only provided in kube-apiserver. They are always disabled by default.
|
||||
alphaAPIGroupVersionsDisabledByDefault = []schema.GroupVersion{
|
||||
resourcev1alpha3.SchemeGroupVersion,
|
||||
schedulingapiv1alpha1.SchemeGroupVersion,
|
||||
storageapiv1alpha1.SchemeGroupVersion,
|
||||
}
|
||||
)
|
||||
|
||||
// DefaultAPIResourceConfigSource returns default configuration for an APIResource.
|
||||
func DefaultAPIResourceConfigSource() *serverstorage.ResourceConfig {
|
||||
// DefaultGenericAPIResourceConfigSource returns default configuration for resources served by GenericStorageProviders.
|
||||
func DefaultGenericAPIResourceConfigSource() *serverstorage.ResourceConfig {
|
||||
ret := serverstorage.NewResourceConfig()
|
||||
// NOTE: GroupVersions listed here will be enabled by default. Don't put alpha or beta versions in the list.
|
||||
ret.EnableVersions(stableAPIGroupVersionsEnabledByDefault...)
|
||||
ret.EnableVersions(genericStableAPIGroupVersionsEnabledByDefault...)
|
||||
// disable alpha and beta versions explicitly so we have a full list of what's possible to serve
|
||||
ret.DisableVersions(genericBetaAPIGroupVersionsDisabledByDefault...)
|
||||
ret.DisableVersions(genericAlphaAPIGroupVersionsDisabledByDefault...)
|
||||
return ret
|
||||
}
|
||||
|
||||
// DefaultAPIResourceConfigSource returns default configuration for resources served by kube-apiserver.
|
||||
func DefaultAPIResourceConfigSource() *serverstorage.ResourceConfig {
|
||||
// start with generic configuration
|
||||
ret := DefaultGenericAPIResourceConfigSource()
|
||||
// NOTE: GroupVersions listed here will be enabled by default. Don't put alpha or beta versions in the list.
|
||||
ret.EnableVersions(stableAPIGroupVersionsEnabledByDefault...)
|
||||
// disable alpha and beta versions explicitly so we have a full list of what's possible to serve
|
||||
ret.DisableVersions(betaAPIGroupVersionsDisabledByDefault...)
|
||||
ret.DisableVersions(alphaAPIGroupVersionsDisabledByDefault...)
|
||||
|
||||
return ret
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
autoscalingrest "k8s.io/kubernetes/pkg/registry/autoscaling/rest"
|
||||
resourcerest "k8s.io/kubernetes/pkg/registry/resource/rest"
|
||||
|
||||
@@ -512,6 +513,23 @@ func TestGenericStorageProviders(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
genericStorageGroups := sets.New[string]()
|
||||
for _, provider := range generic {
|
||||
genericStorageGroups.Insert(provider.GroupName())
|
||||
}
|
||||
|
||||
genericConfigGroups := sets.New[string]()
|
||||
for gv := range DefaultGenericAPIResourceConfigSource().GroupVersionConfigs {
|
||||
genericConfigGroups.Insert(gv.Group)
|
||||
}
|
||||
|
||||
if extra := genericStorageGroups.Difference(genericConfigGroups); len(extra) > 0 {
|
||||
t.Fatalf("GenericStorageProviders has providers for groups in DefaultGenericAPIResourceConfigSource: %v", sets.List(extra))
|
||||
}
|
||||
if extra := genericConfigGroups.Difference(genericStorageGroups); len(extra) > 0 {
|
||||
t.Fatalf("DefaultGenericAPIResourceConfigSource has config for groups not in GenericStorageProviders: %v", sets.List(extra))
|
||||
}
|
||||
|
||||
g := 0 // generic index
|
||||
for k := range kube {
|
||||
kt := reflect.TypeOf(kube[k])
|
||||
|
||||
Reference in New Issue
Block a user