Healthcare
Unblocking a Stalled Platform Upgrade on AKS
Re-platforming a mission-critical intranet onto Azure Kubernetes with 100% Terraform-defined infrastructure and zero standing server access cleared the path for an upgrade that legacy VMs had blocked entirely.
The Challenge
Our client, a large U.S. nonprofit health system, runs its intranet on Sitecore. The platform serves hundreds of thousands of teammates, physicians, and staff across multiple regional sites. As part of a Sitecore 10.4 upgrade program led by a digital consultancy partner, TechVora was brought in to own the design and delivery of the cloud infrastructure underneath it.
The existing platform had reached a breaking point:
- Incompatible compute: the entire intranet ran on Windows Server 2019 virtual machines, an operating system Sitecore 10.4 doesn't support, blocking the upgrade path entirely
- Manual everything: infrastructure was provisioned by hand in the portal, with no infrastructure as code, leading to configuration drift and slow delivery
- Risky access: engineers patched production by logging into servers over RDP, a significant security and audit liability for a healthcare organization
- A fragile data tier: the databases had active maintenance issues and no automated index, statistics, or consistency management
- No real disaster recovery: the original DR plan had been abandoned, with secondary infrastructure never fully provisioned and failover never tested
- Minimal observability: no dedicated dashboards or alerting, leaving the team reactive to outages
The mandate was clear: replace the legacy VM platform with a modern, secure, fully automated architecture that could run Sitecore 10.4, with no loss of availability or performance for users and a content freeze of no more than five days during cutover.
What We Built
TechVora authored the technical design document that governed the infrastructure for the whole program, then executed the build across parallel workstreams.
A Containerized AKS Platform
We designed a new production Azure Kubernetes Service (AKS) environment across three availability zones, with zone-aligned Windows Server 2022 node pools that autoscale independently. Staging and production run on a single cluster, isolated by Kubernetes namespaces and Calico network policies. That's a leaner, more cost-effective topology than two clusters, with strong workload separation preserved.
100% Infrastructure as Code
Every component, including networking, AKS, SQL, Key Vault, the container registry, and monitoring, is provisioned through modular Terraform with remote state and strict environment separation. We also introduced an ephemeral environment that mirrors production exactly. Terraform changes are validated there against real production constraints (identity, quotas, networking), then torn down, which takes much of the risk out of production changes.
GitOps-Driven CI/CD
We replaced push-based deployments with GitHub Actions pipelines and Flux GitOps. Container images are built in CI, promoted through lower environments, and pulled into production by Flux with full auditability, approval gates, and built-in rollback. OIDC-federated identities removed stored cloud credentials from the pipelines entirely.
Zero Trust Network and Security
We implemented a hub-and-spoke network with Azure Firewall, a WAF-enabled Application Gateway, internal load balancing, Private Link, and NSG-enforced segmentation, peered into the enterprise network. In addition:
- The AKS API server is fully private, and SSH/RDP access to production nodes is disabled entirely
- All secrets, keys, and certificates live in Azure Key Vault, injected at runtime
- Workloads authenticate to SQL with Managed Identity, not stored credentials
- Security monitoring agents are built into every container image
A Modernized Data Platform
The data tier moved to Azure SQL Premium with Private Link, an auto-failover group replicating to a secondary region, and Elastic Jobs automating index maintenance, statistics updates, weekly consistency checks, and Sitecore-specific cleanup.
Integrations Re-Architected for Containers
Business-critical integrations were redesigned for the new platform. Document sync from SharePoint Online now lands on Azure Files mounted into the Sitecore containers. Policy content is offloaded to Azure Blob Storage and served through the Application Gateway. Production search runs on managed Solr. Each change takes load and complexity off the application tier.
Observability and Operations
We built Managed Grafana and Prometheus dashboards for AKS, SQL, network, and cache KPIs, wired Azure Monitor alerting into PagerDuty, and delivered runbooks for Terraform changes, AKS upgrades, OS rotation, and GitOps operations, along with knowledge transfer and hyper-care through the first production release.
Migration and Cutover Governance
We planned the phased move from VMs to AKS: performance benchmarking against the VM baseline, a production readiness checklist and dress rehearsal, two weeks of stakeholder UAT, a documented DR and rollback exercise, and a DNS-based cutover with validated rollback, all within the five-day content freeze.
The Results
| Before | After |
|---|---|
| Windows Server 2019 VMs, incompatible with Sitecore 10.4 | Windows Server 2022 containers on AKS across 3 availability zones |
| Manual provisioning in the portal | 100% infrastructure as code with Terraform |
| Push-based deployments | GitHub Actions and Flux GitOps with approval gates |
| RDP into production for patching | Zero SSH/RDP access, private cluster |
| Single flat network | Hub-and-spoke with Azure Firewall, WAF, Private Link, and Zero Trust segmentation |
| Static VMs, no horizontal scaling | Cluster autoscaling across zones |
| Credentials handled manually on servers | Azure Key Vault and Managed Identity |
| No dedicated dashboards | Grafana and Prometheus dashboards with PagerDuty alerting |
| Abandoned, untested DR | Validated rollback procedures and tested SQL failover |
- Sitecore 10.4 upgrade unblocked by moving off incompatible Windows Server 2019 VMs
- 100% of infrastructure codified in Terraform, eliminating manual provisioning and configuration drift
- Zero SSH/RDP access to production, replacing hands-on server maintenance with auditable, GitOps-driven change
- Designed for 99.9% availability, with a target of under 30 seconds for SQL failover, an RPO of 5 minutes or less, and an RTO of 4 hours or less
- Elastic scaling across three availability zones, replacing static VMs
- Lower-risk production changes, with every infrastructure change validated in a production mirror first
The result is a mission-critical platform for a major health system, modernized to enterprise healthcare security standards without disrupting its users.
Technologies
- Azure Kubernetes Service
- Windows Server 2022 Containers
- Terraform
- GitHub Actions
- Flux GitOps
- Azure Firewall
- Application Gateway + WAF
- Private Link
- Azure SQL Premium
- Azure Key Vault
- Managed Grafana + Prometheus
- Sitecore 10.4
Results
100%
Infrastructure defined in Terraform
Zero
SSH/RDP access to production
3 Zones
Autoscaling across availability zones
99.9%
Availability target, with < 30s SQL failover