mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-07 03:03:59 +00:00
select an RBAC version for kubefed it knows how to speak
This commit is contained in:
parent
92d9e44269
commit
7f1a617496
@ -14,6 +14,9 @@ go_library(
|
|||||||
"//federation/client/clientset_generated/federation_clientset:go_default_library",
|
"//federation/client/clientset_generated/federation_clientset:go_default_library",
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/apis/rbac:go_default_library",
|
"//pkg/apis/rbac:go_default_library",
|
||||||
|
"//pkg/apis/rbac/v1:go_default_library",
|
||||||
|
"//pkg/apis/rbac/v1alpha1:go_default_library",
|
||||||
|
"//pkg/apis/rbac/v1beta1:go_default_library",
|
||||||
"//pkg/client/clientset_generated/internalclientset:go_default_library",
|
"//pkg/client/clientset_generated/internalclientset:go_default_library",
|
||||||
"//pkg/kubectl/cmd:go_default_library",
|
"//pkg/kubectl/cmd:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/cmd/util:go_default_library",
|
||||||
|
@ -32,6 +32,9 @@ import (
|
|||||||
fedclient "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
fedclient "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/apis/rbac"
|
"k8s.io/kubernetes/pkg/apis/rbac"
|
||||||
|
rbacv1 "k8s.io/kubernetes/pkg/apis/rbac/v1"
|
||||||
|
rbacv1alpha1 "k8s.io/kubernetes/pkg/apis/rbac/v1alpha1"
|
||||||
|
rbacv1beta1 "k8s.io/kubernetes/pkg/apis/rbac/v1beta1"
|
||||||
client "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
client "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
||||||
kubectlcmd "k8s.io/kubernetes/pkg/kubectl/cmd"
|
kubectlcmd "k8s.io/kubernetes/pkg/kubectl/cmd"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
@ -285,6 +288,16 @@ func getRBACVersion(discoveryclient discovery.CachedDiscoveryInterface) (*schema
|
|||||||
return nil, fmt.Errorf("Couldn't get clientset to create RBAC roles in the host cluster: %v", err)
|
return nil, fmt.Errorf("Couldn't get clientset to create RBAC roles in the host cluster: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// These are the RBAC versions we can speak
|
||||||
|
knownVersions := map[schema.GroupVersion]bool{
|
||||||
|
rbacv1.SchemeGroupVersion: true,
|
||||||
|
rbacv1alpha1.SchemeGroupVersion: true,
|
||||||
|
rbacv1beta1.SchemeGroupVersion: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
// This holds any RBAC versions listed in discovery we do not know how to speak
|
||||||
|
unknownVersions := []schema.GroupVersion{}
|
||||||
|
|
||||||
for _, g := range groupList.Groups {
|
for _, g := range groupList.Groups {
|
||||||
if g.Name == rbac.GroupName {
|
if g.Name == rbac.GroupName {
|
||||||
if g.PreferredVersion.GroupVersion != "" {
|
if g.PreferredVersion.GroupVersion != "" {
|
||||||
@ -292,19 +305,29 @@ func getRBACVersion(discoveryclient discovery.CachedDiscoveryInterface) (*schema
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if knownVersions[gv] {
|
||||||
return &gv, nil
|
return &gv, nil
|
||||||
}
|
}
|
||||||
|
}
|
||||||
for _, version := range g.Versions {
|
for _, version := range g.Versions {
|
||||||
if version.GroupVersion != "" {
|
if version.GroupVersion != "" {
|
||||||
gv, err := schema.ParseGroupVersion(version.GroupVersion)
|
gv, err := schema.ParseGroupVersion(version.GroupVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if knownVersions[gv] {
|
||||||
return &gv, nil
|
return &gv, nil
|
||||||
|
} else {
|
||||||
|
unknownVersions = append(unknownVersions, gv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(unknownVersions) > 0 {
|
||||||
|
return nil, &NoRBACAPIError{fmt.Sprintf("%s\nUnknown RBAC API versions: %v", rbacAPINotAvailable, unknownVersions)}
|
||||||
|
}
|
||||||
|
|
||||||
return nil, &NoRBACAPIError{rbacAPINotAvailable}
|
return nil, &NoRBACAPIError{rbacAPINotAvailable}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user