Panfactum LogoPanfactum
Infrastructure ModulesSubmodulesKuberneteskube_argo_event_bus
kube_argo_event_bus
Beta
Submodule
Source Code Link

Argo Event Bus

Deploys an EventBus resource as a part of the Argo Events architecture.

The EventBus is a set of NATS nodes that temporarily store inbound events from EventSources before distributing them via Sensors.

Usage

A few notes for the proper usage of an EventBus:

  • An EventBus is a namespaced resource, and you can have at most one per namespace.

  • For every namespace where you want to deploy EventSources and Sensors, you must have an EventBus deployed.

Providers

The following providers are needed by this module:

  • kubectl (2.1.3)

  • kubernetes (2.34.0)

  • pf (0.0.7)

  • random (3.6.3)

Required Inputs

The following input variables are required:

namespace

Description: The namespace to deploy the EventBus into.

Type: string

Optional Inputs

The following input variables are optional (have default values):

arm_nodes_enabled

Description: Whether the database pods can be scheduled on arm64 nodes

Type: bool

Default: true

burstable_nodes_enabled

Description: Whether the database pods can be scheduled on burstable nodes

Type: bool

Default: true

cert_manager_namespace

Description: The namespace where cert-manager is deployed.

Type: string

Default: "cert-manager"

controller_nodes_enabled

Description: Whether to allow pods to schedule on EKS Node Group nodes (controller nodes)

Type: bool

Default: true

fsync_interval_seconds

Description: Interval in seconds at which data will be synced to disk on each node. Setting this to 0 will force an fsync after each message (which will lower overall throughput dramatically).

Type: number

Default: 10

helm_version

Description: The version of the bitnami/nats helm chart to use

Type: string

Default: "8.5.1"

instance_type_anti_affinity_required

Description: Whether to enable anti-affinity to prevent pods from being scheduled on the same instance type. Defaults to true iff sla_target >= 2.

Type: bool

Default: null

log_level

Description: The log level for the NATS pods. Must be one of: info, debug, trace

Type: string

Default: "info"

max_connections

Description: The maximum number of client connections to the NATS cluster

Type: number

Default: 64000

max_control_line_kb

Description: The maximum length of a protocol line including combined length of subject and queue group (in KB).

Type: number

Default: 4

max_outstanding_catchup_mb

Description: The maximum in-flight bytes for stream catch-up.

Type: number

Default: 128

max_payload_mb

Description: The maximum size of a message payload (in MB).

Type: number

Default: 8

minimum_memory_mb

Description: The minimum memory in MB to use for the NATS nodes

Type: number

Default: 100

monitoring_enabled

Description: Whether to allow monitoring CRs to be deployed in the namespace

Type: bool

Default: false

node_image_cached_enabled

Description: Whether to add the container images to the node image cache for faster startup times

Type: bool

Default: true

panfactum_scheduler_enabled

Description: Whether to use the Panfactum pod scheduler with enhanced bin-packing

Type: bool

Default: true

persistence_backups_enabled

Description: Whether to enable backups of the NATS durable storage.

Type: bool

Default: true

persistence_initial_storage_gb

Description: How many GB to initially allocate for persistent storage (will grow automatically as needed). Can only be set on cluster creation.

Type: number

Default: 1

persistence_storage_class_name

Description: The StorageClass to use for the PVs used to store filesystem data. Can only be set on cluster creation.

Type: string

Default: "ebs-standard-retained"

persistence_storage_increase_gb

Description: The amount of GB to increase storage by if free space drops below the threshold

Type: number

Default: 1

persistence_storage_increase_threshold_percent

Description: Dropping below this percent of free storage will trigger an automatic increase in storage size

Type: number

Default: 20

persistence_storage_limit_gb

Description: The maximum number of gigabytes of storage to provision for each NATS node

Type: number

Default: null

ping_interval_seconds

Description: Interval in seconds at which pings are sent to clients, leaf nodes, and routes.

Type: number

Default: 20

pull_through_cache_enabled

Description: Whether to use the ECR pull through cache for the deployed images

Type: bool

Default: false

spot_nodes_enabled

Description: Whether the database pods can be scheduled on spot nodes

Type: bool

Default: true

vault_credential_lifetime_hours

Description: The lifetime of database credentials generated by Vault

Type: number

Default: 16

vault_internal_pki_backend_mount_path

Description: The mount path of the PKI backend for internal certificates.

Type: string

Default: "pki/internal"

vault_internal_url

Description: The internal URL of the Vault cluster.

Type: string

Default: "http://vault-active.vault.svc.cluster.local:8200"

voluntary_disruption_window_cron_schedule

Description: The times when disruption windows should start

Type: string

Default: "0 4 * * *"

voluntary_disruption_window_enabled

Description: Whether to confine voluntary disruptions of pods in this module to specific time windows

Type: bool

Default: false

voluntary_disruption_window_seconds

Description: The length of the disruption window in seconds

Type: number

Default: 3600

voluntary_disruptions_enabled

Description: Whether to enable voluntary disruptions of pods in this module.

Type: bool

Default: true

vpa_enabled

Description: Whether the VPA resources should be enabled

Type: bool

Default: true

write_deadline_seconds

Description: The maximum number of seconds the server will block when writing messages to consumers.

Type: number

Default: 55

Outputs

No outputs.