TODO: Remove this usage of kubectl and replace with a function from apply.go using the controller-runtime client.
Command wraps exec.Command with specific functionality. This differentiates itself from the standard library by always collecting stdout and stderr. Command improves the UX of exec.Command for our specific use case.
NewCommand returns a configured Command.
Run executes the command and returns stdout, stderr and the error if there is any.
Option is a functional option type that modifies a Command.
WithArgs sets the arguments for the command such as `get pods -n kube-system` to the command `kubectl`.
WithCommand defines the command to run such as `kubectl` or `kind`.
WithStdin sets up the command to read from this io.Reader.