Tools, container images, templates and documentation for building, deploying and managing containerised EPICS IOCs in a Kubernetes cluster.
Python packages used at build time, at runtime and on the developer's desktop.
| Repository | Description | CI | Version |
|---|---|---|---|
| Documentation | epics-containers documentation and tutorials | ||
| ibek | IOC Builder for EPICS and Kubernetes: generates IOC startup and database from YAML | ||
| pvi | Process Variable Interface: define devices and generate their screens | ||
| ec-cli | Command line tool for developers and users, run outside of containers | ||
| builder2ibek | Converts legacy DLS builder IOCs and support modules to ibek | ||
| Kodman | A Docker-like command line interface for Kubernetes operations | ||
| stdio-socket | Exposes a process's stdio on a unix socket, used for IOC console access | ||
| podbench | A container for debugging Kubernetes pods |
Copier templates for new repositories, and the Helm charts they deploy with.
| Repository | Description | CI | Version |
|---|---|---|---|
| ioc-template | Template for Generic IOC container projects | ||
| services-template-helm | Template for IOC instance repositories deployed with Helm | ||
| services-template-compose | Template for IOC instance repositories deployed with docker compose | no CI | |
| deployment-template-argocd | Template for continuous deployment with Argo CD | no CI | |
| ec-helm-charts | Helm charts for IOC instances and other services |
The base image every Generic IOC builds from, the ibek recipes for support modules, and general-purpose Generic IOCs.
| Repository | Description | CI | Version |
|---|---|---|---|
| epics-base | Base container for all Generic IOCs, for linux-x86_64 and RTEMS | ||
| ibek-support | Recipes for building support modules into Generic IOCs with ibek | ||
| ioc-generic | A quick-to-load developer container IOC, for developing new support modules | ||
| ioc-streamdevice | Generic IOC for serial and TCP devices using StreamDevice | ||
| ibek-runtime-streamdevice | Library of StreamDevice protocols and templates for ioc-streamdevice |
Supporting services for a beamline, and the containers for RTEMS hard IOCs.
| Repository | Description | CI | Version |
|---|---|---|---|
| ec-phoebus | The Phoebus OPI tool for EPICS, in a container | ||
| epics-gateways | Channel Access and PV Access gateways, in a container | ||
| rtems-proxy | Runs in Kubernetes to launch and monitor RTEMS hard IOCs | ||
| rtems-bsp | Toolchain and Board Support Package for cross-compiling to RTEMS 6 |
Example beamlines and Generic IOCs that show the framework in use.
| Repository | Description | CI | Version |
|---|---|---|---|
| t11-services | Simulation beamline IOC instances and services | ||
| t11-deployment | Argo CD deployment for t11-services | ||
| p47-services | Reference beamline for the BL47P training rig | ||
| p47-deployment | Argo CD deployment for p47-services | ||
| example-services | Simulation beamline deployed with docker compose | ||
| ioc-adsimdetector | Generic IOC for the areaDetector simulator | ||
| ioc-adaravis | Generic IOC for GigE cameras using ADAravis | ||
| ioc-aduvc | Generic IOC for USB cameras using ADUVC | ||
| ioc-pmac | Generic IOC for Delta Tau Turbo PMAC and Power PMAC controllers | ||
| ioc-motorsim | Generic IOC for simulated motor controllers | ||
| ioc-python | Generic IOC for simple Python scripts |