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?