What is this feature?
Earlier this year Dominic Storey wrote about using a workdiroverride to start and stop App Connect Enterprise applications in a container environment. The options to perform these actions were not available in the Dashboard UI of the App Connect Operator as they are in the web UI for an App Connect Enterprise integration server. This is because, in general, you will be running multiple replicas of the integration runtimes which run your applications, and you need their state to be consistent. You also want them to be started or stopped, as you requested, if a new pod comes up following a failure, a scaling change or a restart. That blog post recommended the use of a workdiroverride to avoid an inconsistency.
From the App Connect Operator 12.6.0 release there are now also options in the Dashboard UI to start and stop applications, while maintaining the consistency across replicas you would expect when running in a containerized environment.
How does it work?
The buttons in the UI are taking the same approach and working with a workdiroverride to mark applications (which includes REST APIs) as started or stopped. A configuration resource, of type workdiroverride, is used for each integration runtime to determine the state of the applications. It is updated when options are selected in the UI, and then the change is rolled out across all the replicas. When the new pods are running the applications will then be stopped and started as requested. This will remain true even if you upgrade the integration runtime to a new version, or if you alter values in the integration runtime custom resource.
Considerations
As the state is being provided through a configuration, if you remove the reference to the configuration from the integration runtime custom resource then none of the applications will be marked as stopped. The configuration is named IntegrationRuntimeName-start-mode.
When you make changes there is a short delay while this is rolled out across all the replicas, which means if you reload the UI immediately it may not yet show the applications in the state you were expecting, e.g. an application may still state it is Stopped when you have just chosen Start. By default changes to integration runtime resources follow the Kubernetes Rolling Update strategy which means new pods are brought up one by one to avoid downtime. How long this takes will depend on a number of factors, including the speed of the cluster and how much CPU the integration runtime has been allocated, but normally this will be a fairly quick process.
You should avoid having an additional workdiroverride altering the state of the same application you've altered via the UI, as the final state will vary depending on which override is applied last.
Try it now
If you're using the 12.6.0 or later version of the App Connect Operator then you can try out this new feature by upgrading your Dashboard to version 13.0.1.1-r1 or later. The integration runtimes do not need to be running at this version in order to use the functionality, so you can take advantage right away even if you've not yet upgraded them.