<p>I have put together a simple cluster with several deploys that interact nicely, dns works, etc. However, as I'm using Deployments, and I have a few questions that I could not find answered in the docs.</p>

<ul>
<li><p>How do I non-destructively update a deployment with a new copy of the deploy file? I've got edit and replace, but I'd really like to just pass in the file proper with it's changed fields (version, image, ports, etc.)</p></li>
<li><p>What's the preferred way of exposing a deployment as a service? There's a standalone file, there's an expose command... anything else I should consider? Is it possible to bundle the service into the deployment file?</p></li>
</ul>

<blockquote>
  <p>How do I non-destructively update a deployment</p>
</blockquote>

<p>You can use <code>kubectl replace</code> or <code>kubectl apply</code>.  Replace is a full replacement.  Apply tries to do a selective patch operation.</p>

<blockquote>
  <p>What's the preferred way of exposing a deployment as a service?</p>
</blockquote>

<p>All of your suggestions are valid.  Some people prefer a script, and for that <code>kubectl expose</code> is great.  Some people want more control and versioning, so YAML files + <code>kubectl apply</code> or <code>kubectl replace</code> are appropriate.  You can bundle multiple YAML "documents" into a single file, just join the blocks with "---" on a line by itself.</p>
