RisingStack
anchor
JavaScript

Turns Kubernetes resources into a Helm chart

Last updated May 1, 2023
38
Stars
8
Forks
0
Issues
0
Stars/day
Attention Score
8
Language breakdown
No language data available.
Files click to expand
README

Anchor

Backups Kubernetes resources as a Helm chart. Extract configurations from resources and save them as values and templates in a reproducible Helm chart.

Anchor - Kubernetes backup

How to use it?

Requirements

  • Node.js, >= v6
  • kubectl
npm install @risingstack/anchor

Example

For more detailed examples like sub-charts check out the ./example folder.

const anchor = require('@risingstack/anchor')

anchor.snapshot({ resources: [ 'deployment/my-app', 'deployment/my-worker' ] }) .then(() => console.log('Snapshot finished')) .catch((err) => console.error('Snapshot error', err))

API

anchor.snapshot(options)

Backup Kubernetes resources as a Helm chart and returns a Promise.

  • options.resources: Kubernetes resources to snapshot
- required - example: ['deployment/my-app', 'deployment/my-worker']
  • options.namespace: Kubernetes namespace for kubectl
- optional - default: default
  • options.name: name of the Helm chart
- optional - default: my-chart
  • options.description: description of the Helm chart
- optional - default: ''
  • options.version: version of the Helm chart
- optional - default: 0.0.1
  • options.overwrite: overwrite output directory
- optional - default: false
  • options.outputPath: defines chart path, throws error when exist but overwrite is false
- optional - default: ./output

How does it work?

  • Download Kubernetes resource via kubectl
  • Parse resource, extract values and transform to template
  • Outputs a Helm chart: YAML templates and values.yaml

What can it extract as a template?

  • Containers with name or single container
  • Container environment variables with value
  • Container image with tag
  • Deployment replicas
  • Secret data
  • Service type
TODO:

- ConfigMap - PVC - Ingress - Job

Output

The ./output directory will contains the templates under the ./output/templates folder. Your Values.yaml file will look like the following:

deploymentMyApp:
  image: my-company/my-app
  imageTag: 1f40c1f
  envLogLevel: info
  resourcesLimitsCPU: 150m
  resourcesLimitsMemory: 1536Mi
  resourcesRequestsCPU: 10m
  resourcesRequestsMemory: 128Mi
  replicas: 2
deploymentMyWorker:
  containers:
    myWorker:
      image: my-company/my-worker
      imageTag: 295a9c2
      envLogLevel: warning
      envTraceServiceName: my-worker
      resourcesLimitsCPU: 200m
      resourcesLimitsMemory: 1536Mi
      resourcesRequestsCPU: 20m
      resourcesRequestsMemory: 128Mi
    mySidecar:
      image: my-company/metrics-exporter
      imageTag: aa1c434
  replicas: 2

Feature ideas:

  • Versioning
  • Snapshot reload by date
  • Auto-sync (auto snapshot)
🔗 More in this category

© 2026 GitRepoTrend · RisingStack/anchor · Updated daily from GitHub