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
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
options.name
: name of the Helm chart
- optional
- default:
my-chart
options.description
: description of the Helm chart
options.version
: version of the Helm chart
options.overwrite
: overwrite output directory
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
- Containers with name or single container
- Container environment variables with value
- Container image with tag
- Deployment replicas
- Secret data
- Service type
TODO:
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)