Skip to content

User Experience and the CLI #186

@gilesknap

Description

@gilesknap

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions