Kubernetes cluster orchestrator
Project description
Overview
More information about KQueen Architecture and use cases is described in RATIONALE file.
Requirements
Python v3.6 and higher.
Pip v3 and higher.
Docker stable release (v17.03 and higher is preferable).
Docker-compose stable release (v1.16.0 and higher is preferable).
For Ubuntu 16.04 required packages are: libsasl2-dev python-dev libldap2-dev libssl-dev For Fedora: openldap-devel
Development
Prepare virtual environment
virtualenv -p /usr/bin/python3 kqueen source ./kqueen/bin/activate
or if you have virtualenvwrapper installed
mkvirtualenv -p /usr/bin/python3 kqueen
Install project requirements into virtual environment
pip3 install -e ".[dev]" pip3 install --editable .
Start docker container with etcd storage
docker-compose up -d
You can start KQueen API service directly
kqueen
Prepare kubernetes config file
Kubernetes configuration file that describes existing cluster can be used in Kqueen. Rename it with kubernetes_remote and place to the root of the project. For test purposes this file can be empty, but should be added manually.
How-to’s
Clean etcd storage after previous runs
etcdctl rm --recursive /kqueen
Add admin user, organization, mock clusters and provisioners to etcd storage at once, execute the following
./devenv.py
To add a single admin user with default password within associated DemoOrg organization in provided demoorg namespace, execute the following
./bootstrap_admin.py DemoOrg demoorg admin default
Test access token. curl, jq should be installed in your system
TOKEN=$(curl -s -H "Content-Type: application/json" --data '{"username":"admin","password":"default"}' -X POST localhost:5000/api/v1/auth | jq -r '.access_token') echo $TOKEN curl -H "Authorization: Bearer $TOKEN" localhost:5000/api/v1/clusters
Set up flask shell for manual testing and debugging
export FLASK_APP=kqueen.server export prometheus_multiproc_dir=$(mktemp -d) flask shell
Update Docker image with code changes
There are two ways to test development changes. First is automatic: create a separate branch and push PR, then TravisCI build image and push it on Docker Hub automatically. Second one is just rebuild kqueen api-image locally:
docker build -t kqueen/api:your_tag .
Demo environment
Make sure you can reach Jenkins server defined in JENKINS_API_URL variable in file kqueen/config/prod.py.
Run these commands to run Kqueen API and UI in containers.
docker-compose -f docker-compose.yml -f docker-compose.demo.yml up
You can login using user admin and password default. Default username and password can be changed in docker-compose.demo.yml file before first start of API.
Configuration
We load configuration from file config/dev.py by default and this can be configured by KQUEEN_CONFIG_FILE environment variable. Any environment variable matching name KQUEEN_* will be loaded and saved to configuration.
Documentation
Full documentation including API reference can be found at kqueen.readthedocs.io.
DEMOs
Generic KQueen Overview
AKS (Azure) in KQueen
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.