kube_features.go 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646
  1. /*
  2. Copyright 2017 The Kubernetes Authors.
  3. Licensed under the Apache License, Version 2.0 (the "License");
  4. you may not use this file except in compliance with the License.
  5. You may obtain a copy of the License at
  6. http://www.apache.org/licenses/LICENSE-2.0
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. */
  13. package features
  14. import (
  15. "k8s.io/apimachinery/pkg/util/runtime"
  16. genericfeatures "k8s.io/apiserver/pkg/features"
  17. utilfeature "k8s.io/apiserver/pkg/util/feature"
  18. "k8s.io/component-base/featuregate"
  19. )
  20. const (
  21. // Every feature gate should add method here following this template:
  22. //
  23. // // owner: @username
  24. // // alpha: v1.X
  25. // MyFeature featuregate.Feature = "MyFeature"
  26. // owner: @tallclair
  27. // beta: v1.4
  28. AppArmor featuregate.Feature = "AppArmor"
  29. // owner: @mtaufen
  30. // alpha: v1.4
  31. // beta: v1.11
  32. DynamicKubeletConfig featuregate.Feature = "DynamicKubeletConfig"
  33. // owner: @pweil-
  34. // alpha: v1.5
  35. //
  36. // Default userns=host for containers that are using other host namespaces, host mounts, the pod
  37. // contains a privileged container, or specific non-namespaced capabilities (MKNOD, SYS_MODULE,
  38. // SYS_TIME). This should only be enabled if user namespace remapping is enabled in the docker daemon.
  39. ExperimentalHostUserNamespaceDefaultingGate featuregate.Feature = "ExperimentalHostUserNamespaceDefaulting"
  40. // owner: @jiayingz
  41. // beta: v1.10
  42. //
  43. // Enables support for Device Plugins
  44. DevicePlugins featuregate.Feature = "DevicePlugins"
  45. // owner: @dxist
  46. // alpha: v1.16
  47. //
  48. // Enables support of HPA scaling to zero pods when an object or custom metric is configured.
  49. HPAScaleToZero featuregate.Feature = "HPAScaleToZero"
  50. // owner: @Huang-Wei
  51. // beta: v1.13
  52. //
  53. // Changes the logic behind evicting Pods from not ready Nodes
  54. // to take advantage of NoExecute Taints and Tolerations.
  55. TaintBasedEvictions featuregate.Feature = "TaintBasedEvictions"
  56. // owner: @mikedanese
  57. // alpha: v1.7
  58. // beta: v1.12
  59. //
  60. // Gets a server certificate for the kubelet from the Certificate Signing
  61. // Request API instead of generating one self signed and auto rotates the
  62. // certificate as expiration approaches.
  63. RotateKubeletServerCertificate featuregate.Feature = "RotateKubeletServerCertificate"
  64. // owner: @mikedanese
  65. // beta: v1.8
  66. //
  67. // Automatically renews the client certificate used for communicating with
  68. // the API server as the certificate approaches expiration.
  69. RotateKubeletClientCertificate featuregate.Feature = "RotateKubeletClientCertificate"
  70. // owner: @jinxu
  71. // beta: v1.10
  72. //
  73. // New local storage types to support local storage capacity isolation
  74. LocalStorageCapacityIsolation featuregate.Feature = "LocalStorageCapacityIsolation"
  75. // owner: @gnufied
  76. // beta: v1.11
  77. // Ability to Expand persistent volumes
  78. ExpandPersistentVolumes featuregate.Feature = "ExpandPersistentVolumes"
  79. // owner: @mlmhl
  80. // beta: v1.15
  81. // Ability to expand persistent volumes' file system without unmounting volumes.
  82. ExpandInUsePersistentVolumes featuregate.Feature = "ExpandInUsePersistentVolumes"
  83. // owner: @gnufied
  84. // alpha: v1.14
  85. // beta: v1.16
  86. // Ability to expand CSI volumes
  87. ExpandCSIVolumes featuregate.Feature = "ExpandCSIVolumes"
  88. // owner: @verb
  89. // alpha: v1.16
  90. //
  91. // Allows running an ephemeral container in pod namespaces to troubleshoot a running pod.
  92. EphemeralContainers featuregate.Feature = "EphemeralContainers"
  93. // owner: @verb
  94. // alpha: v1.10
  95. // beta: v1.12
  96. // GA: v1.17
  97. //
  98. // Allows all containers in a pod to share a process namespace.
  99. PodShareProcessNamespace featuregate.Feature = "PodShareProcessNamespace"
  100. // owner: @sjenning
  101. // alpha: v1.11
  102. //
  103. // Allows resource reservations at the QoS level preventing pods at lower QoS levels from
  104. // bursting into resources requested at higher QoS levels (memory only for now)
  105. QOSReserved featuregate.Feature = "QOSReserved"
  106. // owner: @ConnorDoyle
  107. // alpha: v1.8
  108. // beta: v1.10
  109. //
  110. // Alternative container-level CPU affinity policies.
  111. CPUManager featuregate.Feature = "CPUManager"
  112. // owner: @szuecs
  113. // alpha: v1.12
  114. //
  115. // Enable nodes to change CPUCFSQuotaPeriod
  116. CPUCFSQuotaPeriod featuregate.Feature = "CustomCPUCFSQuotaPeriod"
  117. // owner: @lmdaly
  118. // alpha: v1.16
  119. //
  120. // Enable resource managers to make NUMA aligned decisions
  121. TopologyManager featuregate.Feature = "TopologyManager"
  122. // owner: @sjenning
  123. // beta: v1.11
  124. //
  125. // Enable pods to set sysctls on a pod
  126. Sysctls featuregate.Feature = "Sysctls"
  127. // owner @smarterclayton
  128. // alpha: v1.16
  129. //
  130. // Enable legacy behavior to vary cluster functionality on the node-role.kubernetes.io labels. On by default (legacy), will be turned off in 1.18.
  131. LegacyNodeRoleBehavior featuregate.Feature = "LegacyNodeRoleBehavior"
  132. // owner @brendandburns
  133. // alpha: v1.9
  134. //
  135. // Enable nodes to exclude themselves from service load balancers
  136. ServiceNodeExclusion featuregate.Feature = "ServiceNodeExclusion"
  137. // owner @smarterclayton
  138. // alpha: v1.16
  139. //
  140. // Enable nodes to exclude themselves from network disruption checks
  141. NodeDisruptionExclusion featuregate.Feature = "NodeDisruptionExclusion"
  142. // owner: @saad-ali
  143. // alpha: v1.12
  144. // beta: v1.14
  145. // Enable all logic related to the CSIDriver API object in storage.k8s.io
  146. CSIDriverRegistry featuregate.Feature = "CSIDriverRegistry"
  147. // owner: @verult
  148. // alpha: v1.12
  149. // beta: v1.14
  150. // ga: v1.17
  151. // Enable all logic related to the CSINode API object in storage.k8s.io
  152. CSINodeInfo featuregate.Feature = "CSINodeInfo"
  153. // owner: @screeley44
  154. // alpha: v1.9
  155. // beta: v1.13
  156. //
  157. // Enable Block volume support in containers.
  158. BlockVolume featuregate.Feature = "BlockVolume"
  159. // owner: @pospispa
  160. // GA: v1.11
  161. //
  162. // Postpone deletion of a PV or a PVC when they are being used
  163. StorageObjectInUseProtection featuregate.Feature = "StorageObjectInUseProtection"
  164. // owner: @aveshagarwal
  165. // alpha: v1.9
  166. //
  167. // Enable resource limits priority function
  168. ResourceLimitsPriorityFunction featuregate.Feature = "ResourceLimitsPriorityFunction"
  169. // owner: @m1093782566
  170. // GA: v1.11
  171. //
  172. // Implement IPVS-based in-cluster service load balancing
  173. SupportIPVSProxyMode featuregate.Feature = "SupportIPVSProxyMode"
  174. // owner: @dims, @derekwaynecarr
  175. // alpha: v1.10
  176. // beta: v1.14
  177. //
  178. // Implement support for limiting pids in pods
  179. SupportPodPidsLimit featuregate.Feature = "SupportPodPidsLimit"
  180. // owner: @feiskyer
  181. // alpha: v1.10
  182. //
  183. // Enable Hyper-V containers on Windows
  184. HyperVContainer featuregate.Feature = "HyperVContainer"
  185. // owner: @mikedanese
  186. // beta: v1.12
  187. //
  188. // Implement TokenRequest endpoint on service account resources.
  189. TokenRequest featuregate.Feature = "TokenRequest"
  190. // owner: @mikedanese
  191. // beta: v1.12
  192. //
  193. // Enable ServiceAccountTokenVolumeProjection support in ProjectedVolumes.
  194. TokenRequestProjection featuregate.Feature = "TokenRequestProjection"
  195. // owner: @mikedanese
  196. // alpha: v1.13
  197. //
  198. // Migrate ServiceAccount volumes to use a projected volume consisting of a
  199. // ServiceAccountTokenVolumeProjection. This feature adds new required flags
  200. // to the API server.
  201. BoundServiceAccountTokenVolume featuregate.Feature = "BoundServiceAccountTokenVolume"
  202. // owner: @mtaufen
  203. // alpha: v1.18
  204. //
  205. // Enable OIDC discovery endpoints (issuer and JWKS URLs) for the service
  206. // account issuer in the API server.
  207. // Note these endpoints serve minimally-compliant discovery docs that are
  208. // intended to be used for service account token verification.
  209. ServiceAccountIssuerDiscovery featuregate.Feature = "ServiceAccountIssuerDiscovery"
  210. // owner: @Random-Liu
  211. // beta: v1.11
  212. //
  213. // Enable container log rotation for cri container runtime
  214. CRIContainerLogRotation featuregate.Feature = "CRIContainerLogRotation"
  215. // owner: @krmayankk
  216. // beta: v1.14
  217. //
  218. // Enables control over the primary group ID of containers' init processes.
  219. RunAsGroup featuregate.Feature = "RunAsGroup"
  220. // owner: @saad-ali
  221. // ga
  222. //
  223. // Allow mounting a subpath of a volume in a container
  224. // Do not remove this feature gate even though it's GA
  225. VolumeSubpath featuregate.Feature = "VolumeSubpath"
  226. // owner: @gnufied
  227. // beta : v1.12
  228. // GA : v1.17
  229. //
  230. // Add support for volume plugins to report node specific
  231. // volume limits
  232. AttachVolumeLimit featuregate.Feature = "AttachVolumeLimit"
  233. // owner: @ravig
  234. // alpha: v1.11
  235. //
  236. // Include volume count on node to be considered for balanced resource allocation while scheduling.
  237. // A node which has closer cpu,memory utilization and volume count is favoured by scheduler
  238. // while making decisions.
  239. BalanceAttachedNodeVolumes featuregate.Feature = "BalanceAttachedNodeVolumes"
  240. // owner: @kevtaylor
  241. // alpha: v1.14
  242. // beta: v1.15
  243. // ga: v1.17
  244. //
  245. // Allow subpath environment variable substitution
  246. // Only applicable if the VolumeSubpath feature is also enabled
  247. VolumeSubpathEnvExpansion featuregate.Feature = "VolumeSubpathEnvExpansion"
  248. // owner: @vladimirvivien
  249. // alpha: v1.11
  250. // beta: v1.14
  251. //
  252. // Enables CSI to use raw block storage volumes
  253. CSIBlockVolume featuregate.Feature = "CSIBlockVolume"
  254. // owner: @vladimirvivien
  255. // alpha: v1.14
  256. // beta: v1.16
  257. //
  258. // Enables CSI Inline volumes support for pods
  259. CSIInlineVolume featuregate.Feature = "CSIInlineVolume"
  260. // owner: @tallclair
  261. // alpha: v1.12
  262. // beta: v1.14
  263. //
  264. // Enables RuntimeClass, for selecting between multiple runtimes to run a pod.
  265. RuntimeClass featuregate.Feature = "RuntimeClass"
  266. // owner: @mtaufen
  267. // alpha: v1.12
  268. // beta: v1.14
  269. // GA: v1.17
  270. //
  271. // Kubelet uses the new Lease API to report node heartbeats,
  272. // (Kube) Node Lifecycle Controller uses these heartbeats as a node health signal.
  273. NodeLease featuregate.Feature = "NodeLease"
  274. // owner: @janosi
  275. // alpha: v1.12
  276. //
  277. // Enables SCTP as new protocol for Service ports, NetworkPolicy, and ContainerPort in Pod/Containers definition
  278. SCTPSupport featuregate.Feature = "SCTPSupport"
  279. // owner: @xing-yang
  280. // alpha: v1.12
  281. // beta: v1.17
  282. //
  283. // Enable volume snapshot data source support.
  284. VolumeSnapshotDataSource featuregate.Feature = "VolumeSnapshotDataSource"
  285. // owner: @jessfraz
  286. // alpha: v1.12
  287. //
  288. // Enables control over ProcMountType for containers.
  289. ProcMountType featuregate.Feature = "ProcMountType"
  290. // owner: @janetkuo
  291. // alpha: v1.12
  292. //
  293. // Allow TTL controller to clean up Pods and Jobs after they finish.
  294. TTLAfterFinished featuregate.Feature = "TTLAfterFinished"
  295. // owner: @dashpole
  296. // alpha: v1.13
  297. // beta: v1.15
  298. //
  299. // Enables the kubelet's pod resources grpc endpoint
  300. KubeletPodResources featuregate.Feature = "KubeletPodResources"
  301. // owner: @davidz627
  302. // alpha: v1.14
  303. // beta: v1.17
  304. //
  305. // Enables the in-tree storage to CSI Plugin migration feature.
  306. CSIMigration featuregate.Feature = "CSIMigration"
  307. // owner: @davidz627
  308. // alpha: v1.14
  309. // beta: v1.17
  310. //
  311. // Enables the GCE PD in-tree driver to GCE CSI Driver migration feature.
  312. CSIMigrationGCE featuregate.Feature = "CSIMigrationGCE"
  313. // owner: @davidz627
  314. // alpha: v1.17
  315. //
  316. // Disables the GCE PD in-tree driver.
  317. // Expects GCE PD CSI Driver to be installed and configured on all nodes.
  318. CSIMigrationGCEComplete featuregate.Feature = "CSIMigrationGCEComplete"
  319. // owner: @leakingtapan
  320. // alpha: v1.14
  321. // beta: v1.17
  322. //
  323. // Enables the AWS EBS in-tree driver to AWS EBS CSI Driver migration feature.
  324. CSIMigrationAWS featuregate.Feature = "CSIMigrationAWS"
  325. // owner: @leakingtapan
  326. // alpha: v1.17
  327. //
  328. // Disables the AWS EBS in-tree driver.
  329. // Expects AWS EBS CSI Driver to be installed and configured on all nodes.
  330. CSIMigrationAWSComplete featuregate.Feature = "CSIMigrationAWSComplete"
  331. // owner: @andyzhangx
  332. // alpha: v1.15
  333. //
  334. // Enables the Azure Disk in-tree driver to Azure Disk Driver migration feature.
  335. CSIMigrationAzureDisk featuregate.Feature = "CSIMigrationAzureDisk"
  336. // owner: @andyzhangx
  337. // alpha: v1.17
  338. //
  339. // Disables the Azure Disk in-tree driver.
  340. // Expects Azure Disk CSI Driver to be installed and configured on all nodes.
  341. CSIMigrationAzureDiskComplete featuregate.Feature = "CSIMigrationAzureDiskComplete"
  342. // owner: @andyzhangx
  343. // alpha: v1.15
  344. //
  345. // Enables the Azure File in-tree driver to Azure File Driver migration feature.
  346. CSIMigrationAzureFile featuregate.Feature = "CSIMigrationAzureFile"
  347. // owner: @andyzhangx
  348. // alpha: v1.17
  349. //
  350. // Disables the Azure File in-tree driver.
  351. // Expects Azure File CSI Driver to be installed and configured on all nodes.
  352. CSIMigrationAzureFileComplete featuregate.Feature = "CSIMigrationAzureFileComplete"
  353. // owner: @RobertKrawitz
  354. // beta: v1.15
  355. //
  356. // Implement support for limiting pids in nodes
  357. SupportNodePidsLimit featuregate.Feature = "SupportNodePidsLimit"
  358. // owner: @wk8
  359. // alpha: v1.14
  360. // beta: v1.16
  361. //
  362. // Enables GMSA support for Windows workloads.
  363. WindowsGMSA featuregate.Feature = "WindowsGMSA"
  364. // owner: @bclau
  365. // alpha: v1.16
  366. // beta: v1.17
  367. // GA: v1.18
  368. //
  369. // Enables support for running container entrypoints as different usernames than their default ones.
  370. WindowsRunAsUserName featuregate.Feature = "WindowsRunAsUserName"
  371. // owner: @adisky
  372. // alpha: v1.14
  373. // beta: v1.18
  374. //
  375. // Enables the OpenStack Cinder in-tree driver to OpenStack Cinder CSI Driver migration feature.
  376. CSIMigrationOpenStack featuregate.Feature = "CSIMigrationOpenStack"
  377. // owner: @adisky
  378. // alpha: v1.17
  379. //
  380. // Disables the OpenStack Cinder in-tree driver.
  381. // Expects the OpenStack Cinder CSI Driver to be installed and configured on all nodes.
  382. CSIMigrationOpenStackComplete featuregate.Feature = "CSIMigrationOpenStackComplete"
  383. // owner: @MrHohn
  384. // alpha: v1.15
  385. // beta: v1.16
  386. // GA: v1.17
  387. //
  388. // Enables Finalizer Protection for Service LoadBalancers.
  389. ServiceLoadBalancerFinalizer featuregate.Feature = "ServiceLoadBalancerFinalizer"
  390. // owner: @RobertKrawitz
  391. // alpha: v1.15
  392. //
  393. // Allow use of filesystems for ephemeral storage monitoring.
  394. // Only applies if LocalStorageCapacityIsolation is set.
  395. LocalStorageCapacityIsolationFSQuotaMonitoring featuregate.Feature = "LocalStorageCapacityIsolationFSQuotaMonitoring"
  396. // owner: @denkensk
  397. // alpha: v1.15
  398. //
  399. // Enables NonPreempting option for priorityClass and pod.
  400. NonPreemptingPriority featuregate.Feature = "NonPreemptingPriority"
  401. // owner: @j-griffith
  402. // alpha: v1.15
  403. // beta: v1.16
  404. //
  405. // Enable support for specifying an existing PVC as a DataSource
  406. VolumePVCDataSource featuregate.Feature = "VolumePVCDataSource"
  407. // owner: @egernst
  408. // alpha: v1.16
  409. //
  410. // Enables PodOverhead, for accounting pod overheads which are specific to a given RuntimeClass
  411. PodOverhead featuregate.Feature = "PodOverhead"
  412. // owner: @khenidak
  413. // alpha: v1.15
  414. //
  415. // Enables ipv6 dual stack
  416. IPv6DualStack featuregate.Feature = "IPv6DualStack"
  417. // owner: @robscott @freehan
  418. // alpha: v1.16
  419. //
  420. // Enable Endpoint Slices for more scalable Service endpoints.
  421. EndpointSlice featuregate.Feature = "EndpointSlice"
  422. // owner: @robscott @freehan
  423. // alpha: v1.18
  424. //
  425. // Enable Endpoint Slice consumption by kube-proxy for improved scalability.
  426. EndpointSliceProxying featuregate.Feature = "EndpointSliceProxying"
  427. // owner: @Huang-Wei
  428. // beta: v1.18
  429. //
  430. // Schedule pods evenly across available topology domains.
  431. EvenPodsSpread featuregate.Feature = "EvenPodsSpread"
  432. // owner: @matthyx
  433. // alpha: v1.16
  434. // beta: v1.18
  435. //
  436. // Enables the startupProbe in kubelet worker.
  437. StartupProbe featuregate.Feature = "StartupProbe"
  438. // owner: @deads2k
  439. // beta: v1.17
  440. //
  441. // Enables the users to skip TLS verification of kubelets on pod logs requests
  442. AllowInsecureBackendProxy featuregate.Feature = "AllowInsecureBackendProxy"
  443. // owner: @mortent
  444. // alpha: v1.3
  445. // beta: v1.5
  446. //
  447. // Enable all logic related to the PodDisruptionBudget API object in policy
  448. PodDisruptionBudget featuregate.Feature = "PodDisruptionBudget"
  449. // owner: @m1093782566
  450. // alpha: v1.17
  451. //
  452. // Enables topology aware service routing
  453. ServiceTopology featuregate.Feature = "ServiceTopology"
  454. // owner: @wojtek-t
  455. // alpha: v1.18
  456. //
  457. // Enables a feature to make secrets and configmaps data immutable.
  458. ImmutableEphemeralVolumes featuregate.Feature = "ImmutableEphemeralVolumes"
  459. )
  460. func init() {
  461. runtime.Must(utilfeature.DefaultMutableFeatureGate.Add(defaultKubernetesFeatureGates))
  462. }
  463. // defaultKubernetesFeatureGates consists of all known Kubernetes-specific feature keys.
  464. // To add a new feature, define a key for it above and add it here. The features will be
  465. // available throughout Kubernetes binaries.
  466. var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{
  467. AppArmor: {Default: true, PreRelease: featuregate.Beta},
  468. DynamicKubeletConfig: {Default: true, PreRelease: featuregate.Beta},
  469. ExperimentalHostUserNamespaceDefaultingGate: {Default: false, PreRelease: featuregate.Beta},
  470. DevicePlugins: {Default: true, PreRelease: featuregate.Beta},
  471. TaintBasedEvictions: {Default: true, PreRelease: featuregate.Beta},
  472. RotateKubeletServerCertificate: {Default: true, PreRelease: featuregate.Beta},
  473. RotateKubeletClientCertificate: {Default: true, PreRelease: featuregate.Beta},
  474. LocalStorageCapacityIsolation: {Default: true, PreRelease: featuregate.Beta},
  475. Sysctls: {Default: true, PreRelease: featuregate.Beta},
  476. EphemeralContainers: {Default: false, PreRelease: featuregate.Alpha},
  477. PodShareProcessNamespace: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.19
  478. QOSReserved: {Default: false, PreRelease: featuregate.Alpha},
  479. ExpandPersistentVolumes: {Default: true, PreRelease: featuregate.Beta},
  480. ExpandInUsePersistentVolumes: {Default: true, PreRelease: featuregate.Beta},
  481. ExpandCSIVolumes: {Default: true, PreRelease: featuregate.Beta},
  482. AttachVolumeLimit: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.19
  483. CPUManager: {Default: true, PreRelease: featuregate.Beta},
  484. CPUCFSQuotaPeriod: {Default: false, PreRelease: featuregate.Alpha},
  485. TopologyManager: {Default: false, PreRelease: featuregate.Alpha},
  486. ServiceNodeExclusion: {Default: false, PreRelease: featuregate.Alpha},
  487. NodeDisruptionExclusion: {Default: false, PreRelease: featuregate.Alpha},
  488. CSIDriverRegistry: {Default: true, PreRelease: featuregate.Beta},
  489. CSINodeInfo: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.19
  490. BlockVolume: {Default: true, PreRelease: featuregate.Beta},
  491. StorageObjectInUseProtection: {Default: true, PreRelease: featuregate.GA},
  492. ResourceLimitsPriorityFunction: {Default: false, PreRelease: featuregate.Alpha},
  493. SupportIPVSProxyMode: {Default: true, PreRelease: featuregate.GA},
  494. SupportPodPidsLimit: {Default: true, PreRelease: featuregate.Beta},
  495. SupportNodePidsLimit: {Default: true, PreRelease: featuregate.Beta},
  496. HyperVContainer: {Default: false, PreRelease: featuregate.Alpha},
  497. TokenRequest: {Default: true, PreRelease: featuregate.Beta},
  498. TokenRequestProjection: {Default: true, PreRelease: featuregate.Beta},
  499. BoundServiceAccountTokenVolume: {Default: false, PreRelease: featuregate.Alpha},
  500. ServiceAccountIssuerDiscovery: {Default: false, PreRelease: featuregate.Alpha},
  501. CRIContainerLogRotation: {Default: true, PreRelease: featuregate.Beta},
  502. CSIMigration: {Default: true, PreRelease: featuregate.Beta},
  503. CSIMigrationGCE: {Default: false, PreRelease: featuregate.Beta}, // Off by default (requires GCE PD CSI Driver)
  504. CSIMigrationGCEComplete: {Default: false, PreRelease: featuregate.Alpha},
  505. CSIMigrationAWS: {Default: false, PreRelease: featuregate.Beta}, // Off by default (requires AWS EBS CSI driver)
  506. CSIMigrationAWSComplete: {Default: false, PreRelease: featuregate.Alpha},
  507. CSIMigrationAzureDisk: {Default: false, PreRelease: featuregate.Alpha},
  508. CSIMigrationAzureDiskComplete: {Default: false, PreRelease: featuregate.Alpha},
  509. CSIMigrationAzureFile: {Default: false, PreRelease: featuregate.Alpha},
  510. CSIMigrationAzureFileComplete: {Default: false, PreRelease: featuregate.Alpha},
  511. RunAsGroup: {Default: true, PreRelease: featuregate.Beta},
  512. CSIMigrationOpenStack: {Default: false, PreRelease: featuregate.Beta}, // Off by default (requires OpenStack Cinder CSI driver)
  513. CSIMigrationOpenStackComplete: {Default: false, PreRelease: featuregate.Alpha},
  514. VolumeSubpath: {Default: true, PreRelease: featuregate.GA},
  515. BalanceAttachedNodeVolumes: {Default: false, PreRelease: featuregate.Alpha},
  516. VolumeSubpathEnvExpansion: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.19,
  517. CSIBlockVolume: {Default: true, PreRelease: featuregate.Beta},
  518. CSIInlineVolume: {Default: true, PreRelease: featuregate.Beta},
  519. RuntimeClass: {Default: true, PreRelease: featuregate.Beta},
  520. NodeLease: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
  521. SCTPSupport: {Default: false, PreRelease: featuregate.Alpha},
  522. VolumeSnapshotDataSource: {Default: true, PreRelease: featuregate.Beta},
  523. ProcMountType: {Default: false, PreRelease: featuregate.Alpha},
  524. TTLAfterFinished: {Default: false, PreRelease: featuregate.Alpha},
  525. KubeletPodResources: {Default: true, PreRelease: featuregate.Beta},
  526. WindowsGMSA: {Default: true, PreRelease: featuregate.Beta},
  527. WindowsRunAsUserName: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.20
  528. ServiceLoadBalancerFinalizer: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
  529. LocalStorageCapacityIsolationFSQuotaMonitoring: {Default: false, PreRelease: featuregate.Alpha},
  530. NonPreemptingPriority: {Default: false, PreRelease: featuregate.Alpha},
  531. VolumePVCDataSource: {Default: true, PreRelease: featuregate.Beta},
  532. PodOverhead: {Default: false, PreRelease: featuregate.Alpha},
  533. IPv6DualStack: {Default: false, PreRelease: featuregate.Alpha},
  534. EndpointSlice: {Default: true, PreRelease: featuregate.Beta},
  535. EndpointSliceProxying: {Default: false, PreRelease: featuregate.Alpha},
  536. EvenPodsSpread: {Default: true, PreRelease: featuregate.Beta},
  537. StartupProbe: {Default: true, PreRelease: featuregate.Beta},
  538. AllowInsecureBackendProxy: {Default: true, PreRelease: featuregate.Beta},
  539. PodDisruptionBudget: {Default: true, PreRelease: featuregate.Beta},
  540. ServiceTopology: {Default: false, PreRelease: featuregate.Alpha},
  541. ImmutableEphemeralVolumes: {Default: false, PreRelease: featuregate.Alpha},
  542. // inherited features from generic apiserver, relisted here to get a conflict if it is changed
  543. // unintentionally on either side:
  544. genericfeatures.StreamingProxyRedirects: {Default: true, PreRelease: featuregate.Deprecated},
  545. genericfeatures.ValidateProxyRedirects: {Default: true, PreRelease: featuregate.Beta},
  546. genericfeatures.AdvancedAuditing: {Default: true, PreRelease: featuregate.GA},
  547. genericfeatures.DynamicAuditing: {Default: false, PreRelease: featuregate.Alpha},
  548. genericfeatures.APIResponseCompression: {Default: true, PreRelease: featuregate.Beta},
  549. genericfeatures.APIListChunking: {Default: true, PreRelease: featuregate.Beta},
  550. genericfeatures.DryRun: {Default: true, PreRelease: featuregate.Beta},
  551. genericfeatures.ServerSideApply: {Default: true, PreRelease: featuregate.Beta},
  552. genericfeatures.APIPriorityAndFairness: {Default: false, PreRelease: featuregate.Alpha},
  553. // features that enable backwards compatibility but are scheduled to be removed
  554. // ...
  555. HPAScaleToZero: {Default: false, PreRelease: featuregate.Alpha},
  556. LegacyNodeRoleBehavior: {Default: true, PreRelease: featuregate.Alpha},
  557. }