From a889c5d29b8dc84c4d97ce015de28fc306f4b683 Mon Sep 17 00:00:00 2001 From: Smaine Kahlouch Date: Wed, 6 Jul 2016 17:34:16 +0200 Subject: [PATCH] first version of the roadmap --- README.md | 87 ++++++++++++++++++++++++++++++++++++++++++- docs/documentation.md | 84 ----------------------------------------- docs/roadmap.md | 85 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 171 insertions(+), 85 deletions(-) mode change 120000 => 100644 README.md delete mode 100644 docs/documentation.md create mode 100644 docs/roadmap.md diff --git a/README.md b/README.md deleted file mode 120000 index e0ec929fb..000000000 --- a/README.md +++ /dev/null @@ -1 +0,0 @@ -docs/documentation.md \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 000000000..a1c9f0c1a --- /dev/null +++ b/README.md @@ -0,0 +1,86 @@ +![Kubespray Logo](http://s9.postimg.org/md5dyjl67/kubespray_logoandkubespray_small.png) + +##Deploy a production ready kubernetes cluster + +If you have questions, you can [invite yourself](https://slack.kubespray.io/) to **chat** with us on Slack! [![SlackStatus](https://slack.kubespray.io/badge.svg)](https://kubespray.slack.com) + +- Can be deployed on **AWS, GCE, OpenStack or Baremetal** +- **High available** cluster +- **Composable** (Choice of the network plugin for instance) +- Support most popular **Linux distributions** +- **Continuous integration tests** + + +To deploy the cluster you can use : + +[**kargo-cli**](https://github.com/kubespray/kargo-cli)
+**Ansible** usual commands
+**vagrant** by simply running `vagrant up` (for tests purposes)
+ + +* [Requirements](#requirements) +* [Getting started](docs/getting-started.md) +* [Vagrant install](docs/vagrant.md) +* [CoreOS bootstrap](docs/coreos.md) +* [Ansible variables](docs/ansible.md) +* [Cloud providers](docs/cloud.md) +* [Openstack](docs/openstack.md) +* [Network plugins](#network-plugins) +* [Roadmap](docs/roadmap.md) + +Supported Linux distributions +=============== + +* **CoreOS** +* **Debian** Wheezy, Jessie +* **Ubuntu** 14.10, 15.04, 15.10, 16.04 +* **Fedora** 23 +* **CentOS/RHEL** 7 + +Versions +-------------- + +[kubernetes](https://github.com/kubernetes/kubernetes/releases) v1.3.0
+[etcd](https://github.com/coreos/etcd/releases) v3.0.1
+[calicoctl](https://github.com/projectcalico/calico-docker/releases) v0.20.0
+[flanneld](https://github.com/coreos/flannel/releases) v0.5.5
+[weave](http://weave.works/) v1.5.0
+[docker](https://www.docker.com/) v1.10.3
+ + +Requirements +-------------- + +* The target servers must have **access to the Internet** in order to pull docker images. +* The **firewalls are not managed**, you'll need to implement your own rules the way you used to. +in order to avoid any issue during deployment you should disable your firewall +* **Copy your ssh keys** to all the servers part of your inventory. +* **Ansible v2.x and python-netaddr** + + +## Network plugins +You can choose between 3 network plugins. (default: `flannel` with vxlan backend) + +* [**flannel**](docs/flannel.md): gre/vxlan (layer 2) networking. + +* [**calico**](docs/calico.md): bgp (layer 3) networking. + +* **weave**: Weave is a lightweight container overlay network that doesn't require an external K/V database cluster.
+(Please refer to `weave` [troubleshooting documentation](http://docs.weave.works/weave/latest_release/troubleshooting.html)) + +The choice is defined with the variable `kube_network_plugin` + + +## CI Tests + +[![Build Status](https://travis-ci.org/kubespray/kargo.svg)](https://travis-ci.org/kubespray/kargo)
+ +### Google Compute Engine + + | Calico | Flannel | Weave | +------------- | ------------- | ------------- | ------------- | +Ubuntu Xenial |[![Build Status](https://ci.kubespray.io/job/kargo-gce-xenial-calico/badge/icon)](https://ci.kubespray.io/job/kargo-gce-xenial-calico/)|[![Build Status](https://ci.kubespray.io/job/kargo-gce-xenial-flannel/badge/icon)](https://ci.kubespray.io/job/kargo-gce-xenial-flannel/)|[![Build Status](https://ci.kubespray.io/job/kargo-gce-xenial-weave/badge/icon)](https://ci.kubespray.io/job/kargo-gce-xenial-weave)| +CentOS 7 |[![Build Status](https://ci.kubespray.io/job/kargo-gce-centos7-calico/badge/icon)](https://ci.kubespray.io/job/kargo-gce-centos7-calico/)|[![Build Status](https://ci.kubespray.io/job/kargo-gce-centos7-flannel/badge/icon)](https://ci.kubespray.io/job/kargo-gce-centos7-flannel/)|[![Build Status](https://ci.kubespray.io/job/kargo-gce-centos7-weave/badge/icon)](https://ci.kubespray.io/job/kargo-gce-centos7-weave/)| +CoreOS (stable) |[![Build Status](https://ci.kubespray.io/job/kargo-gce-coreos-calico/badge/icon)](https://ci.kubespray.io/job/kargo-gce-coreos-calico/)|[![Build Status](https://ci.kubespray.io/job/kargo-gce-coreos-flannel/badge/icon)](https://ci.kubespray.io/job/kargo-gce-coreos-flannel/)|[![Build Status](https://ci.kubespray.io/job/kargo-gce-coreos-weave/badge/icon)](https://ci.kubespray.io/job/kargo-gce-coreos-weave/)| + +CI tests sponsored by Google (GCE), and [teuto.net](https://teuto.net/) for OpenStack. diff --git a/docs/documentation.md b/docs/documentation.md deleted file mode 100644 index 7aad8db6e..000000000 --- a/docs/documentation.md +++ /dev/null @@ -1,84 +0,0 @@ -![Kubespray Logo](http://s9.postimg.org/md5dyjl67/kubespray_logoandkubespray_small.png) - -##Deploy a production ready kubernetes cluster - -If you have questions, you can [invite yourself](https://slack.kubespray.io/) to **chat** with us on Slack! [![SlackStatus](https://slack.kubespray.io/badge.svg)](https://kubespray.slack.com) - -- Can be deployed on **AWS, GCE, OpenStack or Baremetal** -- **High available** cluster -- **Composable** (Choice of the network plugin for instance) -- Support most popular **Linux distributions** -- **Continuous integration tests** - - -To deploy the cluster you can use : - -[**kargo-cli**](https://github.com/kubespray/kargo-cli)
-**Ansible** usual commands
-**vagrant** by simply running `vagrant up` (for tests purposes)
- - -* [Requirements](#requirements) -* [Getting started](docs/getting-started.md) -* [Vagrant install](docs/vagrant.md) -* [CoreOS bootstrap](docs/coreos.md) -* [Ansible variables](docs/ansible.md) -* [Cloud providers](docs/cloud.md) -* [Openstack](docs/openstack.md) -* [Network plugins](#network-plugins) - -Supported Linux distributions -=============== - -* **CoreOS** -* **Debian** Wheezy, Jessie -* **Ubuntu** 14.10, 15.04, 15.10, 16.04 -* **Fedora** 23 -* **CentOS/RHEL** 7 - -Versions --------------- - -[kubernetes](https://github.com/kubernetes/kubernetes/releases) v1.3.0
-[etcd](https://github.com/coreos/etcd/releases) v3.0.1
-[calicoctl](https://github.com/projectcalico/calico-docker/releases) v0.20.0
-[flanneld](https://github.com/coreos/flannel/releases) v0.5.5
-[weave](http://weave.works/) v1.5.0
-[docker](https://www.docker.com/) v1.10.3
- - -Requirements --------------- - -* The target servers must have **access to the Internet** in order to pull docker images. -* The **firewalls are not managed**, you'll need to implement your own rules the way you used to. -in order to avoid any issue during deployment you should disable your firewall -* **Copy your ssh keys** to all the servers part of your inventory. -* **Ansible v2.x and python-netaddr** - - -## Network plugins -You can choose between 3 network plugins. (default: `flannel` with vxlan backend) - -* [**flannel**](docs/flannel.md): gre/vxlan (layer 2) networking. - -* [**calico**](docs/calico.md): bgp (layer 3) networking. - -* **weave**: Weave is a lightweight container overlay network that doesn't require an external K/V database cluster.
-(Please refer to `weave` [troubleshooting documentation](http://docs.weave.works/weave/latest_release/troubleshooting.html)) - -The choice is defined with the variable `kube_network_plugin` - -## CI Tests - -[![Build Status](https://travis-ci.org/kubespray/kargo.svg)](https://travis-ci.org/kubespray/kargo)
- -### Google Compute Engine - - | Calico | Flannel | Weave | -------------- | ------------- | ------------- | ------------- | -Ubuntu Xenial |[![Build Status](https://ci.kubespray.io/job/kargo-gce-xenial-calico/badge/icon)](https://ci.kubespray.io/job/kargo-gce-xenial-calico/)|[![Build Status](https://ci.kubespray.io/job/kargo-gce-xenial-flannel/badge/icon)](https://ci.kubespray.io/job/kargo-gce-xenial-flannel/)|[![Build Status](https://ci.kubespray.io/job/kargo-gce-xenial-weave/badge/icon)](https://ci.kubespray.io/job/kargo-gce-xenial-weave)| -CentOS 7 |[![Build Status](https://ci.kubespray.io/job/kargo-gce-centos7-calico/badge/icon)](https://ci.kubespray.io/job/kargo-gce-centos7-calico/)|[![Build Status](https://ci.kubespray.io/job/kargo-gce-centos7-flannel/badge/icon)](https://ci.kubespray.io/job/kargo-gce-centos7-flannel/)|[![Build Status](https://ci.kubespray.io/job/kargo-gce-centos7-weave/badge/icon)](https://ci.kubespray.io/job/kargo-gce-centos7-weave/)| -CoreOS (stable) |[![Build Status](https://ci.kubespray.io/job/kargo-gce-coreos-calico/badge/icon)](https://ci.kubespray.io/job/kargo-gce-coreos-calico/)|[![Build Status](https://ci.kubespray.io/job/kargo-gce-coreos-flannel/badge/icon)](https://ci.kubespray.io/job/kargo-gce-coreos-flannel/)|[![Build Status](https://ci.kubespray.io/job/kargo-gce-coreos-weave/badge/icon)](https://ci.kubespray.io/job/kargo-gce-coreos-weave/)| - -CI tests sponsored by Google (GCE), and [teuto.net](https://teuto.net/) for OpenStack. diff --git a/docs/roadmap.md b/docs/roadmap.md new file mode 100644 index 000000000..24e82d543 --- /dev/null +++ b/docs/roadmap.md @@ -0,0 +1,85 @@ +Kargo's roadmap +================= + +### Self deployment (pull-mode) [#320](https://github.com/kubespray/kargo/issues/320) +- the playbook would install and configure docker and the etcd cluster [#321](https://github.com/kubespray/kargo/issues/321) +- the following data would be inserted into etcd: certs,tokens,users,inventory,group_vars. +- a "kubespray" container would be deployed (kargo-cli, ansible-playbook, kpm) +- to be discussed, a way to provide the inventory +- **self deployment** of the node + +### Provisionning and cloud providers +- Terraform to provision instances on **GCE, AWS, Openstack, Digital Ocean, Azure** +- On AWS autoscaling, multi AZ +- On Azure autoscaling, create loadbalancer [#297](https://github.com/kubespray/kargo/issues/297) +- On GCE be able to create a loadbalancer automatically (IAM ?) [#280](https://github.com/kubespray/kargo/issues/280) +- **TLS boostrap** support for kubelet [#234](https://github.com/kubespray/kargo/issues/234) + (related issues: https://github.com/kubernetes/kubernetes/pull/20439
+ https://github.com/kubernetes/kubernetes/issues/18112) + +### Tests +- Run kubernetes e2e tests +- migrate to jenkins +(a test is currently a deployment on a 3 node cluste, testing k8s api, ping between 2 pods) +- Full tests on GCE per day (All OS's, all network plugins) +- trigger a single test per pull request +- single test with the Ansible version n-1 per day +- Test idempotency on on single OS but for all network plugins/container engines +- single test on AWS per day +- test different achitectures : + - 3 instances, 3 are members of the etcd cluster, 2 of them acting as master and node, 1 as node + - 5 instances, 3 are etcd and nodes, 2 are masters only + - 7 instances, 3 etcd only, 2 masters, 2 nodes +- test scale up cluster: +1 etcd, +1 master, +1 node + +### Lifecycle +- Drain worker node when upgrading k8s components in a worker node. [#154](https://github.com/kubespray/kargo/issues/154) +- Drain worker node when shutting down/deleting an instance + +### Networking +- romana.io support [#160](https://github.com/kubespray/kargo/issues/160) +- Configure network policy for Calico. [#159](https://github.com/kubespray/kargo/issues/159) +- Opencontrail +- Canal + +### High availability +- (to be discussed) option to set a loadbalancer for the apiservers like ucarp/packemaker/keepalived +While waiting for the issue [kubernetes/kubernetes#18174](https://github.com/kubernetes/kubernetes/issues/18174) to be fixed. + +### Kargo-cli +- Delete instances +- `kargo vagrant` to setup a test cluster locally +- switch to Terraform instead of Ansible for provisionning + +### Kargo API +- Perform all actions through an **API** +- Store inventories / configurations of mulltiple clusters +- make sure that state of cluster is completely saved in no more than one config file beyond hosts inventory + +### Addons (with kpm) +Include optionals deployments to init the cluster: +##### Monitoring +- Heapster / Grafana .... +- **Prometheus** + +##### Others + +##### Dashboards: + - kubernetes-dashboard + - Fabric8 + - Tectonic + - Cockpit + +##### Paas like + - Openshift Origin + - Openstack + - Deis Workflow + +### Others +- remove nodes (adding is already supported) +- being able to choose any k8s version (almost done) +- **rkt** support [#59](https://github.com/kubespray/kargo/issues/59) +- Review documentation (split in categories) +- **consul** -> if officialy supported by k8s +- flex volumes options (e.g. **torrus** support) [#312](https://github.com/kubespray/kargo/issues/312) +- Clusters federation option (aka **ubernetes**) [#329](https://github.com/kubespray/kargo/issues/329)