More information about KQueen Architecture and use cases is described in RATIONALE file.
- 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
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.
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 .
- 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.
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.
Full documentation including API reference can be found at kqueen.readthedocs.io.
Generic KQueen Overview
AKS (Azure) in KQueen