Unconference
# CRD and aggregation - future and pain points
Stefan Schminski @the_stts
Daniel Smith
SIG API-machinery
10:00-10:50 CRDs and aggregation - future and pain points
## Custom Resources
### Kubernetes 1.11
- Multiple versions without conversion (alpha)
- pruning (alpha)
- deep change of semantics of custom resources
- from JSON blob store to schema based storage
- defaulting (alpha)
- graceful deletion (alpha)
- server side printing columns (alpha)
- subresources (alpha)
- additionalProperties allowed (mutually exclusive with properties)
### Kubernetes 1.12+
- Multiple versions with declarative field renmaes
- Strict create mode
Missing from Roadmap:
- Additional Properties: Forbid additional fields
- Unknown fields are silently dropped instead of erroring
- Istio used CRD extensively: proto requires some kind of verification and CRDs are JSON
- currently planning to go to GA without proto support
- possibly in a longer term to plan
- Resource Quotas for Custom Resources
- doable, we know how but not currently implemented
- Defaulting: mutating webhook will default things when they are written
- Is Validation going to be required in the future
- poll the audience!
- gauging general sense of validation requirements (who wants them, what's missing?)
- missing: references to core types aren't allowed/can't be defined -- this can lead to versioning complications
- limit CRDs clusterwide such that the don't affect all namespaces
- no good discussion about how to improve this yet
- feel free to start one!
- Server side printing columns, per resource type needs to come from server -- client could be in different version than server and highlight wrong columns
Autoscaling is alpha today hopefuly beta in 1.11
### Versioning
Most asked for feature for a long time
It's coming but slowly
- "NoConversion": Maybe in 1.11
- "Declarative Conversions": maybe in 1.12+
- renames:
- spec.conversions.declarative.renames{
from: x
to: y
}
Questions:
- From/To conversions: currently just a sketch, there needs to be much more discussion about how it is implemented
- When do you use a CRD vs when do you use an Aggregated API server?
- Generally, start with CRD.
- Pain point of CRDS: how to add a fancy conversion/subresources
- Pain point of Aggregated API Server: how do you run storage? etcd?