kubectl Usage Conventions
Recommended usage conventions for
kubectl in Reusable Scripts
For a stable output in a script:
- Request one of the machine-oriented output forms, such as
-o go-template, or
- Fully-qualify the version. For example,
jobs.v1.batch/myjob. This will ensure that kubectl does not use its default version that can change over time.
- Don't rely on context, preferences, or other implicit states.
kubectl run to satisfy infrastructure as code:
- Tag the image with a version-specific tag and don't move that tag to a new version. For example, use
r03062016-1-4, rather than
:latest(For more information, see Best Practices for Configuration).
- Check in the script for an image that is heavily parameterized.
- Switch to configuration files checked into source control for features that are needed, but not expressible via
You can use the
--dry-run=client flag to preview the object that would be sent to your cluster, without really submitting it.
kubectlgenerators are deprecated. See the Kubernetes v1.17 documentation for a list of generators and how they were used.
You can generate the following resources with a kubectl command,
kubectl create --dry-run=client -o yaml:
clusterrole Create a ClusterRole. clusterrolebinding Create a ClusterRoleBinding for a particular ClusterRole. configmap Create a configmap from a local file, directory or literal value. cronjob Create a cronjob with the specified name. deployment Create a deployment with the specified name. job Create a job with the specified name. namespace Create a namespace with the specified name. poddisruptionbudget Create a pod disruption budget with the specified name. priorityclass Create a priorityclass with the specified name. quota Create a quota with the specified name. role Create a role with single rule. rolebinding Create a RoleBinding for a particular Role or ClusterRole. secret Create a secret using specified subcommand. service Create a service using specified subcommand. serviceaccount Create a service account with the specified name.
- You can use
kubectl applyto create or update resources. For more information about using kubectl apply to update resources, see Kubectl Book.