<p>I am new to Kubernetes and Minikube. Both look amazing tools, but I wonder if is there any way to have a single .yml file to deploy my services/deployments in all the environments, including local dev env...</p>

<p>The first limitation I see is related to service discovery since I would like to have my services behind a load balancer on the cloud, but at development environment, I can't since minikube don't support it, so I have to fall back to NodePort.</p>

<p>Can you provide me with some info about that matter?</p>

<p>There are other common differences between environments- names; credentials for any database or other permissioned resources; allocation of RAM/CPU; replica counts. There are limitations that minikube has as a runtime, compared to production k8s. </p>

<p>So- though one <em>can</em> use the same single yaml file in different environments, typically that's not what one <em>wants</em>.</p>

<p>What one usually wants is to have the general architectural shape of the solution be the same across environments, have differences extracted into minimalist configuration, then rendered using templates into environment-specific files to be used at deployment time. </p>

<p>The tool most commonly used to support this kind of approach is helm:</p>

<p><a href="https://helm.sh/" rel="nofollow noreferrer">https://helm.sh/</a></p>

<p>Helm is basically a glorified templating wrapper around kubectl (though it has an in-cluster component). With helm, you can use the same base set of resource files, extract environment differences into config files, and then use helm to deploy as appropriate to each environment.</p>
