Support even ARGOCD in ec cli #71
Replies: 6 comments 8 replies
-
@amichelotti thanks for this. We have been looking for a GUI to give to beamline scientists and controls engineers for K8S and the standard dashboard is not ideal. We are also very keen not to make our own but use something that is tried and tested. I've not looked at ArgoCD yet but will definitely do so. @coretl this might be a good little project for someone. Maybe @marcelldls - you know |
Beta Was this translation helpful? Give feedback.
-
I know @garryod has looked at ArgoCD in the past, he probably has some thoughts... |
Beta Was this translation helpful? Give feedback.
-
@amichelotti our data analysis and data acquisition groups are beginning to look at ArgoCD and it looks like they are likely to adopt it. If this happens then it becomes a lot more attractive for the controls team to use it for IOC deployment too. As you are experienced in both ArgoCD and epics-containers I wonder if you could elaborate on how you would envisage using it with IOCs? Some questions come to mind (but I don't know that much about Argo so some may not make sense):
Let us know any other ideas you might have regarding how ArgoCD and epics-containers might integrate. Many thanks. |
Beta Was this translation helpful? Give feedback.
-
Hi Giles/all,
These three charts are root charts, meaning they contain and instantiate other charts. To deploy an IOC, a service, or a miscellaneous application for a specific beamline, I start with the main Git repository for the beamline (which is composed of subprojects). I then add the necessary lines in a What I find very useful with this workflow is that it’s easy to teach, and even physicists who aren't very familiar with IT can easily deploy soft IOCs in Python (using DLS soft IOCs) to make their crazy algos. They can also check if the IOC or process is running properly through ArgoCD's simplified GUI interface, which can be used to remove, restart, and update applications, and view logs. For more sophisticated tasks, such as attaching to the console of an IOC and issuing commands, using In normal use (if no need to debug or tracing), the ArgoCD GUI is sufficient and user-friendly. By utilizing labels, namespaces, and other features, you can quickly find applications and IOCs. You can find the "epics chart" for ArgoCD (code-named epik8) here: epik8-chart. It is very simple and allows launching other charts available at epics-containers. ArgoCD greatly facilitates integration with users who are more interested in the application layer (experiment data scientists) than in control systems. In summary, we use I have essentially a repository of 3 root charts that instantiates via ArgoCD other charts (public or custom). Those are generic and I rarely change. The beamline git contains 1 chart that is empty but its values.yaml instantiates the "epics chart (epik8s)" with a big yaml that contains all ioc,services and apps. It's also good to have just one point where change things and that things are traced by git. I must mention that this workflow is still relatively new, and we have not yet moved it into production (the first facility is scheduled for the end of June). Currently, only a limited number of people are making modifications, but the ease of putting things into production could also pose challenges. I am aware that ArgoCD is becoming very popular within the INFN IT community. I hope I have addressed your questions adequately. When our principal IT specialist returns from a conference, where he is presenting this work, he plans to write a comprehensive guide. This guide will include an Ansible playbook to install everything on a single node, allowing you to try out the full stack. In fact, this workflow is so simple that, combined with the "ibekized" IOCs, even physicists with no IT or software skills who need control for a small experiment could use such a single-node setup. |
Beta Was this translation helpful? Give feedback.
-
Thanks for a comprehensive response @amichelotti. I still don't think I'm clear on the connection between your epik8s yaml and the beamline repo services. The helm charts described by the beamline repo services folders require a little tweaking by the (the tweaks are packaging the config folder and updating AppVersion) I look forward to reading the guide when it is available, the whole approach sounds very encouraging. |
Beta Was this translation helpful? Give feedback.
-
Hi Giles,since I posted the idea, a little bit of things are changed and I automated a lot the way of deploying things. When I posted the idea was just to suggest wrapping the The starting apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: sparc-start-epik8-deploy
namespace: argocd
labels:
deploy: sparc
spec:
project: default
source:
repoURL: 'https://baltig.infn.it/lnf-da-control/epik8-sparc.git'
path: deploy
targetRevision: HEAD
helm:
parameters:
- name: beamline
value: sparc
destination:
server: 'https://kubernetes.default.svc'
namespace: sparc
syncPolicy:
automated:
prune: true # Optional: Automatically remove resources not specified in Helm chart
selfHeal: true
syncOptions:
- CreateNamespace=true
- Prune=true Then the chart https://baltig.infn.it/lnf-da-control/epik8-sparc.git cointains all the information to build a full system and it recursively call a list of charts.
And a (big) values.yaml with the information about iocs/services/apps. Together with the beamline chart repo (in this case epik8-sparc) I also bound configurations of the services and iocs that are mainly ibekized. So that I've my beamline fully described and reproducible in one point |
Beta Was this translation helpful? Give feedback.
-
I use ArgoCD to manage deploy synchronization of apps inside k8s. I found very useful because it helps to have production/development/,,, repositories aligned with their deploy. Has an essential GUI focused on applications (not as k8s dashboard) that can be understood also by people that dont know k8s. You can exactly know the status of the deployed application (iocs) in your cluster. It could be nice if 'ec' could generate yaml argocd application to launch iocs.
Beta Was this translation helpful? Give feedback.
All reactions