EPICS IOCs at Diamond Light Source are built, deployed, and managed by a set of in-house tools that were implemented 15 years ago. This paper will detail a proof of concept to demonstrate replacing these legacy tools and processes with modern industry standards.
IOCs are packaged in containers with their unique dependencies included. A layered approach to container design ensures that disk space requirements are controlled. The dependency hierarchy is kept to a minimum for easy maintenance. Sources of container image builds have been chosen to maximize portability and enable collaboration.
IOC images are generic, and a single image is required for all containers that control a given class of device. Configuration is provided to the container in the form of a start-up script only. The configuration allows the generic IOC image to bootstrap a container for a unique IOC instance. This approach keeps the number of images required to a minimum.
Container orchestration for all beamlines in the facility is provided through a central Kubernetes cluster. The cluster has remote nodes that reside within each beamline network to host the IOCs for the local beamline.
All source, images and individual IOC configurations are held in repositories. Build and deployment to the production registries is handled by continuous integration.
Finally, a development container provides a portable development environment for maintaining and testing IOC code.