Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/risingstack/anchor
Turns Kubernetes resources into a Helm chart
https://github.com/risingstack/anchor
anchor backup helm helm-charts kubernetes
Last synced: 2 months ago
JSON representation
Turns Kubernetes resources into a Helm chart
- Host: GitHub
- URL: https://github.com/risingstack/anchor
- Owner: RisingStack
- License: mit
- Created: 2017-05-14T09:14:52.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-06-20T14:17:14.000Z (over 7 years ago)
- Last Synced: 2024-11-15T01:30:21.130Z (2 months ago)
- Topics: anchor, backup, helm, helm-charts, kubernetes
- Language: JavaScript
- Homepage:
- Size: 32.2 KB
- Stars: 38
- Watchers: 15
- Forks: 8
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Anchor
Backups Kubernetes resources as a Helm chart.
Extract configurations from resources and save them as values and templates in a reproducible [Helm](https://github.com/kubernetes/helm) chart.![Anchor - Kubernetes backup](https://cloud.githubusercontent.com/assets/1764512/26036522/775a4ef2-38df-11e7-8ee0-a45e70578495.png)
## How to use it?
### Requirements
- Node.js, `>= v6`
- kubectl```sh
npm install @risingstack/anchor
```### Example
For more detailed examples like sub-charts check out the `./example` folder.
```js
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?
1. Download Kubernetes resource via `kubectl`
2. Parse resource, extract values and transform to template
3. 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:```yaml
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)*