Skip to content

Jikkou 0.37.0 : Cannot find controller for resource type: group='kafka.jikkou.io', apiVersion='v1' and kind='KafkaTopicList #693

@dani

Description

@dani

Describe the bug
Running Jikkou 0.37.0 to create topics fails, while the exact same config was working in 0.36.6

To Reproduce
I'm running jikkou like this

jikkou config set-context exchange '--config-file=/local/jikkou.conf'
jikkou update '--selector=kind IN (KafkaTopic,KafkaTopicList)' '--files=/local/kafka-topics.yml'

It fails with this error

2026-02-17 07:59:39.560 io.streamthoughts.jikkou.core.exceptions.JikkouRuntimeException: Cannot find controller for resource type: group='kafka.jikkou.io', apiVersion='v1' and kind='KafkaTopicList
2026-02-17 07:59:39.560 	at io.streamthoughts.jikkou.core.BaseApi.lambda$getMatchingController$0(BaseApi.java:368)
2026-02-17 07:59:39.560 	at java.base@25.0.2/java.util.Optional.orElseThrow(Optional.java:403)
2026-02-17 07:59:39.560 	at io.streamthoughts.jikkou.core.BaseApi.getMatchingController(BaseApi.java:368)
2026-02-17 07:59:39.560 	at io.streamthoughts.jikkou.core.DefaultApi.lambda$doDiff$1(DefaultApi.java:641)
2026-02-17 07:59:39.560 	at java.base@25.0.2/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:214)
2026-02-17 07:59:39.560 	at java.base@25.0.2/java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1859)
2026-02-17 07:59:39.560 	at java.base@25.0.2/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
2026-02-17 07:59:39.560 	at java.base@25.0.2/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
2026-02-17 07:59:39.560 	at java.base@25.0.2/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
2026-02-17 07:59:39.560 	at java.base@25.0.2/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
2026-02-17 07:59:39.560 	at java.base@25.0.2/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:723)
2026-02-17 07:59:39.560 	at io.streamthoughts.jikkou.core.DefaultApi.doDiff(DefaultApi.java:654)
2026-02-17 07:59:39.560 	at io.streamthoughts.jikkou.core.DefaultApi.reconcile(DefaultApi.java:382)
2026-02-17 07:59:39.560 	at io.streamthoughts.jikkou.client.command.reconcile.BaseResourceCommand.call(BaseResourceCommand.java:58)
2026-02-17 07:59:39.560 	at io.streamthoughts.jikkou.client.command.reconcile.BaseResourceCommand.call(BaseResourceCommand.java:32)
2026-02-17 07:59:39.560 	at picocli.CommandLine.executeUserObject(CommandLine.java:2031)
2026-02-17 07:59:39.560 	at picocli.CommandLine.access$1500(CommandLine.java:148)
2026-02-17 07:59:39.560 	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2469)
2026-02-17 07:59:39.560 	at picocli.CommandLine$RunLast.handle(CommandLine.java:2461)
2026-02-17 07:59:39.560 	at picocli.CommandLine$RunLast.handle(CommandLine.java:2423)
2026-02-17 07:59:39.560 	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
2026-02-17 07:59:39.560 	at picocli.CommandLine$RunLast.execute(CommandLine.java:2425)
2026-02-17 07:59:39.560 	at io.streamthoughts.jikkou.client.Jikkou.executionStrategy(Jikkou.java:180)
2026-02-17 07:59:39.560 	at picocli.CommandLine.execute(CommandLine.java:2174)
2026-02-17 07:59:39.560 	at io.streamthoughts.jikkou.client.Jikkou.execute(Jikkou.java:171)
2026-02-17 07:59:39.560 	at io.streamthoughts.jikkou.client.Jikkou.main(Jikkou.java:131)
2026-02-17 07:59:39.560 	at java.base@25.0.2/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)
2026-02-17 07:59:39.560 
2026-02-17 07:59:39.560 Error: JikkouRuntimeException: Cannot find controller for resource type: group='kafka.jikkou.io', apiVersion='v1' and kind='KafkaTopicList

