Skip to main content

A set of tools for generating Kubernetes Helm charts for EPICS-based systems.

Project description

epik8s-tools

epik8s-tools is a Python-based toolset for automating project structure generation, Helm chart creation, and deployment for EPICS (Experimental Physics and Industrial Control System) applications in Kubernetes environments EPIK8s. Designed to simplify complex deployment configurations, this package includes a command-line interface for rendering templates based on YAML configurations, making it easy to manage beamline and IOC (Input/Output Controller) configurations with a consistent structure. A simple guide to bring up a k8s single node cluster (extensible) is microk8s.

Features

  • Project Structure Generation: Automatically create directories and files needed for EPICS-based projects.
  • Helm Chart Creation: Generate Helm charts for Kubernetes deployments with custom values and templates.
  • OPI Generation: Configure OPI (Operator Interface) panels for each beamline, including macros and settings.
  • Support for Ingress and Load Balancers: Configurable settings for CA and PVA gateway IPs and ingress classes.
  • Customizable Options: Extensive CLI options to adapt configurations to specific project needs.
  • IOC Execution: Run IOC configurations directly using the epik8s-run tool.

Installation

Install epik8s-tools via pip:

pip install epik8s-tools

CLI Options

Option Description
--beamline Name of the beamline to configure.
--namespace Kubernetes namespace for the beamline deployment.
--targetRevision Target revision for Helm charts (default: experimental).
--serviceAccount Service account for Kubernetes.
--beamlinerepogit Git URL of the beamline repository.
--beamlinereporev Git revision for the repository (default: main).
--iocbaseip Base IP range for IOCs (e.g., 10.96.0.0/12).
--iocstartip Start IP within the IOC base range (default: 2).
--cagatewayip IP for the CA gateway load balancer.
--pvagatewayip IP for the PVA gateway load balancer.
--dnsnamespace DNS/IP address for ingress configuration.
--ingressclass Specify ingress class (haproxy, nginx, or empty for no ingress class).
--nfsserver NFS server address.
--nfsdirdata NFS directory for data partition (default: /epik8s/data).
--nfsdirautosave NFS directory for autosave partition (default: /epik8s/autosave).
--nfsdirconfig NFS directory for config partition (default: /epik8s/config).
--elasticsearch ElasticSearch server address.
--mongodb MongoDB server address.
--kafka Kafka server address.
--vcams Number of simulated cameras to generate (default: 1).
--vicpdas Number of simulated ICPDAS devices to generate (default: 1).
--mysqlchart Use custom MySQL chart instead of Bitnami (for microk8s).
--channelfinder Enable ChannelFinder and feeder services.
--openshift Flag for enabling OpenShift support.
--token Git personal token for repository access, if required.
--version Show version information and exit.

Examples

Basic Beamline Generation

Generate a new project structure for a beamline with the following command:

epik8s-tools my_project --beamline MyBeamline --iocbaseip 10.96.0.0/12 --beamlinerepogit https://github.com/beamline/repo.git

Generating OPI Panels

To generate OPI panels from YAML configuration files, you can use the epik8s-opigen tool. This tool reads a YAML file with OPI configurations and outputs the generated OPI files in the specified project directory.

Example Command

epik8s-opigen --yaml deploy/values.yaml --projectdir opi-output
  • --yaml: Path to the YAML configuration file (e.g., deploy/values.yaml).
  • --projectdir: Directory where the OPI files will be generated (e.g., opi-output).

This command will generate the OPI panel files based on the configurations specified in the YAML file and save them in the specified output directory.


Specifying CA and PVA Gateway IPs

For projects that require external access to Channel Access (CA) and PV Access (PVA) gateways, you can specify the IP addresses for the respective load balancers using the --cagatewayip and --pvagatewayip options.

Example Command

epik8s-tools my_project --beamline MyBeamline --cagatewayip 10.96.1.10 --pvagatewayip 10.96.1.11

Running IOCs with epik8s-run

The epik8s-run tool allows you to execute IOC configurations directly from a YAML file.

Example Command

epik8s-run beamline-config.yaml ioc1 ioc2 --workdir ./workdir --native
  • beamline-config.yaml: Path to the YAML configuration file containing IOC definitions.
  • ioc1, ioc2: Names of the IOCs to run.
  • --workdir: Working directory for temporary files (default: .).
  • --native: Run natively without using Docker.
  • --image: Specify the Docker image to use (default: ghcr.io/infn-epics/infn-epics-ioc-runtime:latest).

This command will validate the IOC configurations, generate necessary files, and start the IOCs either natively or in a Docker container.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

epik8s_tools-0.10.2.tar.gz (39.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

epik8s_tools-0.10.2-py3-none-any.whl (44.9 kB view details)

Uploaded Python 3

File details

Details for the file epik8s_tools-0.10.2.tar.gz.

File metadata

  • Download URL: epik8s_tools-0.10.2.tar.gz
  • Upload date:
  • Size: 39.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for epik8s_tools-0.10.2.tar.gz
Algorithm Hash digest
SHA256 fecf22090ca20cfbdc7fa59f1abbbb89b3c0fc715e641bee78025b0e127431e7
MD5 81f8304f69c568fe0219c92d64177f00
BLAKE2b-256 02123c92b91908f26f8728ee2f73546f27d55400e43b320505073aace0e29ccf

See more details on using hashes here.

File details

Details for the file epik8s_tools-0.10.2-py3-none-any.whl.

File metadata

  • Download URL: epik8s_tools-0.10.2-py3-none-any.whl
  • Upload date:
  • Size: 44.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for epik8s_tools-0.10.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6cd2ca3fe481aad7113eaf8458dd3e460ee502f88edd2ff2dce2acc84086a226
MD5 9ec580d36b9d06d6a8acaafabf758e59
BLAKE2b-256 e07886d4c5f4184edb645f1da97006c9b8da4daad2f02e437266ddd715743563

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page