Skip to content

seibert-media/dimios

Repository files navigation

Dimios Kubernetes Manager

Go Report Card Codacy Badge Build Status Docker Repository on Quay

Dimios is an application to keep a kubernetes cluster on a clean state based on provided manifests. Those manifests get automatically applied and no longer existing resources are being removed by the application.

Requirements

To run the tool using our Makefile you need to set a few local environment variables. This can be done manually or by creating a file called .env in the projects root directory:

export NAMESPACE=dimios
export MANIFEST_DIR=~/git/k8s/smedia-kubernetes/

If you want to use TeamVault as passwords backend inside templates, you need to have a file called ~/.teamvault-sm.json containing your credentials:

{
  "url": "https://teamvault.example.com",
  "user": "username",
  "pass": "password"
}

Options

-dir string : Path to the template/manifest directory

-kubeconfig string : (optional) absolute path to the kubeconfig file (default "~/.kube/config")

-staging : If set the application will run in no-op mode not doing any changes to the cluster

-namespaces string : List of kubernetes namespaces separated by comma

-teamvault-config string : Teamvault config path

-teamvault-pass string : Teamvault password (if teamvault-config is unset)

-teamvault-url string : Teamvault url (if teamvault-config is unset)

-teamvault-user string : Teamvault user (if teamvault-config is unset)

-v value : Log level for glog V logs

-logtostderr : Log to standard error instead of files

-version : Show version info (default false)

-webhook : Start as webserver and sync on each call

-port int : Port webserver listens on

-whitelist string : List of kind to manange separated by comma

Dependencies

All dependencies inside this project are being managed by dep and are checked in. After pulling the repository, it should not be required to do any further preparations aside from make deps to prepare the dev tools.

If new dependencies get added while coding, make sure to add them using dep ensure --add "importpath".

Contributing

Feedback and contributions are highly welcome. Feel free to file issues or pull requests.

Related Projects

Attributions

Examples

Simple dryrun

dimios \
-staging \
-dir ~/manifests \
-namespaces download \
-teamvault-config ~/.teamvault.json \
-kubeconfig ~/.kube/config \
-logtostderr \
-v=1

Manange only Services and Deployment with dryrun

dimios \
-staging \
-dir ~/manifests \
-namespaces download \
-teamvault-config ~/.teamvault.json \
-kubeconfig ~/.kube/config \
-logtostderr \
-v=1 \
-whitelist Deployment,Service

Start as webserver on port 9999 with dryrun

dimios \
-staging \
-dir ~/manifests \
-namespaces download \
-teamvault-config ~/.teamvault.json \
-kubeconfig ~/.kube/config \
-logtostderr \
-v=1 \
-port=9999 \
-webhook