code: func NewCmdDiff(out io.Writer) *cobra.Command {
  	flags := &diffFlags{
  		out: out,
  	}
  
  	cmd := &cobra.Command{
  		Use:   "diff [version]",
  		Short: "Show what differences would be applied to existing static pod manifests. See also: kubeadm upgrade apply --dry-run",
  		Run: func(cmd *cobra.Command, args []string) {
  			// TODO: Run preflight checks for diff to check that the manifests already exist.
  			kubeadmutil.CheckErr(runDiff(flags, args))
  		},
  	}
  
  	options.AddConfigFlag(cmd.Flags(), &flags.cfgPath)
  	cmd.Flags().StringVar(&flags.apiServerManifestPath, "api-server-manifest", defaultAPIServerManifestPath, "path to API server manifest")
  	cmd.Flags().StringVar(&flags.controllerManagerManifestPath, "controller-manager-manifest", defaultControllerManagerManifestPath, "path to controller manifest")
  	cmd.Flags().StringVar(&flags.schedulerManifestPath, "scheduler-manifest", defaultSchedulerManifestPath, "path to scheduler manifest")
  	cmd.Flags().IntVarP(&flags.contextLines, "context-lines", "c", 3, "How many lines of context in the diff")
  
  	return cmd
  }
docs: // NewCmdDiff returns the cobra command for `kubeadm upgrade diff`