Skip to main content

Kubernetes cluster orchestrator

Project description

https://travis-ci.org/Mirantis/kqueen.svg?branch=master https://badge.fury.io/py/kqueen.svg https://coveralls.io/repos/github/Mirantis/kqueen/badge.svg?branch=master https://readthedocs.org/projects/kqueen/badge/?version=master

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).

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

    or with mounted etcd data directory:

    docker-compose -f docker-compose.etcd-volume.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.

  • Navigate to UI

Development

  • Install dependencies

    # Debian/Ubuntu
    sudo apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev
    
    # RedHat/CentOS:
    sudo yum install python-devel openldap-devel
  • Prepare python virtual environment

    python -m ensurepip --default-pip
    pip install --user pipenv
    pipenv --python 3.6
    pipenv install --dev
    
    pipenv shell
  • Start docker container with etcd storage

    docker-compose up -d
  • Initialize kqueen db: add admin user with default password

    ./bootstrap_admin.py DemoOrg demoorg admin default
  • You can start KQueen API service directly

    kqueen &
    chrome --new-tab http://127.0.0.1:5000/api/docs/
  • 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 .

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 can be found at kqueen.readthedocs.io.

API reference is defined at api.yml and Swagger UI is available at <kqueen_api_url>/api/docs

DEMOs

Generic KQueen Overview

https://img.youtube.com/vi/PCAwCxPQc2A/0.jpg

AKS (Azure) in KQueen

https://img.youtube.com/vi/xHydnJGcs2k/0.jpg

Network policy management in KQueen

The following video provides an overview on how to manage the Calico network policy for a Kubernetes cluster provisioned with Google Kubernetes Engine using KQueen.

https://img.youtube.com/vi/MYXFI75Fm10/0.jpg

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kqueen-1.0.tar.gz (68.5 kB view details)

Uploaded Source

File details

Details for the file kqueen-1.0.tar.gz.

File metadata

  • Download URL: kqueen-1.0.tar.gz
  • Upload date:
  • Size: 68.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for kqueen-1.0.tar.gz
Algorithm Hash digest
SHA256 5528b0bfc8a3a2646c1adcb9bfbcb29323d763baa3aacf1684a2699339a0bb83
MD5 78e53a63c050b261798fc9ed3ea2384e
BLAKE2b-256 41300a9e44b828f765e5625dd1f83a57f6b5f67706c5fc6aee7befef6d8bc42d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page