BUILDING FOR HIGH COMPLIANCE CLOUD HOW WE SIMPLIFIED ATO AND REDUCED COSTS IN GOVCLOUD
Deploying applications in federal environments often feels like navigating two opposing forces. On one side, you have the operational demand for rapid delivery and modern deployment patterns. On the other, you have rigid compliance frameworks, strict infrastructure controls, and legacy platform constraints.
When setting up our application stack within the FDA’s AWS GovCloud account, we needed a strategy that met strict compliance requirements without slowing down engineering velocity or driving up cloud spend.
By leveraging Mirantis Kubernetes Engine (MKE) running on AWS EC2 instances, we built a modern, declarative platform that solved these exact challenges. Here is how we used MKE in GovCloud to accelerate our Authority to Operate (ATO), optimize our compute costs, and mitigate operational risk.
1. Accelerating ATOs Through Manifest-Driven Compliance
Securing an ATO in a government agency is usually a long, documentation-heavy process. A major hurdle for us was infrastructure governance: the agency had not yet adopted full-stack IaC tools like Terraform. Without Terraform to provision and track our application footprint, we needed another way to ensure auditability and repeatability.
Kubernetes natively solved this for us above the compute layer. Instead of managing state manually or relying on custom infrastructure scripts, we codified our entire application architecture directly in version-controlled Kubernetes manifests:
- Deployments to declare runtime state and replica strategies.
- Services to standardize network routing within the cluster.
- ConfigMaps and Secrets to separate configuration and sensitive credentials from code.
We interacted directly with the Kubernetes API to deploy these manifests straight from our repository. From an auditor’s perspective, this provided instant compliance alignment. Every change, configuration shift, and environment modification was committed to Git and executed declaratively. We had a complete audit trail of what was running, how it was configured, and who approved the change.
To complement this, we integrated Mirantis Container Registry (MCR) into our workflow. MCR gave us a controlled, secure image management layer. Whether we were pushing updates to a local data center development environment or deploying into production in AWS GovCloud, we guaranteed that the underlying container images were identical, scanned, and policy-compliant.
2. Maximizing Compute Efficiency and Cutting EC2 Overhead
Cloud costs in federal environments can balloon quickly when applications are provisioned using traditional, static architecture patterns.
Normally, the default approach in cloud migrations is spinning up dedicated EC2 instances for every application layer or microservice. In high-compliance environments, this results in massively underutilized virtual machines, where you pay for idle CPU and memory headroom on dozens of separate instances just to maintain isolation boundaries.
By running our workloads on an existing MKE cluster running on EC2, we shifted to a multi-tenant compute model:
+-----------------------------------------------------------------------+
| AWS EC2 Worker Nodes |
| +---------------------------------+-------------------------------+ |
| | Demo Namespace | Production Namespace | |
| | [ App Pod ] [ App Pod ] | [ App Pod ] [ App Pod ] | |
| +---------------------------------+-------------------------------+ |
| | Shared K8s Bin-Packing & Scheduling | |
+-----------------------------------------------------------------------+
Instead of managing dedicated EC2 instances per tier, our application runs as a NodePort service inside the cluster. Kubernetes handles all the bin-packing and pod scheduling across the worker nodes. If an application instance experiences a spike in traffic, the Kubernetes scheduler places additional pods on nodes with available capacity.
When we need to handle higher load, we simply increase our deployment replica count in the manifest rather than provisioning, patching, and bootstrapping new EC2 instances. This bin-packing model allowed us to maximize compute utilization across our EC2 fleet, directly driving down our monthly AWS footprint and infrastructure overhead.
3. Eliminating Environment Drift and Operational Risk
One of the most frustrating sources of production incidents is environment drift: the gap between where an application is demoed or tested and where it actually runs live.
We eliminated this risk by hosting both our demo and production environments within the same MKE cluster on the exact same underlying EC2 nodes, isolated logically using Kubernetes namespaces.
Because demo and production share the exact same runtime environment, we completely removed the “works in demo, fails in production” dynamic. The container runtime, the host Linux kernel, the networking stack, and the cluster-level configurations are identical. The only variables separating our environments are namespace boundaries, specific resource quotas, and environment-scoped configurations.
CI/CD Rollouts and Self-Healing Infrastructure
To manage deployments without adding third-party GitOps operators into the cluster, we automated our CD pipelines directly within Jenkins.
Our Jenkins pipelines deploy directly to the Kubernetes API, using automated commit-hash verification to handle updates. The pipeline queries the target application endpoint at runtime to verify that the deployed container tag matches the exact SHA-1 commit hash generated during the build. This gives us a lightweight, deterministic deployment pattern similar to how tools like Argo CD reconcile state, enabling reliable rollouts and rapid rollbacks if a deployment fails checks.
Finally, relying on native Kubernetes primitives gives us built-in operational resiliency out of the box:
- Liveness and Readiness Probes: Ensure traffic is only routed to pods that are fully bootstrapped and healthy.
- Self-Healing Pods: If an application process panics or a pod crashes, the cluster automatically restarts or reschedules it without engineer intervention.
Final Thoughts
Navigating compliance in AWS GovCloud does not mean you have to sacrifice modern engineering practices. By combining Mirantis Kubernetes Engine with a manifest-driven deployment workflow, we met agency security and governance standards while simultaneously cutting compute costs and eliminating environment drift.
If you are currently navigating similar IaC or compliance constraints in federal cloud environments, I would love to hear how your team is tackling it.