Skip to main content

Templates

Generate Components#

This example shows how to generate a component containing a horizontal pod autoscaler (HPA). You can see the result in the example.

const { run } = require("@kosko/template");
run({  description: "Create a new HPA",  options: {    deployment: {      type: "string",      description: "Deployment name",      required: true    },    minReplicas: {      type: "number",      description: "Minimum number of replicas",      default: 1    },    maxReplicas: {      type: "number",      description: "Maximum number of replicas",      required: true    },    cpu: {      type: "number",      description: "Target CPU utilization",      default: 70    }  },  async generate(args) {    return {      files: [        {          path: `components/${args.deployment}_hpa.js`,          content: `"use strict";
const { HorizontalPodAutoscaler } = require("kubernetes-models/autoscaling/v1");
module.exports = new HorizontalPodAutoscaler({  metadata: {    name: "${args.deployment}"  },  spec: {    scaleTargetRef: {      apiVersion: "apps/v1",      kind: "Deployment",      name: "${args.deployment}"    },    minReplicas: ${args.minReplicas},    maxReplicas: ${args.maxReplicas},    targetCPUUtilizationPercentage: ${args.cpu}  }});`        }      ]    };  }});