Imperative versus declarative commands
Our examples thus far have focused on quick and imperative commands such as kubectl run
to create a deployment that in turn runs our software. This is convenient for something quick, but does not easily expose the full flexibility of the API. To leverage all the options available via Kubernetes, it is often more effective to manage files that describe the deployment you want.
When using these files, you can use commands such as kubectl create
, kubectl delete
, and kubectl replace
 along with the -f
option to specify the file to use. The imperative commands are easy and effective for simple setups, but you quickly need a sequence of commands that you repeat again and again to take full advantage of all the capabilities. You might be storing sets of these commands in a cheatsheet, but that can get cumbersome and isn't always clear.
Kubernetes offers a declarative mechanism as well, leveraging the kubectl apply
 command, which takes in files, reviews the current...