Wednesday, May 29, 2019

Containerize legacy applications (Epicor E4SE) - take one

A while back I was looking at containerising Epicor E4SE which is an application running on .net 2/4 framework, windows container wasn't mature enough and I had problem getting some basic stuff done at that time so I gave up.
With the initiative to move things to cloud, I once again take up this challenge and trying to sort this out this time.
so far I have got the following in place:

1. Only containerize the web front end, BPM workflow service will run on VM instead, the VM will also serve as batch processing server.
2. Within the containerized web app's web.config, setup the queue to be the  remote queue (MSMQ) hosted on the VM.
3. Site build need to be scripted using powershell script, this is not possible inside a container.
4. there was an issue installing crystal report runtime in container but google gave me the answer.
5. SQLXML is required for installing ICE 1.5
6. ICE won't install with IIS 10 (This Setup Requires Internet Information Server 5.1 or higher), the trick is to  manually update registry value and revert back after the installation.
7. Use PIDKEY parameter with ICE msi to install in silent mode.
8. I had problem with ICE EP1 EP2 installation in silent mode sine the msi installation has a custom action that requires user response, I tried to crack it using installation argument but eventually gave up and manually install the new version of assembly instead and use assembly binding redirect to resolve the error caused by multiple version of same assembly.
9. use gMSA  (Group managed service account) with container to support windows authentication and accessing domain protected resource from within the container.

I dont' think containerize the crystal report server is such a good idea so will leave it running in VM too, at the end all the web front end can be containerized, BPM and Report Server will still need their own VM but I reckon this is good enough for now. 


There is still a major hurdle before this whole thing can work, this time it is the msdtc that plays up, since I am using a VM for SQL , to make msdtc work it will requires tweaking quite a few things, hope this is not a show stopper. 

4/6: figured out that since I am running the container host in vmware environment, need to turn on the Promiscuous mode on the vSwitch, I doubt it will happen, might have to consider azure vm where cni will go into play.

No comments: