summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Grant <bgrant0607@users.noreply.github.com>2017-03-23 14:41:27 -0700
committerGitHub <noreply@github.com>2017-03-23 14:41:27 -0700
commit8450b22b0eeeefcbbe48ebf5f28620e88473cd5c (patch)
treea8050ea4e0d2e7acb7cec37c40afa27db7e181b5
parentc79948e2d731c10367621c5db905a0b86538a1fb (diff)
Update kubectl-conventions.md
Added more principles.
-rw-r--r--contributors/devel/kubectl-conventions.md20
1 files changed, 20 insertions, 0 deletions
diff --git a/contributors/devel/kubectl-conventions.md b/contributors/devel/kubectl-conventions.md
index 2bb5f49d..0cfdc390 100644
--- a/contributors/devel/kubectl-conventions.md
+++ b/contributors/devel/kubectl-conventions.md
@@ -32,6 +32,26 @@ Updated: 8/27/2015
* `--namespace` should also override the value specified in a specified
resource
+* Most kubectl commands should be able to operate in bulk on resources, of mixed types.
+
+* Kubectl should not make any decisions based on its nor the server's release version string. Instead, API
+ discovery and/or OpenAPI should be used to determine available features.
+
+* We currently only guarantee one release of version skew is supported, but we strive to make old releases of kubectl
+ continue to work with newer servers in compliance with our API compatibility guarantees. This means, for instance, that
+ kubectl should not fully parse objects returned by the server into full Go types and then re-encode them, since that
+ would drop newly added fields. ([#3955](https://github.com/kubernetes/kubernetes/issues/3955))
+
+* General-purpose kubectl commands (e.g., get, delete, create -f, replace, patch, apply) should work for all resource types,
+ even those not present when that release of kubectl was built, such as APIs added in newer releases, aggregated APIs,
+ and third-party resources.
+
+* While functionality may be added to kubectl out of expedience, commonly needed functionality should be provided by
+ the server to make it easily accessible to all API clients. ([#12143](https://github.com/kubernetes/kubernetes/issues/12143))
+
+* Remaining non-trivial functionality remaining in kubectl should be made available to other clients via libraries
+ ([#7311](https://github.com/kubernetes/kubernetes/issues/7311))
+
## Command conventions
* Command names are all lowercase, and hyphenated if multiple words.