https://github.com/mirantis/kqueen
Kubernetes queen - cluster manager
https://github.com/mirantis/kqueen
Last synced: about 1 month ago
JSON representation
Kubernetes queen - cluster manager
- Host: GitHub
- URL: https://github.com/mirantis/kqueen
- Owner: Mirantis
- License: mit
- Created: 2017-09-25T14:47:07.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2022-12-08T02:09:14.000Z (over 2 years ago)
- Last Synced: 2025-03-31T09:04:40.306Z (about 2 months ago)
- Language: Python
- Homepage:
- Size: 3.1 MB
- Stars: 136
- Watchers: 39
- Forks: 33
- Open Issues: 16
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
KQueen - Kubernetes cluster manager
===================================.. image:: https://travis-ci.org/Mirantis/kqueen.svg?branch=master
:target: https://travis-ci.org/Mirantis/kqueen.. image:: https://badge.fury.io/py/kqueen.svg
:target: https://badge.fury.io/py/kqueen.. image:: https://coveralls.io/repos/github/Mirantis/kqueen/badge.svg?branch=master
:target: https://coveralls.io/github/Mirantis/kqueen?branch=master.. image:: https://readthedocs.org/projects/kqueen/badge/?version=master
:target: http://kqueen.readthedocs.io/en/master/?badge=masterOverview
--------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
* http://127.0.0.1:5080/
* http://127.0.0.1:5000/api/docs/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 --devpipenv 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
- Create directories to store Kqueen data and log files
.. code-block:: bash
mkdir - m 666 /var/log/kqueen-api
mkdir - m 666 /opt/kqueen- Install kubespray or provide path to the existing installation by specifying ``KS_KUBESPRAY_PATH`` in the config file
.. code-block:: bash
git clone -b v2.5.0 https://github.com/kubernetes-incubator/kubespray.git && \
pip install -r kubespray/requirements.txt- 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 ``/api/docs``.. |Build Status| image:: https://travis-ci.org/Mirantis/kqueen.svg?branch=master
:target: https://travis-ci.org/Mirantis/kqueen
.. |PyPI version| image:: https://badge.fury.io/py/kqueen.svg
:target: https://badge.fury.io/py/kqueen
.. |Coverage Status| image:: https://coveralls.io/repos/github/Mirantis/kqueen/badge.svg?branch=master
:target: https://coveralls.io/github/Mirantis/kqueen?branch=masterDEMOs
-----**Generic KQueen Overview**
.. image:: https://img.youtube.com/vi/PCAwCxPQc2A/0.jpg
:target: https://www.youtube.com/watch?v=PCAwCxPQc2A&t=1s**AKS (Azure) in KQueen**
.. image:: https://img.youtube.com/vi/xHydnJGcs2k/0.jpg
:target: https://youtu.be/xHydnJGcs2k**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... image:: https://img.youtube.com/vi/MYXFI75Fm10/0.jpg
:target: https://youtu.be/MYXFI75Fm10