mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-19 18:02:01 +00:00
Merge pull request #115719 from saschagrunert/seccomp-default-ga
Graduate `SeccompDefault` feature to stable / GA
This commit is contained in:
commit
9e356a4132
@ -33,7 +33,6 @@ import (
|
|||||||
"k8s.io/kubelet/config/v1beta1"
|
"k8s.io/kubelet/config/v1beta1"
|
||||||
kubeletapis "k8s.io/kubelet/pkg/apis"
|
kubeletapis "k8s.io/kubelet/pkg/apis"
|
||||||
"k8s.io/kubernetes/pkg/cluster/ports"
|
"k8s.io/kubernetes/pkg/cluster/ports"
|
||||||
"k8s.io/kubernetes/pkg/features"
|
|
||||||
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
|
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
|
||||||
kubeletscheme "k8s.io/kubernetes/pkg/kubelet/apis/config/scheme"
|
kubeletscheme "k8s.io/kubernetes/pkg/kubelet/apis/config/scheme"
|
||||||
kubeletconfigvalidation "k8s.io/kubernetes/pkg/kubelet/apis/config/validation"
|
kubeletconfigvalidation "k8s.io/kubernetes/pkg/kubelet/apis/config/validation"
|
||||||
@ -135,7 +134,6 @@ type KubeletFlags struct {
|
|||||||
// This can be useful for debugging volume related issues.
|
// This can be useful for debugging volume related issues.
|
||||||
KeepTerminatedPodVolumes bool
|
KeepTerminatedPodVolumes bool
|
||||||
// SeccompDefault enables the use of `RuntimeDefault` as the default seccomp profile for all workloads on the node.
|
// SeccompDefault enables the use of `RuntimeDefault` as the default seccomp profile for all workloads on the node.
|
||||||
// To use this flag, the corresponding SeccompDefault feature gate must be enabled.
|
|
||||||
SeccompDefault bool
|
SeccompDefault bool
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -181,10 +179,6 @@ func ValidateKubeletFlags(f *KubeletFlags) error {
|
|||||||
return fmt.Errorf("invalid node labels: %s", strings.Join(labelErrs, "; "))
|
return fmt.Errorf("invalid node labels: %s", strings.Join(labelErrs, "; "))
|
||||||
}
|
}
|
||||||
|
|
||||||
if f.SeccompDefault && !utilfeature.DefaultFeatureGate.Enabled(features.SeccompDefault) {
|
|
||||||
return fmt.Errorf("the SeccompDefault feature gate must be enabled in order to use the --seccomp-default flag")
|
|
||||||
}
|
|
||||||
|
|
||||||
if f.ContainerRuntime != kubetypes.RemoteContainerRuntime {
|
if f.ContainerRuntime != kubetypes.RemoteContainerRuntime {
|
||||||
return fmt.Errorf("unsupported CRI runtime: %q, only %q is currently supported", f.ContainerRuntime, kubetypes.RemoteContainerRuntime)
|
return fmt.Errorf("unsupported CRI runtime: %q, only %q is currently supported", f.ContainerRuntime, kubetypes.RemoteContainerRuntime)
|
||||||
}
|
}
|
||||||
@ -311,13 +305,13 @@ func (f *KubeletFlags) AddFlags(mainfs *pflag.FlagSet) {
|
|||||||
"If --tls-cert-file and --tls-private-key-file are provided, this flag will be ignored.")
|
"If --tls-cert-file and --tls-private-key-file are provided, this flag will be ignored.")
|
||||||
|
|
||||||
fs.StringVar(&f.RootDirectory, "root-dir", f.RootDirectory, "Directory path for managing kubelet files (volume mounts,etc).")
|
fs.StringVar(&f.RootDirectory, "root-dir", f.RootDirectory, "Directory path for managing kubelet files (volume mounts,etc).")
|
||||||
|
fs.BoolVar(&f.SeccompDefault, "seccomp-default", f.SeccompDefault, "Enable the use of `RuntimeDefault` as the default seccomp profile for all workloads.")
|
||||||
|
|
||||||
// EXPERIMENTAL FLAGS
|
// EXPERIMENTAL FLAGS
|
||||||
bindableNodeLabels := cliflag.ConfigurationMap(f.NodeLabels)
|
bindableNodeLabels := cliflag.ConfigurationMap(f.NodeLabels)
|
||||||
fs.Var(&bindableNodeLabels, "node-labels", fmt.Sprintf("<Warning: Alpha feature> Labels to add when registering the node in the cluster. Labels must be key=value pairs separated by ','. Labels in the 'kubernetes.io' namespace must begin with an allowed prefix (%s) or be in the specifically allowed set (%s)", strings.Join(kubeletapis.KubeletLabelNamespaces(), ", "), strings.Join(kubeletapis.KubeletLabels(), ", ")))
|
fs.Var(&bindableNodeLabels, "node-labels", fmt.Sprintf("<Warning: Alpha feature> Labels to add when registering the node in the cluster. Labels must be key=value pairs separated by ','. Labels in the 'kubernetes.io' namespace must begin with an allowed prefix (%s) or be in the specifically allowed set (%s)", strings.Join(kubeletapis.KubeletLabelNamespaces(), ", "), strings.Join(kubeletapis.KubeletLabels(), ", ")))
|
||||||
fs.StringVar(&f.LockFilePath, "lock-file", f.LockFilePath, "<Warning: Alpha feature> The path to file for kubelet to use as a lock file.")
|
fs.StringVar(&f.LockFilePath, "lock-file", f.LockFilePath, "<Warning: Alpha feature> The path to file for kubelet to use as a lock file.")
|
||||||
fs.BoolVar(&f.ExitOnLockContention, "exit-on-lock-contention", f.ExitOnLockContention, "Whether kubelet should exit upon lock-file contention.")
|
fs.BoolVar(&f.ExitOnLockContention, "exit-on-lock-contention", f.ExitOnLockContention, "Whether kubelet should exit upon lock-file contention.")
|
||||||
fs.BoolVar(&f.SeccompDefault, "seccomp-default", f.SeccompDefault, "<Warning: Beta feature> Enable the use of `RuntimeDefault` as the default seccomp profile for all workloads. The SeccompDefault feature gate must be enabled to allow this flag, which is disabled per default.")
|
|
||||||
|
|
||||||
// DEPRECATED FLAGS
|
// DEPRECATED FLAGS
|
||||||
fs.DurationVar(&f.MinimumGCAge.Duration, "minimum-container-ttl-duration", f.MinimumGCAge.Duration, "Minimum age for a finished container before it is garbage collected. Examples: '300ms', '10s' or '2h45m'")
|
fs.DurationVar(&f.MinimumGCAge.Duration, "minimum-container-ttl-duration", f.MinimumGCAge.Duration, "Minimum age for a finished container before it is garbage collected. Examples: '300ms', '10s' or '2h45m'")
|
||||||
|
@ -1150,10 +1150,6 @@ func RunKubelet(kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencie
|
|||||||
kubeDeps.OSInterface = kubecontainer.RealOS{}
|
kubeDeps.OSInterface = kubecontainer.RealOS{}
|
||||||
}
|
}
|
||||||
|
|
||||||
if kubeServer.KubeletConfiguration.SeccompDefault && !utilfeature.DefaultFeatureGate.Enabled(features.SeccompDefault) {
|
|
||||||
return fmt.Errorf("the SeccompDefault feature gate must be enabled in order to use the SeccompDefault configuration")
|
|
||||||
}
|
|
||||||
|
|
||||||
k, err := createAndInitKubelet(kubeServer,
|
k, err := createAndInitKubelet(kubeServer,
|
||||||
kubeDeps,
|
kubeDeps,
|
||||||
hostname,
|
hostname,
|
||||||
|
@ -687,6 +687,7 @@ const (
|
|||||||
// kep: https://kep.k8s.io/2413
|
// kep: https://kep.k8s.io/2413
|
||||||
// alpha: v1.22
|
// alpha: v1.22
|
||||||
// beta: v1.25
|
// beta: v1.25
|
||||||
|
// ga: v1.27
|
||||||
//
|
//
|
||||||
// Enables the use of `RuntimeDefault` as the default seccomp profile for all workloads.
|
// Enables the use of `RuntimeDefault` as the default seccomp profile for all workloads.
|
||||||
SeccompDefault featuregate.Feature = "SeccompDefault"
|
SeccompDefault featuregate.Feature = "SeccompDefault"
|
||||||
@ -1020,7 +1021,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
|
|||||||
|
|
||||||
RotateKubeletServerCertificate: {Default: true, PreRelease: featuregate.Beta},
|
RotateKubeletServerCertificate: {Default: true, PreRelease: featuregate.Beta},
|
||||||
|
|
||||||
SeccompDefault: {Default: true, PreRelease: featuregate.Beta},
|
SeccompDefault: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.29
|
||||||
|
|
||||||
ServiceIPStaticSubrange: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.28
|
ServiceIPStaticSubrange: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.28
|
||||||
|
|
||||||
|
2
pkg/generated/openapi/zz_generated.openapi.go
generated
2
pkg/generated/openapi/zz_generated.openapi.go
generated
@ -57985,7 +57985,7 @@ func schema_k8sio_kubelet_config_v1beta1_KubeletConfiguration(ref common.Referen
|
|||||||
},
|
},
|
||||||
"seccompDefault": {
|
"seccompDefault": {
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Description: "SeccompDefault enables the use of `RuntimeDefault` as the default seccomp profile for all workloads. This requires the corresponding SeccompDefault feature gate to be enabled as well. Default: false",
|
Description: "SeccompDefault enables the use of `RuntimeDefault` as the default seccomp profile for all workloads. Default: false",
|
||||||
Type: []string{"boolean"},
|
Type: []string{"boolean"},
|
||||||
Format: "",
|
Format: "",
|
||||||
},
|
},
|
||||||
|
@ -764,7 +764,6 @@ type KubeletConfiguration struct {
|
|||||||
// +optional
|
// +optional
|
||||||
EnableDebugFlagsHandler *bool `json:"enableDebugFlagsHandler,omitempty"`
|
EnableDebugFlagsHandler *bool `json:"enableDebugFlagsHandler,omitempty"`
|
||||||
// SeccompDefault enables the use of `RuntimeDefault` as the default seccomp profile for all workloads.
|
// SeccompDefault enables the use of `RuntimeDefault` as the default seccomp profile for all workloads.
|
||||||
// This requires the corresponding SeccompDefault feature gate to be enabled as well.
|
|
||||||
// Default: false
|
// Default: false
|
||||||
// +optional
|
// +optional
|
||||||
SeccompDefault *bool `json:"seccompDefault,omitempty"`
|
SeccompDefault *bool `json:"seccompDefault,omitempty"`
|
||||||
|
Loading…
Reference in New Issue
Block a user