tree: e14b28b513c5fec6e0f45f376dc4387f56d329ac [path history] [tgz]
  1. templates/
  2. .helmignore
  3. Chart.yaml
  4. README.md
  5. values.yaml
helm/charts/iggy/README.md

iggy

A Helm chart for Apache Iggy server and web-ui.

Prerequisites

  • Kubernetes 1.19+
  • Helm 3.2.0+
  • PV provisioner support in the underlying infrastructure (if persistence is enabled)

io_uring Requirements

Iggy server uses io_uring for high-performance async I/O. This requires:

  1. IPC_LOCK capability - For locking memory required by io_uring
  2. Unconfined seccomp profile - To allow io_uring syscalls

These are configured by default in the chart's securityContext and podSecurityContext.

Quick Start

# Clone the repository
git clone https://github.com/apache/iggy.git
cd iggy

# Install with persistence enabled
helm install iggy ./helm/charts/iggy \
  --set server.persistence.enabled=true \
  --set server.serviceMonitor.enabled=false

# Install with custom root credentials
helm install iggy ./helm/charts/iggy \
  --set server.persistence.enabled=true \
  --set server.serviceMonitor.enabled=false \
  --set server.users.root.username=admin \
  --set server.users.root.password=secretpassword

Note: Set server.serviceMonitor.enabled=false if Prometheus Operator is not installed.

Installation

From Git Repository

git clone https://github.com/apache/iggy.git
cd iggy
helm install iggy ./helm/charts/iggy

With Persistence

helm install iggy ./helm/charts/iggy \
  --set server.persistence.enabled=true \
  --set server.persistence.size=50Gi

With Custom Values File

helm install iggy ./helm/charts/iggy -f custom-values.yaml

Uninstallation

helm uninstall iggy

Configuration

Server Configuration

KeyTypeDefaultDescription
server.enabledbooltrueEnable the Iggy server deployment
server.replicaCountint1Number of server replicas
server.image.repositorystring"apache/iggy"Server image repository
server.image.tagstring""Server image tag (defaults to chart appVersion)
server.ports.httpint3000HTTP API port
server.ports.tcpint8090TCP protocol port
server.ports.quicint8080QUIC protocol port

Persistence Configuration

KeyTypeDefaultDescription
server.persistence.enabledboolfalseEnable persistence using PVC
server.persistence.sizestring"8Gi"PVC storage size
server.persistence.storageClassstring""Storage class (empty = default)
server.persistence.accessModestring"ReadWriteOnce"PVC access mode
server.persistence.existingClaimstring""Use existing PVC

Security Configuration

KeyTypeDefaultDescription
server.users.root.usernamestring"iggy"Root user username
server.users.root.passwordstring"changeit"Root user password
server.users.root.createSecretbooltrueCreate secret for root user
server.users.root.existingSecret.namestring""Use existing secret
securityContext.capabilities.addlist["IPC_LOCK"]Container capabilities (required for io_uring)
podSecurityContext.seccompProfile.typestring"Unconfined"Seccomp profile (required for io_uring)

Monitoring Configuration

KeyTypeDefaultDescription
server.serviceMonitor.enabledbooltrueEnable ServiceMonitor for Prometheus Operator
server.serviceMonitor.intervalstring"30s"Scrape interval
server.serviceMonitor.pathstring"/metrics"Metrics endpoint path

Web UI Configuration

KeyTypeDefaultDescription
ui.enabledbooltrueEnable the Web UI deployment
ui.replicaCountint1Number of UI replicas
ui.image.repositorystring"apache/iggy-web-ui"UI image repository
ui.ports.httpint3050UI HTTP port
ui.server.endpointstring""Iggy server endpoint (auto-detected if empty)

Troubleshooting

Pod CrashLoopBackOff with “Out of memory” error

If you see:

Cannot create runtime: Out of memory (os error 12)

This means io_uring cannot lock sufficient memory. Ensure:

  1. securityContext.capabilities.add includes IPC_LOCK
  2. podSecurityContext.seccompProfile.type is Unconfined

These are set by default but may be overridden.

ServiceMonitor CRD not found

If you see:

no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"

Either install Prometheus Operator or disable ServiceMonitor:

helm install iggy ./helm/charts/iggy --set server.serviceMonitor.enabled=false

Server not accessible from other pods

Ensure the server binds to 0.0.0.0 instead of 127.0.0.1. This is configured by default via environment variables:

  • IGGY_HTTP_ADDRESS=0.0.0.0:3000
  • IGGY_TCP_ADDRESS=0.0.0.0:8090
  • IGGY_QUIC_ADDRESS=0.0.0.0:8080

Accessing the Server

Port Forward

# HTTP API
kubectl port-forward svc/iggy 3000:3000

# Web UI
kubectl port-forward svc/iggy-ui 3050:3050

Using Ingress

Enable ingress in values:

server:
  ingress:
    enabled: true
    className: nginx
    hosts:
      - host: iggy.example.com
        paths:
          - path: /
            pathType: Prefix

Values

See values.yaml for the full list of configurable values.