<p>I'd like to understand when it's better to favor a Custom Initializer Controller vs a Mutating Webhook.</p>

<p>From what I can gather, webhooks are:</p>

<ol>
<li>More powerful (can trigger on any action).</li>
<li>More performant (only persist to etcd once).</li>
<li>Easier to write (subjective, but production grade controllers aren’t trivial).</li>
<li>Less likely to break during complete redeploy (there seems to be a chicken-and-egg problem requiring the deployment to exist <em>before</em> the initializer is in place, or the initializer will block the deployment).</li>
</ol>

<p>When would I want an initializer instead?  …or are they being abandoned in favor of webhooks?</p>

<p>Always favor webhooks. Initializers are unlikely to ever graduate from alpha, and will probably be removed as the apimachinery team dislikes the approach. They might remain in a few specialized cases like Namespaces, but not in general.</p>
