From ede54776978ca8b48f21bf4de5d8aaad7023a70a Mon Sep 17 00:00:00 2001 From: Kenichi Omichi Date: Tue, 26 Feb 2019 18:07:18 +0000 Subject: [PATCH] Enable StorageObjectInUseProtection by default StorageObjectInUseProtection plugin of admission controller adds the flag `kubernetes.io/pvc-protection` or `kubernetes.io/pv-protection` to newly created PVCs or PV. In case a user deletes a PVC or PV the PVC or PV is not removed until the finalizer is removed from the PVC or PV by PVC or PV Protection Controller. We are testing this plugin on the e2e tests of "PV Protection" because most setup scripts enable that like: * cluster/centos/config-default.sh: Enabled * cluster/gce/config-default.sh: Enabled * cluster/gce/config-test.sh: Enabled * cluster/kubemark/gce/config-default.sh: Enabled * hack/local-up-cluster.sh: Enabled * cluster/juju/layers/kubernetes-master/reactive/kubernetes_master.py: Disabled As we are testing it normally, it is nice to enable the plugin by default. --- hack/make-rules/test-cmd.sh | 2 +- hack/test-update-storage-objects.sh | 2 +- pkg/kubeapiserver/options/plugins.go | 19 ++++++++++--------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/hack/make-rules/test-cmd.sh b/hack/make-rules/test-cmd.sh index ff058b891f..5a7db32109 100755 --- a/hack/make-rules/test-cmd.sh +++ b/hack/make-rules/test-cmd.sh @@ -35,7 +35,7 @@ function run_kube_apiserver() { # Admission Controllers to invoke prior to persisting objects in cluster ENABLE_ADMISSION_PLUGINS="LimitRanger,ResourceQuota" - DISABLE_ADMISSION_PLUGINS="ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook" + DISABLE_ADMISSION_PLUGINS="ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,StorageObjectInUseProtection" # Include RBAC (to exercise bootstrapping), and AlwaysAllow to allow all actions AUTHORIZATION_MODE="RBAC,AlwaysAllow" diff --git a/hack/test-update-storage-objects.sh b/hack/test-update-storage-objects.sh index f2e53edc61..a7304902fc 100755 --- a/hack/test-update-storage-objects.sh +++ b/hack/test-update-storage-objects.sh @@ -45,7 +45,7 @@ RUNTIME_CONFIG="" ETCDCTL=$(which etcdctl) KUBECTL="${KUBE_OUTPUT_HOSTBIN}/kubectl" UPDATE_ETCD_OBJECTS_SCRIPT="${KUBE_ROOT}/cluster/update-storage-objects.sh" -DISABLE_ADMISSION_PLUGINS="ServiceAccount,NamespaceLifecycle,LimitRanger,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota,PersistentVolumeLabel,DefaultStorageClass" +DISABLE_ADMISSION_PLUGINS="ServiceAccount,NamespaceLifecycle,LimitRanger,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota,PersistentVolumeLabel,DefaultStorageClass,StorageObjectInUseProtection" function startApiServer() { local storage_versions=${1:-""} diff --git a/pkg/kubeapiserver/options/plugins.go b/pkg/kubeapiserver/options/plugins.go index d62ea7f337..dc8f9daee0 100644 --- a/pkg/kubeapiserver/options/plugins.go +++ b/pkg/kubeapiserver/options/plugins.go @@ -128,15 +128,16 @@ func RegisterAllAdmissionPlugins(plugins *admission.Plugins) { // DefaultOffAdmissionPlugins get admission plugins off by default for kube-apiserver. func DefaultOffAdmissionPlugins() sets.String { defaultOnPlugins := sets.NewString( - lifecycle.PluginName, //NamespaceLifecycle - limitranger.PluginName, //LimitRanger - serviceaccount.PluginName, //ServiceAccount - setdefault.PluginName, //DefaultStorageClass - resize.PluginName, //PersistentVolumeClaimResize - defaulttolerationseconds.PluginName, //DefaultTolerationSeconds - mutatingwebhook.PluginName, //MutatingAdmissionWebhook - validatingwebhook.PluginName, //ValidatingAdmissionWebhook - resourcequota.PluginName, //ResourceQuota + lifecycle.PluginName, //NamespaceLifecycle + limitranger.PluginName, //LimitRanger + serviceaccount.PluginName, //ServiceAccount + setdefault.PluginName, //DefaultStorageClass + resize.PluginName, //PersistentVolumeClaimResize + defaulttolerationseconds.PluginName, //DefaultTolerationSeconds + mutatingwebhook.PluginName, //MutatingAdmissionWebhook + validatingwebhook.PluginName, //ValidatingAdmissionWebhook + resourcequota.PluginName, //ResourceQuota + storageobjectinuseprotection.PluginName, //StorageObjectInUseProtection ) if utilfeature.DefaultFeatureGate.Enabled(features.PodPriority) {