// DefaultAPITokenMountPath is the path that ServiceAccountToken secrets are automounted to. // The token file would then be accessible at /var/run/secrets/kubernetes.io/serviceaccount const DefaultAPITokenMountPath = "/var/run/secrets/kubernetes.io/serviceaccount" // PluginName is the name of this admission plugin const PluginName = "ServiceAccount" func init() { admission.RegisterPlugin(PluginName, func(config io.Reader) (admission.Interface, error) { serviceAccountAdmission := NewServiceAccount() return serviceAccountAdmission, nil }) } var _ = admission.Interface(&serviceAccount{}) type serviceAccount struct { *admission.Handler // LimitSecretReferences rejects pods that reference secrets their service accounts do not reference LimitSecretReferences bool // RequireAPIToken determines whether pod creation attempts are rejected if no API token exists for the pod's service account RequireAPIToken bool // MountServiceAccountToken creates Volume and VolumeMounts for the first referenced ServiceAccountToken for the pod's service account MountServiceAccountToken bool client internalclientset.Interface serviceAccounts cache.Indexer secrets cache.Indexer
"k8s.io/apiserver/pkg/admission" "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/cloudprovider/providers/aws" "k8s.io/kubernetes/pkg/cloudprovider/providers/gce" vol "k8s.io/kubernetes/pkg/volume" ) func init() { admission.RegisterPlugin("PersistentVolumeLabel", func(config io.Reader) (admission.Interface, error) { persistentVolumeLabelAdmission := NewPersistentVolumeLabel() return persistentVolumeLabelAdmission, nil }) } var _ = admission.Interface(&persistentVolumeLabel{}) type persistentVolumeLabel struct { *admission.Handler mutex sync.Mutex ebsVolumes aws.Volumes gceCloudProvider *gce.GCECloud } // NewPersistentVolumeLabel returns an admission.Interface implementation which adds labels to PersistentVolume CREATE requests, // based on the labels provided by the underlying cloud provider. // // As a side effect, the cloud provider may block invalid or non-existent volumes. func NewPersistentVolumeLabel() *persistentVolumeLabel { return &persistentVolumeLabel{