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.

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
['deployment/my-app', 'deployment/my-worker']
options.namespace: Kubernetes namespace forkubectl
default
options.name: name of the Helm chart
my-chart
options.description: description of the Helm chart
''
options.version: version of the Helm chart
0.0.1
options.overwrite: overwrite output directory
false
options.outputPath: defines chart path, throws error when exist but overwrite isfalse
./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
- 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