Windchill runs well in containers, but not by accident. A few things we learned the hard way.
Size the JVM for the pod, not the node
Method servers that are given memory limits without matching JVM settings get killed at the worst moment. Set heap explicitly and leave headroom for metaspace and native memory.
Treat the vault as a first-class dependency
File vaults on cloud file shares behave differently from local disks. Latency on small files matters more than throughput. Measure it before go-live, and monitor it afterwards.
Rehearse rollbacks
A rollback that has only been described is not a rollback. Every pipeline we build includes a rollback job that is exercised on the test environment with every release.
Clone environments on demand
The single biggest quality-of-life improvement for most teams is being able to refresh a test environment from production in a couple of hours. Once that exists, testing stops being negotiable.