Providers

Providers are pluggable modules that supply Jikkou with extensions and resource definitions for a specific platform or service (e.g., Apache Kafka, Schema Registry, Aiven).

What is a Provider?

A provider is a pluggable module that registers a cohesive set of extensions (controllers, collectors, transformations, validations, actions, health indicators) and resource types into Jikkou at runtime.

Each provider targets a specific platform and is responsible for:

  • Registering extensions such as controllers, collectors, transformations, validations, and actions.
  • Registering resource types that describe the API resources it manages.
  • Accepting configuration specific to its platform (e.g., Kafka bootstrap servers, Schema Registry URL).

Configuration

Providers are configured in the Jikkou configuration file under the jikkou.provider namespace. Each provider entry has a unique name and includes its type, an enabled flag, and a config block.

jikkou {
  provider.kafka {
    enabled = true
    type = io.streamthoughts.jikkou.kafka.KafkaExtensionProvider
    config = {
      client {
        bootstrap.servers = "localhost:9092"
      }
    }
  }
}

Configuration Properties

PropertyTypeDescription
enabledBooleanWhether this provider is active. Defaults to true.
typeStringFully qualified class name of the provider implementation.
defaultBooleanMark this instance as the default for its provider type. Defaults to false.
configObjectProvider-specific configuration (e.g., connection settings).

Multiple Instances

You can configure multiple instances of the same provider type by giving each a unique name. This is useful when you need to manage resources across different environments (e.g., dev vs. production Kafka clusters) from a single Jikkou installation.

Use default = true to mark one instance as the default for its provider type:

jikkou {
  provider.kafka-prod {
    enabled = true
    type = io.streamthoughts.jikkou.kafka.KafkaExtensionProvider
    default = true
    config = {
      client.bootstrap.servers = "kafka-prod:9092"
    }
  }
  provider.kafka-staging {
    enabled = true
    type = io.streamthoughts.jikkou.kafka.KafkaExtensionProvider
    config = {
      client.bootstrap.servers = "kafka-staging:9092"
    }
  }
}

Use the --provider flag to target a specific provider instance when running commands:

# Uses the default provider (kafka-prod)
jikkou get kafkatopics

# Explicitly target the staging provider
jikkou get kafkatopics --provider kafka-staging

# Apply resources to staging
jikkou apply -f my-resources.yaml --provider kafka-staging

Provider Resolution

The --provider flag is always optional. Jikkou resolves the target provider using the following fallback chain:

  1. Single provider of a given type: It is used automatically — no --provider flag needed, no default property needed. If you only have one Kafka provider configured, everything works exactly as before.
  2. Multiple providers, one marked default = true: The default is used when --provider is omitted. You only need the flag when targeting a non-default instance.
  3. Multiple providers, no default: You must specify --provider on every command. Omitting it results in an error: “No default configuration defined, and multiple configurations found for provider type”.

Provider selection works across all commands — apply, create, update, delete, diff, validate, replace, patch, get, action, and health — and extends to the REST API server with a provider field in reconciliation request bodies.

Built-in Providers

Jikkou ships with the following built-in extension providers:

ProviderDescription
Apache KafkaManage Kafka Topics, ACLs, Quotas, and Consumer Groups
Schema RegistryManage Schema Registry subjects and schemas
Kafka ConnectManage Kafka Connect connectors
AivenManage Aiven-specific resources (ACLs, Quotas, Schema Registry)
AWSManage AWS Glue Schema Registry resources
CoreCore resource types (e.g., ConfigMap)

Discovering Providers

You can inspect providers and the extensions they contribute using the CLI:

# List all registered extensions with their provider
jikkou api-extensions list

# List extensions for a specific provider
jikkou api-extensions list --provider kafka

# List API resources and their supported verbs
jikkou api-resources

SEE ALSO