Skip to content

Latest commit

 

History

History
35 lines (34 loc) · 3.31 KB

File metadata and controls

35 lines (34 loc) · 3.31 KB

Features

  • Cluster Configuration Management: Manage Kubernetes clusters across environments, regions and platforms with a declarative and centralized approach.
    • Enabled easy management of multiple (10+) clusters with various different configurations
    • Configuration is flattened from cluster directory leaf to root into a single config file, enabling easy application of DRY principals
    • Able to provide all component configs to single component. Useful for components that generate something for each cluster component, such as network policy, argo applications, or documentation.
    • Able to provide all cluster configs to components. Useful for cross-cluster monitoring.
    • Generate static configuration in a repeatable, idempotent manner.
  • Opinionated Structure: Enforces best practices for consistent and reliable cluster configurations.
    • Components are stored separately in their own folders, allowing for easy management and version control.
    • Able to define multiple versions of components with different configuration
    • Configuration files are written in YAML or JSON, ensuring compatibility with existing tools and workflows.
    • Ensures consistency across Kubernetes clusters, reducing errors and improving maintainability.
    • Provides a straightforward approach to complex Kubernetes configurations, making it easier for teams to adopt.
    • Designed to support clusters of all sizes, from simple single-node setups to large-scale production environments.
  • Jsonnet Native Functions: Use jsonnet to render and override component config from multiple sources
    • Go-templates: Able to output text files templated based off of component configuration. Integrated with sprig templating functions
    • Docker-compose: Able to process docker-compose as yaml, or through kubernetes/kompose to output kubernetes resources
    • Kustomize: Able to process kustomize files and output kubernetes resources
    • Helm: Able to process locally stored helm charts and output kubernetes resources in deterministic way.
    • URL Parsing: Able to parse URLs into objects that can be used in component configuration.
    • IP Address Manipulation: Able to manipulate IP addresses and CIDRs in component configuration.
    • Jsonnet Std.lib: Use jsonnet std.lib functions to manipulate data and perform operations on component configuration.
  • Extensibility: Easily extensible to meet the needs of diverse Kubernetes environments.
    • Use jsonnet libraries the same way you would use any other jsonnet library.
    • Output a variety of structured and unstructured files.
  • Build Cache
    • Keeps cache of cluster-level config, which if invalidated triggers a full generate
    • Keeps cache of cluster-component config. If cluster-level component config changes the component is re-generated.
    • Keeps cache of per-component file hashes.
    • Stores cache per-cluster, in a json file named .kr8_cache
  • CI/CD Friendly: Statically define all your configuration in a single source of truth, making it easy to integrate with CI/CD pipelines and deployment automation like ArgoCD.
    • Easily create reproducible builds by using the same configuration across different environments.
    • Fully version control charts and normally-remote configurations in a single place.
    • Store generated secrets via SealedSecrets