feat: support service account token auth mode
Signed-off-by: hongming <coder.scala@gmail.com>
This commit is contained in:
@@ -23,6 +23,8 @@ import (
|
||||
|
||||
"kubesphere.io/kubesphere/pkg/api"
|
||||
"kubesphere.io/kubesphere/pkg/apiserver/query"
|
||||
"kubesphere.io/kubesphere/pkg/constants"
|
||||
"kubesphere.io/kubesphere/pkg/models/kubeconfig"
|
||||
resourcev1beta1 "kubesphere.io/kubesphere/pkg/models/resources/v1beta1"
|
||||
"kubesphere.io/kubesphere/pkg/utils/sliceutil"
|
||||
)
|
||||
@@ -588,6 +590,11 @@ func (am *amOperator) CreateOrUpdateNamespaceRoleBinding(username string, namesp
|
||||
APIGroup: iamv1beta1.SchemeGroupVersion.Group,
|
||||
Name: username,
|
||||
},
|
||||
{
|
||||
Kind: rbacv1.ServiceAccountKind,
|
||||
Name: fmt.Sprintf(kubeconfig.UserKubeConfigServiceAccountNameFormat, username),
|
||||
Namespace: constants.KubeSphereNamespace,
|
||||
},
|
||||
},
|
||||
RoleRef: rbacv1.RoleRef{
|
||||
APIGroup: iamv1beta1.SchemeGroupVersion.Group,
|
||||
@@ -637,6 +644,11 @@ func (am *amOperator) CreateOrUpdateClusterRoleBinding(username string, role str
|
||||
APIGroup: iamv1beta1.SchemeGroupVersion.Group,
|
||||
Name: username,
|
||||
},
|
||||
{
|
||||
Kind: rbacv1.ServiceAccountKind,
|
||||
Name: fmt.Sprintf(kubeconfig.UserKubeConfigServiceAccountNameFormat, username),
|
||||
Namespace: constants.KubeSphereNamespace,
|
||||
},
|
||||
},
|
||||
RoleRef: rbacv1.RoleRef{
|
||||
APIGroup: iamv1beta1.SchemeGroupVersion.Group,
|
||||
|
||||
@@ -18,14 +18,15 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
ConfigTypeKubeConfig = "kubeconfig"
|
||||
SecretTypeKubeConfig = "config.kubesphere.io/" + ConfigTypeKubeConfig
|
||||
FileName = "config"
|
||||
DefaultClusterName = "local"
|
||||
DefaultNamespace = "default"
|
||||
InClusterCAFilePath = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"
|
||||
PrivateKeyAnnotation = "kubesphere.io/private-key"
|
||||
UserKubeConfigSecretNameFormat = "kubeconfig-%s"
|
||||
ConfigTypeKubeConfig = "kubeconfig"
|
||||
SecretTypeKubeConfig = "config.kubesphere.io/" + ConfigTypeKubeConfig
|
||||
FileName = "config"
|
||||
DefaultClusterName = "local"
|
||||
DefaultNamespace = "default"
|
||||
InClusterCAFilePath = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"
|
||||
PrivateKeyAnnotation = "kubesphere.io/private-key"
|
||||
UserKubeConfigSecretNameFormat = "kubeconfig-%s"
|
||||
UserKubeConfigServiceAccountNameFormat = "kubesphere.users.%s"
|
||||
)
|
||||
|
||||
type Interface interface {
|
||||
|
||||
18
pkg/models/kubeconfig/options.go
Normal file
18
pkg/models/kubeconfig/options.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package kubeconfig
|
||||
|
||||
const (
|
||||
AuthModeServiceAccountToken AuthMode = "service-account-token"
|
||||
AuthModeClientCertificate AuthMode = "client-certificate"
|
||||
AuthModeOIDCToken AuthMode = "oidc-token"
|
||||
AuthModeWebhookToken AuthMode = "webhook-token"
|
||||
)
|
||||
|
||||
type AuthMode string
|
||||
|
||||
type Options struct {
|
||||
AuthMode AuthMode `json:"authMode" yaml:"authMode" mapstructure:"authMode"`
|
||||
}
|
||||
|
||||
func NewOptions() *Options {
|
||||
return &Options{AuthMode: AuthModeClientCertificate}
|
||||
}
|
||||
Reference in New Issue
Block a user