Skip to content

Plugin Types

While a Terra Plugin can be just about anything, we have organized some of the standard types you can expect to come across. These standard plugin types can also be seen and integrated into our front-end Terra App Store accessible via Genesis. Please see below for our different types, along with examples you can reference directly in our official plugins repository.

Plugin & Application

Our most basic types are our Plugin and Application types. The only difference between these, is an application requires either a "shared-volume" or "exclusive-volume" to install too. Where a plugin does not require any traditional storage space. You can learn more about our different plugin field types here.

Examples

  • Application: Firefox
  • Plugin: theme-enforcer-xfce

Workload

Our Workload plugins are intended to be schemas, which can be integrate directly with our Kuiper workload orchestration manager. These type of plugins should either have their category, or include a tag that specifies they either "workload", this is how it will be categorized in the Terra app store. They should also include a helm chart for the schema install. The schema will then be installed as a configMap. Once the schemas are installed, they can be used to create custom templates via Genesis in our Workloads table. Once a template is created users can launch their workload within a project deployment. For UI organization purposes, you will want to be sure to include a juno-innovations.com/workload annotation in both the metadata.yaml and the charts workstation.yaml. The metadata annotation will be used to categorize the workload type within the workload table (Workstation, Application, Workspace, etc.) . The charts workstation.yaml annotation is how Hubble will display the workload type once it has been launched. Please see below for examples that can be referenced on what these type of plugins look like, and how they can be created/customized to fit your needs.

For additional information about our Workload schemas see our Genesis Instances documentation

my-workload/templates/metadata.yaml
1
2
3
4
5
6
apiVersion: v1
kind: ConfigMap
metadata:
  name: "{{ .Release.Name }}-terra-metadata"
  annotations:
    juno-innovations.com/workload: "Application"  # mark this as a workload and it's type for the frontend UI
my-workload/scripts/chart/templates/workstation.yaml
1
2
3
4
5
6
7
8
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: "{{ .Values.name }}"
  annotations:
    juno-innovations.com/shared: "none"    # comma separated list of users that can access this workload as read only.
    juno-innovations.com/workload: "Application"  # mark this as a workload and it's type for the frontend UI
    juno-innovations.com/kuiper-state: "{{ .Values._kuiper }}"

Examples

  • Workload: ComfyUI
  • Workstation: Helios

Dashboards

Dashboards are special type of plugin that can be directly integrated into your Genesis front-end experience via an iFrame. Any Terra plugin whose category or tags include "dashboard". These plugins also allow for special permission handling. Updating your plugins metadata.yaml the permission field can be set to a specific titan group. Which will only allow users assigned to that Titan group access to the plugin.

my-plugin/templates/metadata.yaml
1
2
3
4
5
6
7
8
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-terra-metadata
data:
  chart: "{{ .Chart.Name }}"
  ingress: "{{ .Values.prefix }}"
  permission: "admin"  # only allow admin users access to this iFrame app

Examples

  • Dashboard: argocd-dashboard

Bundles

Bundles are a way to install multiple plugins in one convenient and easy to setup bundle. You can learn more about how to create a bundle here.

Examples

  • Bundle: orion-essentials