Skip to content
  • Jasper Vaneessen's avatar
    05e96e25
    feat: add Timoni module and Kind quickstart for Kubernetes deployment · 05e96e25
    Jasper Vaneessen authored
    ### Additional changelog entries
    
    feat: add Kafka TLS support via Quarkus TLS Registry
    
    fix: add Kafka Streams application-id to prevent consumer group conflict with Reactive Messaging
    
    fix: change default Keycloak realm from quarkus to kvasir   
    
    ### Problem
       Previous deployment used **Helm + Helmfile** (marked deprecated). Recent overhaul of configuration
      management in Kvasir called for changes to the Helm chart, making it apparent that maintaining the Helm
      setup is both counterproductive and time-consuming.
    
       ### Evaluation Process
       After reviewing alternatives including **KubeVela**, **Kustomize**, **YokeCD**, **raw CUE**, and
      **Timoni**, we created a proof-of-concept with raw CUE files. We're now implementing Timoni, as it handles
      multi-environment patterns and service composition that would otherwise require custom integration work.
    
       ### Solution: Migrate to Timoni
       Use Timoni (CUE-based) for type-safe, declarative Kubernetes deployments:
    
       - **Reusable service module** - Single generic module for all Kvasir services (monorepo-friendly)
       - **Environment bundles** - Clean override files (dev, staging, prod)
       - **OCI registry support** - Proper versioning and GitOps-ready
       - **Simpler than raw CUE** - Built-in patterns for multi-environment deployments
    
       ### Progress
       - [x] Evaluate raw CUE approach (complex for multi-repo composition)
       - [x] Create base Timoni module structure
       - [x] Define comprehensive Kvasir configuration schema
       - [x] Wire configuration into ConfigMap generation
       - [x] Test module with monolith deployment
       - [x] Add MVP Kind setup
       - [x] Add Kind test to CI
       - [x] Document deployment workflows
       - [x] Publish module to OCI registry
       - [ ] Remove Helm/Helmfile setup
    
       ### Benefits vs Helm
       - **Type safety** - CUE validation catches errors early
       - **No templating** - Clean configuration merging with built-in logic instead of Go templates
       - **Better composition** - Share configs across services without copy-paste
       - **Synchronized versioning** - Single version for all microservices (monorepo pattern)
    
       ### References
       - CUE - https://cuelang.org/
       - Timoni - https://timoni.sh/
    
    See merge request !115
    05e96e25
    feat: add Timoni module and Kind quickstart for Kubernetes deployment
    Jasper Vaneessen authored
    ### Additional changelog entries
    
    feat: add Kafka TLS support via Quarkus TLS Registry
    
    fix: add Kafka Streams application-id to prevent consumer group conflict with Reactive Messaging
    
    fix: change default Keycloak realm from quarkus to kvasir   
    
    ### Problem
       Previous deployment used **Helm + Helmfile** (marked deprecated). Recent overhaul of configuration
      management in Kvasir called for changes to the Helm chart, making it apparent that maintaining the Helm
      setup is both counterproductive and time-consuming.
    
       ### Evaluation Process
       After reviewing alternatives including **KubeVela**, **Kustomize**, **YokeCD**, **raw CUE**, and
      **Timoni**, we created a proof-of-concept with raw CUE files. We're now implementing Timoni, as it handles
      multi-environment patterns and service composition that would otherwise require custom integration work.
    
       ### Solution: Migrate to Timoni
       Use Timoni (CUE-based) for type-safe, declarative Kubernetes deployments:
    
       - **Reusable service module** - Single generic module for all Kvasir services (monorepo-friendly)
       - **Environment bundles** - Clean override files (dev, staging, prod)
       - **OCI registry support** - Proper versioning and GitOps-ready
       - **Simpler than raw CUE** - Built-in patterns for multi-environment deployments
    
       ### Progress
       - [x] Evaluate raw CUE approach (complex for multi-repo composition)
       - [x] Create base Timoni module structure
       - [x] Define comprehensive Kvasir configuration schema
       - [x] Wire configuration into ConfigMap generation
       - [x] Test module with monolith deployment
       - [x] Add MVP Kind setup
       - [x] Add Kind test to CI
       - [x] Document deployment workflows
       - [x] Publish module to OCI registry
       - [ ] Remove Helm/Helmfile setup
    
       ### Benefits vs Helm
       - **Type safety** - CUE validation catches errors early
       - **No templating** - Clean configuration merging with built-in logic instead of Go templates
       - **Better composition** - Share configs across services without copy-paste
       - **Synchronized versioning** - Single version for all microservices (monorepo pattern)
    
       ### References
       - CUE - https://cuelang.org/
       - Timoni - https://timoni.sh/
    
    See merge request !115
To learn more about this project, read the wiki.
Loading