With jikkou.conf

Details
jikkou {
  kafka {
    client {
      bootstrap.servers = "10.117.13.20:24105,10.117.13.22:24105,10.117.13.24:24105"
      security.protocol = "SSL"
      ssl.keystore.location = "/secrets/jikkou.p12"
      ssl.keystore.type = "PKCS12"
      ssl.keystore.password = "xxxxxxx"
      ssl.truststore.location = "/secrets/jikkou.ca.pem"
      ssl.truststore.type = "PEM"
      client.id = "jikkou"
      client.dns.lookup = "use_all_dns_ips"
    }
  }
}

And kafka-topics.yml

Details
---
apiVersion: "core.jikkou.io/v1beta2"
kind: ConfigMap
metadata:
  name: 'TopicDefaultConfig'
data:
  min.insync.replicas: 2
  cleanup.policy: delete
  compression.type: zstd
  retention.ms: 604800000

---
apiVersion: kafka.jikkou.io/v1beta2
kind: KafkaTopicList
items:
  - metadata:
      name: main
    spec:
      partitions: 12
      replicas: 3
      configMapRefs: [ TopicDefaultConfig ]
  - metadata:
      name: main.ERROR
    spec:
      partitions: 12
      replicas: 3
      configMapRefs: [ TopicDefaultConfig ]
  - metadata:
      name: download-document
    spec:
      partitions: 12
      replicas: 3
      configMapRefs: [ TopicDefaultConfig ]
  - metadata:
      name: download-document.ERROR
    spec:
      partitions: 12
      replicas: 3
      configMapRefs: [ TopicDefaultConfig ]
  - metadata:
      name: ftp
    spec:
      partitions: 12
      replicas: 3
      configMapRefs: [ TopicDefaultConfig ]
  - metadata:
      name: ftp.ERROR
    spec:
      partitions: 12
      replicas: 3
      configMapRefs: [ TopicDefaultConfig ]
  - metadata:
      name: order
    spec:
      partitions: 12
      replicas: 3
      configMapRefs: [ TopicDefaultConfig ]
  - metadata:
      name: order.ERROR
    spec:
      partitions: 12
      replicas: 3
      configMapRefs: [ TopicDefaultConfig ]
  - metadata:
      name: payload
    spec:
      partitions: 12
      replicas: 3
      configMapRefs: [ TopicDefaultConfig ]
  - metadata:
      name: payload.ERROR
    spec:
      partitions: 12
      replicas: 3
      configMapRefs: [ TopicDefaultConfig ]
  - metadata:
      name: send-notifications
    spec:
      partitions: 12
      replicas: 3
      configMapRefs: [ TopicDefaultConfig ]
  - metadata:
      name: send-notifications.ERROR
    spec:
      partitions: 12
      replicas: 3
      configMapRefs: [ TopicDefaultConfig ]
  # For Kafka connect
  - metadata:
      name: __connect_configs
    spec:
      partitions: 1
      replicas: 3
      configs:
        min.insync.replicas: 2
        cleanup.policy: compact
  - metadata:
      name: __connect_offsets
    spec:
      partitions: 6
      replicas: 3
      configs:
        min.insync.replicas: 2
        cleanup.policy: compact
  - metadata:
      name: __connect_statuses
    spec:
      partitions: 6
      replicas: 3
      configs:
        min.insync.replicas: 2
        cleanup.policy: compact

Expected behavior
Config should be applied, missing topics created etc.

Runtime environment

  • Docker is Alpine 3.23, running on an AlmaLinux 9 host
  • Jikkou: 0.37.0
  • Docker version: 29.2.1
  • Kafka Cluster Version: 3.9.1 (in Kraft mode)

Additional context
The exact same config works with 0.36.6

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions