nix-kubernetes
Version:
Kubernetes deployment manager written in nix
121 lines (88 loc) • 3.97 kB
Markdown
# nix-kubernetes [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][daviddm-image]][daviddm-url] [![Coverage percentage][coveralls-image]][coveralls-url]
> Kubernetes deployment manager written in nix
## About
Nix-kubernetes is deployment manager for kubernetes that users nixos module
system to do declarative kubernetes configuration and deployment. By combining
nix package manager and nix-kubernetes declarative cluster configuration it can
do fully deterministic deployments from packages to configuration.
## Depencies
- nix (for installation instructions go to https://nixos.org/nix/)
## Installation
```sh
$ nix-env -f https://github.com/xtruder/nix-kubernetes/archive/v0.25.1.tar.gz -iA package
```
## Usage
```bash
Usage: bin/nix-kubernetes <command> [options]
Commands:
create <file> Create deployment
list List all known deployments
delete Delete deployment
describe Describes deployment
deploy Deploy configuration
config Manage deployment
run-job <name> Run distributed kubernetes job
gc Garbage collect resources (will only gc nix-kubernetes resources)
Options:
-c, --config path to configuration file [default: "~/.kube/nix-kubernetes.json"]
-h, --help Show help [boolean]
Examples:
bin/nix-kubernetes create -d name deploy.nix create deployment
bin/nix-kubernetes deploy -d name -n namespace --context my-cluster deploy resources
bin/nix-kubernetes deploy -d name --build-only only build
```
**Deploy**
```bash
nix-kubernetes deploy
Options:
-c, --config path to configuration file [default: "~/.kube/nix-kubernetes.json"]
-h, --help Show help [boolean]
-f, --file Use prebuild deployment file
-d, --deployment Deployment name
-n, --namespace Namespace to deploy
-i, --include Resources to include in deployment
-o, --output Output generated config to file
--context Kubernetes config context to use for deployment
--build-only only build
--dry-run dry run
--restart restart replication controllers
--rolling-update do a rolling update of a controller
--gc garbage collect resources (will only gc nix-kubernetes resources)
Examples:
nix-kubernetes deploy -d deployment -n namespace -i replicationcontrollers/gitlab --gc --context my-cluster
nix-kubernetes deploy -d deployment -n namespace -i services/mysql --dry-run
```
## Example usage
```sh
$ nix-kubernetes create -d gatehub deploy.nix
$ export NIX_PATH="services=/home/offlinehacker/projects/x-truder.net/services:$NIX_PATH"
$ nix-kubernetes deploy -d gatehub --build-only
$ nix-kubernetes deploy -d gatehub -n namespace --context my-cluster --gc
```
## Example deployment configurations
look into examples folder with example deployment configurations.
## Options
For a list of all options look into [options.md](options.md)
## Nix-kubernetes services
Repo with bundle of nix-kubernetes
services is avalible on [https://github.com/x-truder/services](https://github.com/x-truder/services).
## Development
### Use development version
```sh
$ npm link
$ export PATH=~/.npm/bin:$PATH
```
## Build deployments
```sh
$ nix-build -A staging --arg configuration deploy.nix
```
## License
MIT © [Jaka Hudoklin](https://x-truder.net)
[npm-image]: https://badge.fury.io/js/nix-kubernetes.svg
[npm-url]: https://npmjs.org/package/nix-kubernetes
[travis-image]: https://travis-ci.org/x-truder/nix-kubernetes.svg?branch=master
[travis-url]: https://travis-ci.org/x-truder/nix-kubernetes
[daviddm-image]: https://david-dm.org/x-truder/nix-kubernetes.svg?theme=shields.io
[daviddm-url]: https://david-dm.org/x-truder/nix-kubernetes
[coveralls-image]: https://coveralls.io/repos/x-truder/nix-kubernetes/badge.svg
[coveralls-url]: https://coveralls.io/r/x-truder/nix-kubernetes