Organisations should migrate when configuration is spread across environment variables, per-instance overrides, or hand-tuned deployment files that are hard to validate. Native Kubernetes resources make intent easier to audit, lint, and standardize. The right trigger is usually when repeated setup work is creating friction, inconsistencies, or upgrade risk across environments.
Why This Matters for Security Teams
Moving controller configuration into native Kubernetes resources is not just a packaging choice. It changes how intent is expressed, reviewed, and enforced. When settings live in environment variables, hand-edited manifests, or one-off overrides, teams lose a reliable control plane for change management, drift detection, and policy review. That creates the same class of risk seen in incidents involving exposed configuration and credentials, such as the JetBrains GitHub plugin token exposure and the Hard-Coded Secrets in VSCode Extensions research, where configuration sprawl made exposure easier to miss. NHI Mgmt Group research also shows that 96% of organisations store secrets outside of secrets managers, underscoring how often configuration control is still fragmented.
For security teams, the question is whether the controller’s configuration is stable enough, repeatable enough, and audit-friendly enough to belong in cluster-native objects such as ConfigMaps, Secrets, CRDs, or annotations. NIST Cybersecurity Framework 2.0 supports this direction because it strengthens governance, consistency, and recoverability. In practice, many teams discover configuration debt only after an upgrade, rollback, or incident exposes how many “special cases” were hidden outside the cluster.
How It Works in Practice
The practical decision point is whether the controller behaves like infrastructure with declared state or like an application with many per-instance exceptions. If the answer is declared state, native Kubernetes resources usually win. Controllers become easier to validate when their settings are captured in version-controlled manifests, reconciled by admission policy, and surfaced through standard tooling rather than scattered across deployment scripts.
A common path is to move immutable or low-volatility settings first: feature flags, reconcilers, retry thresholds, resource references, allowlists, and defaults that should be the same across environments. Sensitive values still need careful handling. Kubernetes Secrets can reduce exposure in manifests, but they are not a full security boundary, so organisations should pair them with encryption at rest, RBAC, and external secret management where needed. For more complex controllers, ConfigMaps and custom resources can separate operational intent from container images, which makes rollback and peer review much cleaner.
- Use native resources when the same configuration is repeated across clusters or namespaces.
- Prefer cluster-native config when validation, linting, or policy enforcement is currently manual.
- Keep runtime-specific values external only when they truly vary per deployment or must be injected late.
- Move gradually, starting with defaults and non-sensitive tuning before controller-specific edge cases.
This approach aligns with the governance themes in Ultimate Guide to NHIs — Standards, where repeatability and lifecycle control matter more than ad hoc operator knowledge. These controls tend to break down when controllers are tightly coupled to external systems that require environment-specific bootstrapping, because the configuration cannot be cleanly reconciled into a single declarative model.
Common Variations and Edge Cases
Tighter configuration standardization often increases migration effort, requiring organisations to balance governance gains against the cost of refactoring legacy deployment patterns. Not every controller should be pushed fully into native Kubernetes resources. Some workloads depend on startup-time discovery, per-tenant overrides, or secrets that rotate through an external vault and should remain abstracted rather than copied into cluster state.
There is also no universal standard for this yet. Current guidance suggests prioritising configuration that affects security posture, operational repeatability, and upgrade safety, while leaving highly dynamic or vendor-managed settings outside the cluster until the platform can validate them consistently. Controllers with many hidden defaults are especially risky, because the visible manifest may not represent the actual runtime behaviour. That mismatch is where drift and audit gaps usually appear.
For teams evaluating the cutover, the right test is simple: if a setting must be inspected during incident response, policy review, or disaster recovery, it should probably be expressible as a native resource unless there is a clear technical reason not to. If not, document the exception and treat it as temporary technical debt rather than a preferred operating model. In practice, organisations usually keep one foot in both models until a failure reveals which parts were never really declarative.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
OWASP Non-Human Identity Top 10 and CSA MAESTRO address the attack and risk surface, while NIST CSF 2.0 and NIST AI RMF set the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| NIST CSF 2.0 | GV.RM-01 | Configuration migration is a governance and risk decision, not only a deployment choice. |
| OWASP Non-Human Identity Top 10 | NHI-03 | Controller config often includes secrets and NHI material that should not be ad hoc. |
| CSA MAESTRO | GOV-2 | Agent and controller governance depends on auditable runtime configuration and policy. |
| NIST AI RMF | GOVERN | When controllers are autonomous or policy-driven, governance of configuration becomes essential. |
Treat controller configuration as governed state with approval, traceability, and change control.
Related resources from NHI Mgmt Group
- How do organisations decide when a visual API workflow editor is the right choice over configuration files?
- How do organisations decide whether to add a separate internal developer platform or extend the API platform they already have?
- How should teams handle Kubernetes Ingress Controller migration when deprecated ingress types are still in use?
- When should organisations prioritise Zero Standing Privilege for non-human identities?