{"id":38746829,"url":"https://github.com/cloudlinux/kuberdock-platform","last_synced_at":"2026-01-17T11:46:47.495Z","repository":{"id":17411816,"uuid":"81363767","full_name":"cloudlinux/kuberdock-platform","owner":"cloudlinux","description":"KuberDock - is a platform that allows users to run applications using Docker container images and create SaaS / PaaS based on these applications.","archived":false,"fork":false,"pushed_at":"2022-03-29T21:54:30.000Z","size":18882,"stargazers_count":127,"open_issues_count":22,"forks_count":42,"subscribers_count":20,"default_branch":"master","last_synced_at":"2024-04-17T06:02:35.238Z","etag":null,"topics":["calico","docker","etcd","kubernetes"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudlinux.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-02-08T18:47:29.000Z","updated_at":"2024-01-15T10:27:54.000Z","dependencies_parsed_at":"2022-08-07T08:16:00.675Z","dependency_job_id":null,"html_url":"https://github.com/cloudlinux/kuberdock-platform","commit_stats":null,"previous_names":[],"tags_count":235,"template":false,"template_full_name":null,"purl":"pkg:github/cloudlinux/kuberdock-platform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudlinux%2Fkuberdock-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudlinux%2Fkuberdock-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudlinux%2Fkuberdock-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudlinux%2Fkuberdock-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudlinux","download_url":"https://codeload.github.com/cloudlinux/kuberdock-platform/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudlinux%2Fkuberdock-platform/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28508437,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T10:25:30.148Z","status":"ssl_error","status_checked_at":"2026-01-17T10:25:29.718Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["calico","docker","etcd","kubernetes"],"created_at":"2026-01-17T11:46:47.275Z","updated_at":"2026-01-17T11:46:47.486Z","avatar_url":"https://github.com/cloudlinux.png","language":"Python","readme":"KuberDock: platform to run and sell dockerized applications\n============================\n\n![KuberDock logo](kubedock/frontend/static/img/logo-login.png \"KuberDock\")\n\nKuberDock - is a platform that allows users to run applications using Docker container images and create SaaS / PaaS based on these applications.\n\nKuberDock hides all complexity of underlying technologies from end-users and admins allowing to focus on creating and using [Predifined applications](https://github.com/cloudlinux/kuberdock_predefined_apps) and/or **any** dockerized app.\n\n------\n\n## Features\n- Extremely simple UI/UX for both end-users and admins\n- Rich API to run yaml-based declarative [Predifined applications](https://github.com/cloudlinux/kuberdock_predefined_apps)\n- Real-time, centralized elasticsearch-based logs for all containers\n- Complete network isolation of users from each other\n- Continuous resource usage monitoring for Pods and cluster nodes itself\n- Easy SSH/SCP/SFTP access into containers\n- Complete persistent storage support with few backends: Ceph, LocalStorage, ZFS, ZFS-on-EBS\n- Ability to set resource limits per container(CPU, Mem, Persistent storage, Transient storage)\n- Ability to expose Pods to Internet with:\n    - floating or fixed Public IPs\n    - Shared IP (http/https traffic)\n    - ELB on AWS\n    - cPanel proxy and similar\n- Automatic SSL certificates generation with [Let’s Encrypt](https://letsencrypt.org/)\n- AWS support\n- Simple cluster upgrades with just a one command\n- Ability to control overselling parameters for CPU and Memory\n- Backups for KuberDock cluster(master and nodes)\n- Backups for users' pods, and persistent volumes\n- Improved security with SELinux\n\n#### Built-in integrations with:\n- WHMCS billing system\n- Various control panels like _cPanel_, _Plesk_, _DirectAdmin_\n- DNS management systems like _CloudFlare_, _cPanel_, _AWS route 53_\n\n\n## Under the hood\n- [Kubernetes](https://github.com/kubernetes/kubernetes)\n- [Docker](https://github.com/docker/docker)\n- [Etcd](https://github.com/coreos/etcd)\n- [OverlayFS](https://docs.docker.com/engine/userguide/storagedriver/overlayfs-driver/)\n- [Heapster](https://github.com/kubernetes/heapster)\n- [Influxdb](https://github.com/influxdata/influxdb)\n- [Calico](https://github.com/projectcalico/calico)\n- [Fluentd](https://github.com/fluent/fluentd/)\n- ElasticSearch\n- Redis\n- PostgreSQL\n- Python2, Flask, Gevent, 70+ libs\n- WebPack, Backbone, Marionette, npm, yarn, etc.\n\n------\n\n# How the project is run\nKuberDock now is a free OSS and have no commercial support from CloudLinux right now.\n\nHowever, rpm repositories will be hosted by CloudLinux for minimal reasonable time, till the project completely moved to GitHub with all dependencies and CI.\n\n\n# Deploy production cluster\n_Note: You may use this software in production only at your own risk_\n\nTo install KuberDock package that is already in Cloudlinux stable repositories you can just follow _\"Master installation guide\"_ or _\"Install KuberDock at Amazon Web Services\"_ from [docs folder](docs/kd_doc.md).\n\nTo install custom build, you have to use [deploy.sh](deploy.sh) from the **same** commit as your KuberDock package, and run it in the same folder where you put the rpm package. Deploy script will pick up that package instead of any existing in repositories.\nSomething like this:\n```bash\n[root@your-kd-master-host] ls\ndeploy.sh\nkuberdock-1.5.2-1.el7.noarch.rpm\n[root@your-kd-master-host] bash ./deploy.sh --some-needed-options\n```\n\n_Note: This process might be simplified and reworked in future to remove any dependencies from CloudLinux repos and build things in place or download from elsewhere automatically_\n\n\n# Contributing to KuberDock\nIf you gonna hack on KuberDock, you should know few things:\n1. This is an Awesome Idea! :)\n2. We are opened to discussions and PRs. Feel free to open Github issues.\n3. You can contact some contributors for help. See [CONTRIBUTORS.md](CONTRIBUTORS.md)\n\n\n## Deploy cluster for development\nKuberDock has scripts that automatically provision KD cluster and doing preliminary configuration.\n\n_Note: Current rpm package repositories is still hosted by CloudLinux, but this support will be eventually discontinued, so appropriate PRs are welcome;)_\n\nRelease branches (like `1.5.2`) are intended to be production ready and should recieve only bug fixes.\n\n`Master` branch should be stable enough to use for development and testing purposes but may contain some new features with bugs.\n\n`Development` branch is experimental and could be unstable.\n\nSee [versioning policy](docs/versioning.md) also.\n\n\n#### Requirements:\nKuberDock development cluster could be created in VMs with Vagrant either in VirtualBox or OpenNebula.\n\n_Note: If you need to work on more than 1 cluster at time you have to make a separate repo clone because vagrant doesn't support switching clusters in place.\nAnother way to do this you can destroy your previous cluster (vagrant destroy -f) and create new one._\n\nIf you are going to use OpenNebula, make sure you have configured password-less ssh-key in it.\n\nAlso, for OpenNebula clusters, it's recommended(but not required) to use our docker-wrapped version of vagrant, because latest Vagrant often breaks backward compatibility in various places. However, this also has own limitations:\n- No VBox support. The only cross-platform way to make it is reverse-ssh: http://stackoverflow.com/a/19364263/923620 we did not implement this yet\n- vagrant global-status will not show all clusters - obviously: each of vagrants is isolated in own container\n\nIn case of docker-wrapped Vagrant:\n- docker 1.11 (or later) is running\n- export PATH=dev-utils:$PATH\n\nIn case of native Vagrant(either for VBox or OpenNebula) you will need:\n- Vagrant 1.8.4+\n- gatling-rsync-plugin (Installation is required, but usage is optional, only if you not satisfied with vagrant built-in \"rsync-auto\" performance)\n    - _vagrant plugin install vagrant-gatling-rsync_\n- rsync --version (2.6.9 or later)\n- ansible --version (ansible 2.0.2.0 or later)\n- python2-netaddr and python2-passlib (python2 !) for ansible filters\n- OpenNebula plugin (Optional, if you will provision into OpenNebula)\n    - _vagrant plugin install opennebula-provider --plugin-version 1.1.2_\n- VirtualBox (Optional, if you will provision into VirtualBox)\n    - _vboxmanage —version (v5.0.18r106667 or later)_\n\n\n##### Developer Flow (KD_INSTALL_TYPE=dev):\n```bash\n    git clone https://github.com/cloudlinux/kuberdock-platform\n    cd AppCloud\n    cp dev-utils/dev-env/kd_cluster_settings.sample ~/my_cluster_settings\n    # Edit my_cluster_settings:\n    # - Set KD_INSTALL_TYPE=dev.\n    # - Set KD_NEBULA_TEMPLATE to one of the predefined for this purposes\n    # Customize other settings if needed.\n    # Import settings\n    source ~/my_cluster_settings\n    # Build cluster (run from AppCloud/ dir)\n    vagrant up --provider=opennebula \u0026\u0026 vagrant provision\n    # (for VirtualBox it's just \"vagrant up\")\n    # Done\n    # Find KD IP in deploy output, access it with creds admin/admin\n    # For ssh use:\n    vagrant ssh kd_master\n    vagrant ssh kd_node1\n    ...\n    # Done\n```\n\nWhat does it do:\n- provisions few VMs in your VirtualBox or OpenNebula\n- builds \"kuberdock.rpm\", \"kdctl.rpm\", \"kcli.rpm\" RPMs inside master\n- runs deploy.sh\n- resets password to \"admin\"\n- runs wsgi app from tmux screen (tmux at to attach). To restart tmux session use `run_wsgi_in_tmux.sh`\n- add nodes\n- Turns off billing dependency\n- Creates test users\n- Creates IPPool\n- Adds all Predefined Apps from Github to KD cluster\n- setups everything needed to run unit tests inside master\n- some more dev-specific tune-ups\n\nContinuous code syncing to OpenNebula:\n- Way 1: _vagrant rsync-auto_ may be less performant than Way 2, but it works and more stable. Also, it's built-in and no plugins required.\n- Way 2: _vagrant gatling-rsync-auto_ This may be slow for interactive development, takes about 6 seconds to sync. Pros: in-place code editing; Cons: async.\n- Way 3: Use _sshfs_ Pros: Blocking, suitable for interactive coding; Cons: not in-place. You edit code in a mount point, not the initial repo.\n\n### Unittests\nBest way is to run them in docker:\n```bash\n    # with tox (p.s. make sure it's installed)\n    (venv)Appcloud tox -eunit\n    # or directly:\n    (venv)Appcloud bash ./_run_tests_in_docker.sh\n```\n\n### Front-end stuff\nsee this [README.md](./kubedock/frontend/static/README.md)\n\n### Integration tests\nIntegration tests have been strongly integrated with CloudLinux infrastructure, so after moving project to Github and quick code changes they, of course, will not work out of the box anymore. This is a \"number one TODO\" to rework them. However, it's not easy and requires big infrastructure(OpenNebula cloud, Ceph cluster, some AWS if needed, etc.) and/or rework.\n\nTests are developed to use OpenNebula as a VM provider, but some tests(and it's a good news) could be run locally with a VirtualBox-based cluster.\n\nFrom a high-level perspective they do the following things:\n1. Create one or more pipelines (each pipeline is a KuberDock cluster consisting of few VMs)\n2. Deploy KuberDock in each pipeline with some configuration (e.g. Ceph as persistent storage, or LocalStorage etc.)\n3. Provision test users, Pods etc.\n4. Run tests\n5. Teardown the cluster (or leave it as is in case of failed tests)\n\nTypical workflow on local cluster will look like:\n```bash\n(venv)AppCloud source ./your-kd_cluster_settings\n(venv)AppCloud source ./your-kuberdock-ci-env\n# run all tests and pipelines or comma-separated list of them\n# if BUILD_CLUSTER=0 then current cluster will be used, but make sure\n# that it has appropriate configuration(incl. number of Nodes, rHosts, kube-types etc.)\n(venv)AppCloud BUILD_CLUSTER=1 python run_integration_tests.py --pipelines main --all-tests --live-log\n```\nPipelines could be started in parallel\n\n##### TODO\nTo make tests work we need to fix at least this files to use correct values from some configuration files and/or envvars instead of hardcoded things:\n\n    dev-utils/dev-env/ansible/roles/master/defaults/main.yml\n    dev-utils/dev-env/ansible/roles/common/vars/main.yml\n    dev-utils/dev-env/ansible/roles/node/tasks/main.yml\n    dev-utils/dev-env/ansible/roles/rhost/tasks/routes.yml\n    dev-utils/dev-env/ansible/roles/whmcs/tasks/main.yml\n    dev-utils/dev-env/ansible/roles/whmcs/vars/main.yml\n    dev-utils/dev-env/Vagrantfile\n    tests_integration/assets/cpanel_credentials.json\n    dev-utils/dev-env/ansible/roles/plesk/defaults/main.yml\n    dev-utils/dev-env/ansible/roles/whmcs/defaults/main.yml\n    dev-utils/dev-env/ansible/roles/common/tasks/ceph.yml\n    kuberdock-ci-env\n\n--------\n\n# Licensing\nKuberDock code itself is licensed under the GPL License, Version 2.0 (see\n[LICENSE](https://github.com/cloudlinux/kuberdock-platform/blob/master/LICENSE) for the full license text), but some parts and dependencies may use their own licenses, and for this components, we include their licenses to this repo as well.\n- Kubernetes AWS deploy scripts - Apache 2.0\n- pyasn - BSD\n- fonts - Apache 2.0\n- mocha-phantomjs - MIT\n- paramiko-expect - MIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudlinux%2Fkuberdock-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudlinux%2Fkuberdock-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudlinux%2Fkuberdock-platform/lists"}