-
Notifications
You must be signed in to change notification settings - Fork 1
Description
User Experience Discussion
Intro
We need to work out what we want the user experience to be for beamlines with containerised IOCs.
We have two kinds of customer:-
- Controls engineers (and maybe other devs)
- Beamline Scientists
The whole point of ec is to make things simple for managing containerised IOCs.
HOWEVER:
- We have two ways of managing IOCs and two corresponding 'backends' for
ec- kubectl and helm
- argocd
- We do not yet have parity of function between them
- Some important functions may not be possible with the argocd backend
Missing Functionality
The ArgoCD backend for ec does not currently support deploy but we can implement that by writing to the repo. I am strongly in favour of implementing this as I feel it would be better to have programmatic editing of the deployment repo instead of manual. Having said this, we still need to support the manual approach - at least for now that is how DAQ want to do it.
Features that have no way of being implemented in ArgoCD are:-
- attach to IOC shell: absolutely essential feature
- deploy-local: The argoCD equivalent is tracking a branch but this requires that all tentative changes go in the git repo and must be squashed later. deploy-local is a really handy way to do quick iteration on an IOC.
- debugging: this feature is not yet implemented but I'd like to automate the process of switching an IOC to debug mode and connecting to it with VSCode remote dev. This essentially has the same requirements as deploy-local
Two back ends
discussed in #182
We could have both backends enabled simultaneously and choose which to use based on function.
(Marcell is not going to like this!)
There are a couple of problems with this idea:
- it requires two sets of credentials, one for ArgoCD and one for kubectl
- although kubectl will be cached for long periods
- This is not enough to easily support deploy-local or debug-mode because you will need to turn off ArgoCD for the IOC in question and remember to turn it back on again
Default Setup on Beamline workstations
It would be good if using ec on a beamline workstation just worked. Simply setting up the default environment from environment.sh has a couple of issues:
- we have to decide between backends!
- sourcing environment.sh involves logging in to kubectl or ArgoCD - therefore has to be an interactive process
ec monitor service
One idea that can mitigate some of these issues is to have ec monitor running as a service in the cluster and serving its GUI over HTTP. Marcell has prototyped this and it looks really good.
This would mean there was a web page that anyone could go to (we could serve it to the beamline subnet onl.y I guess). This would allow anyone to:
- start and stop IOCs
- see what IOCs are running
- get IOC logs
The issue with this is it would be a single account running all of the calls to Argo/kubectl. We therefore loose any accountability (so just like the current state of play).