Code change:
There was an effort at one point to promote it to Beta This may have moved to Service Catalog repo So question, do we remove it from kubernetes/kubernetes ?
/sig apps /sig service-catalog Thoughts please!
I see removal of perma-alpha APIs as a natural next step after the "" work to put end dates on beta APIs
The PodPreset functionality is not used in Service Catalog, we have an issue to remove references to it in the svc-cat repo, see: In the separate issue, we will figure out how to implement the e2e functionality for injecting secrets into an application: IMO it's ok to remove it as right now there is no decision about how to use it in svc-cat and currently we do not have enough capacity to work on that. In Kyma project but we also . /cc
Many of us have been waiting for this to become mature since along time. Removing PodPresets would be quite sad, as it would allow many people to stop having to write their own mutating webhooks for things PodPresets could do really well. Also I had in mind to use it for automatically mounting common volumes into pods and much more.
Me too Doing my usual check of has-this-thing-got-to-beta-so-I-can-finally-use-it only to find PodPresets had entirely disappeared This feature was going to greatly simplify our manifests. We do have the mutating webhooks feature now, which we didn't when PodPresets were created. However PodPresets are a lot cleaner would have received a lot of use. Even chart designs could be greatly simplified with optional PodPreset manifests. So I was looking forward to getting them available for use. Things in alpha can never gain traction or significant interest because managed providers won't let you enable them. This is not really a case of 'perma-beta'. But, if they were not going anywhere then I can understand removing them.
Speaking of gaining traction and momentum, the 'Avoiding permanent beta' policy only has a nine-month countdown for beta features. This new policy clashes with the recent popularity of managed releases, which tend to lag upstream releases by 6-9 months (2-3 releases). E.g. the current . That is before users can start planning upgrades in the 3-6 months after that. So a brand-spanking new beta feature won't reach cloud provider users until 9-15 months after it reaches beta upstream. Then users will start trying it out, and if it works well and get some interest and momentum behind it, only to find it has been already removed from a subsequent releases because of the mandatory 9-month policy In practice AWS probably won't enable a beta feature that is already removed upstream, so we can basically expect beta features will never reach, or get a chance for real-world feedback from cloud provider users. It is going to be tough for when the real world can't test a release with a beta feature until after it has already hit mandatory removal
For long running alpha features I usually recommend announcing depreaction and removing after one release, instead of right away. For extending the beta policy please see:
Please don't remove this feature! We only just discovered it this week and it was positioned to solve a real issue with common volume specs, in the same way mentioned by It would be really sad to now see it removed when it was going to fix some integration issues for us!
Could you elaborate on why PodPresets were never promoted to beta and why you want to remove them now? It seems like a useful feature.
This feature would have been very useful in several operating scenarios, such as setting proxy settings before a deployment.
Can anyone comment on what alternatives are? Without this feature we'll have a lot of duplication. No one likes duplication. We can address the Environment variables via ConfigMap and the envFrom keyword, however I cannot see anything for volumes, imagePullSecret etc.
It seems the alternative is just to use mutating webhooks. And there is even a port of PodPreset to a mutating web hook by redhat:
-1000 Removing PodPreset is terrible. Shame on you!
It doesn't look much maintained and active, sadly
Related:

