synku
    Preparing search index...

    synku

    synku

    • Concise
    • Unopinionated
    • Typesafe
    • Composition

    https://lajosbencz.github.io/synku/

    • Kubernetes API Object
    • Mutates manifests based on user logic
    • Contains a list of Manifests
    • Has a list of attached Behaviors
    • Is organized into a tree structure
    • Behaviors of parent components are inherited
    yarn add kubernetes-models synku
    
    // project.ts
    import * as k8s from "kubernetes-models";
    import synku, { behavior } from "synku";

    export default synku("example", (release) => {
    const config = release.add("config");
    config
    .with(
    behavior((component) => {
    component.findAll(k8s.v1.ConfigMap).forEach((configMap) => {
    configMap.data!.baz = "bax";
    });
    })
    )
    .draft(k8s.v1.ConfigMap, {
    data: {
    foo: "bar",
    },
    });
    });
    npx synku ./project.ts > project.yaml
    
    helm pull oci://registry-1.docker.io/bitnamicharts/kafka --version 32.4.3 --untar --untardir charts
    
    npx synku chart ./charts/kafka --name Kafka --output kafka-chart.ts
    
    // project.ts
    import * as k8s from "kubernetes-models";
    import synku, { behavior } from "synku";
    import { KafkaChart } from "./kafka-chart.ts";

    export default synku("example", (release) => {
    release
    .with(
    behavior((component) => {
    component.findAll(k8s.v1.ConfigMap).forEach((configMap) => {
    configMap.data!.baz = "bax";
    });
    })
    )
    .draft(k8s.v1.ConfigMap, {
    data: {
    foo: "bar",
    },
    });
    const kafka = release.add("kafka", KafkaChart, {
    broker: {
    persistence: {
    enabled: false,
    },
    },
    });
    kafka.with(
    behavior((component) => {
    component.findAll(k8s.v1.ConfigMap).forEach((configMap) => {
    delete configMap.data?.baz;
    });
    })
    );
    });
    export SYNKU_TRACE=1
    npx synku ./project.ts > project.yaml