Related discussion:
text: <del> apiVersion: settings.k8s.io/v1alpha1 kind: PodPreset metadata: annotations: "9": "10" clusterName: "15" creationTimestamp: null deletionGracePeriodSeconds: -4955867275792137171 finalizers: - "14" generateName: "3" generation: 8071137005907523419 labels: "7": "8" managedFields: - apiVersion: "17" fieldsType: "18" manager: "16" operation: 鐊唊飙Ş-U圴÷a/ɔ}摁(湗Ć] name: "2" namespace: "4" ownerReferences: - apiVersion: "11" blockOwnerDeletion: true controller: false kind: "12" name: "13" uid: Dz廔ȇ{sŊƏp resourceVersion: "11042405498087606203" selfLink: "5" uid: "7" spec: env: - name: "25" value: "26" valueFrom: configMapKeyRef: key: "32" name: "31" optional: false fieldRef: apiVersion: "27" fieldPath: "28" resourceFieldRef: containerName: "29" divisor: "91" resource: "30" secretKeyRef: key: "34" name: "33" optional: true envFrom: - configMapRef: name: "36" optional: true prefix: "35" secretRef: name: "37" optional: false selector: matchExpressions: - key: p503---477-49p---o61---4fy--9---7--9-9s-0-u5lj2--10pq-0-7-9-2-0/fP81.-.9Vdx.TB_M-H_5_.t..bG0 operator: In values: - D07.a_.y_y_o0_5qN2_---_M.N_._a6.9bHjdH.-.5_.I8__n matchLabels: 8---jop9641lg.p-g8c2-k-912e5-c-e63-n-3n/E9.8ThjT9s-j41-0-6p-JFHn7y-74.-0MUORQQ.N2.3: 68._bQw.-dG6c-.6--_x.--0wmZk1_8._3s_-_Bq.m_4 volumeMounts: - mountPath: "172" mountPropagation: œȠƬQg鄠[颐o啛更偢ɇ卷荙JLĹ] name: "171" readOnly: true subPath: "173" subPathExpr: "174" volumes: - awsElasticBlockStore: fsType: "43" partition: 1686297225 readOnly: true volumeID: "42" azureDisk: cachingMode: 穠C]躢|)黰eȪ嵛4$%Qɰ diskName: "106" diskURI: "107" fsType: "108" kind: Ï抴ŨfZhUʎ浵ɲõTo&蕭k readOnly: false azureFile: readOnly: true secretName: "92" shareName: "93" cephfs: monitors: - "77" path: "78" readOnly: true secretFile: "80" secretRef: name: "81" user: "79" cinder: fsType: "75" secretRef: name: "76" volumeID: "74" configMap: defaultMode: -958191807 items: - key: "95" mode: -513127725 path: "96" name: "94" optional: true csi: driver: "138" fsType: "139" nodePublishSecretRef: name: "142" readOnly: true volumeAttributes: "140": "141" downwardAPI: defaultMode: 1169718433 items: - fieldRef: apiVersion: "85" fieldPath: "86" mode: 345648859 path: "84" resourceFieldRef: containerName: "87" divisor: "965" resource: "88" emptyDir: sizeLimit: "700" ephemeral: readOnly: true volumeClaimTemplate: metadata: annotations: "150": "151" clusterName: "156" creationTimestamp: null deletionGracePeriodSeconds: -2351574817327272831 finalizers: - "155" generateName: "144" generation: 2131277878630553496 labels: "148": "149" managedFields: - apiVersion: "158" fieldsType: "159" manager: "157" operation: ɍi縱ù墴1Rƥ贫 name: "143" namespace: "145" ownerReferences: - apiVersion: "152" blockOwnerDeletion: false controller: false kind: "153" name: "154" uid: 臷Ľð»ųKĵ&4ʑ%:;栍dʪ resourceVersion: "16267283576845911679" selfLink: "146" uid: y綸_Ú8參遼ū spec: accessModes: - 掊°nʮ閼咎櫸eʔŊƞ究:hoĂɋ瀐 dataSource: apiGroup: "168" kind: "169" name: "170" resources: limits: <鴒翁杙Ŧ癃8鸖ɱJȉ罴: "587" requests: Ó6ǳ娝嘚庎D}埽uʎȺ眖R#yV: "156" selector: matchExpressions: - key: x--r7v66bm71u-n4f9wk-3--652x01--p--n4-4-t--2/C.A-j..9dfn3Y8d_0_.---M_4FpF_W-1._-vL_i.-_-a--G-I.-_Y33--.8U.6 operator: In values: - A.0.__cd..lv-_aLQbI2_-.XFw.8._..._Wxpe..J7r6 matchLabels: d.iUaC_wYSJfB._.zS-._..3le-Q4-R-083.SD..P.---5.-Z3P__D__6t-2.-m: wE._._3.-.83_iQ storageClassName: "167" volumeMode: 瘦ɖ緕ȚÍ勅跦Opwǩ曬逴 volumeName: "166" fc: fsType: "90" lun: -460478410 targetWWNs: - "89" wwids: - "91" flexVolume: driver: "69" fsType: "70" options: "72": "73" secretRef: name: "71" flocker: datasetName: "82" datasetUUID: "83" gcePersistentDisk: fsType: "41" partition: -1215463021 pdName: "40" readOnly: true gitRepo: directory: "46" repository: "44" revision: "45" glusterfs: endpoints: "59" path: "60" hostPath: path: "39" type: 3fƻfʣ繡楙¯ĦE iscsi: fsType: "55" initiatorName: "58" iqn: "53" iscsiInterface: "54" lun: -388204860 portals: - "56" readOnly: true secretRef: name: "57" targetPortal: "52" name: "38" nfs: path: "51" readOnly: true server: "50" persistentVolumeClaim: claimName: "61" photonPersistentDisk: fsType: "110" pdID: "109" portworxVolume: fsType: "125" readOnly: true volumeID: "124" projected: defaultMode: 1366821517 sources: - configMap: items: - key: "120" mode: -1120128337 path: "121" name: "119" optional: false downwardAPI: items: - fieldRef: apiVersion: "115" fieldPath: "116" mode: -1996616480 path: "114" resourceFieldRef: containerName: "117" divisor: "85" resource: "118" secret: items: - key: "112" mode: -163325250 path: "113" name: "111" optional: false serviceAccountToken: audience: "122" expirationSeconds: -1239370187818888272 path: "123" quobyte: group: "104" registry: "101" tenant: "105" user: "103" volume: "102" rbd: fsType: "64" image: "63" keyring: "67" monitors: - "62" pool: "65" readOnly: true secretRef: name: "68" user: "66" scaleIO: fsType: "133" gateway: "126" protectionDomain: "129" secretRef: name: "128" sslEnabled: true storageMode: "131" storagePool: "130" system: "127" volumeName: "132" secret: defaultMode: -999327618 items: - key: "48" mode: -815194340 path: "49" optional: false secretName: "47" storageos: fsType: "136" secretRef: name: "137" volumeName: "134" volumeNamespace: "135" vsphereVolume: fsType: "98" storagePolicyID: "100" storagePolicyName: "99" volumePath: "97" </del>