Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2019 minikube roadmap! #3488

Merged
merged 13 commits into from Jan 28, 2019
26 changes: 26 additions & 0 deletions docs/contributors/principles.md
@@ -0,0 +1,26 @@
# Principles of Minikube

The primary goal of minikube is to make it simple to run Kubernetes locally, for day-to-day development workflows and learning purposes. Here are the guiding principles for minikube, in rough priority order:

1. User-friendly and accessible
2. Inclusive and community-driven
3. Cross-platform
4. Support all Kubernetes features
5. High-fidelity
6. Compatible with all supported Kubernetes releases
7. Support for all Kubernetes-friendly container runtimes
8. Stable and easy to debug

Here are some specific minikube features that align with our goal:

* Single command setup and teardown UX
* Support for local storage, networking, auto-scaling, load balancing, etc.
* Unified UX across operating systems
* Minimal dependencies on third party software
* Minimal resource overhead

## Non-Goals

* Simplifying Kubernetes production deployment experience
* Supporting all possible deployment configurations of Kubernetes like various types of storage, networking, etc.

98 changes: 50 additions & 48 deletions docs/contributors/roadmap.md
@@ -1,48 +1,50 @@
# Minikube Roadmap
This document contains the goals, plans, and priorities for the minikube project.
Note that these priorities are not set in stone. Please file an issue if you'd like to discuss adding or reordering these :)

## Goals
The primary goal of minikube is to make it simple to run Kubernetes on your local machine, both for getting started and day-to-day development workflows.
Here are some specific features that align with our goal:
* Single command setup and teardown UX.
* Support most portable Kubernetes core features (local storage, networking, auto-scaling, loadbalancing, etc.)
* Unified UX across OSes.
* Minimal dependencies on third party software.
* Minimal resource overhead.
* Becoming the default local-cluster setup for Kubernetes

## Non-Goals
* Simplifying Kubernetes production deployment experience. Kube-deploy is attempting to tackle this problem.
* Supporting all possible deployment configurations of Kubernetes like various types of storage, networking, etc.

## Priorities
This section contains the overall priorities of the minikube project, in rough order.

1. Setting up a well-tested, secure and complete Kubernetes cluster locally.
2. Cross Platform support (macOS, Linux, Windows)
3. Supporting existing Kubernetes features:
* Load Balancer support.
* Persistent disks.
4. Keeping up with new Kubernetes releases and features.
5. Development-focused features like:
* Mounting host directories.
* VPN/proxy networking.
6. Native hypervisor integration.
7. Support for alternative Kubernetes runtimes, like rkt.
8. Removing the VirtualBox dependency and replacing it with Hypervisor.framework/Hyper-V.

## Timelines
Minikube will release much faster than this, so this section is fairly speculative.
This section is subject to change based on feedback and staffing.

### Q1 2017

* Release Kubernetes 1.6.0 alpha and beta releases packaged with minikube
* Release Kubernetes 1.6.0 packaged with minikube within two days of GA upstream build
* Run local e2e Kubernetes tests with minikube
* Minikube no longer depends on libmachine
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was this goal removed ? It would be good if libmachine could be made more engine-agnostic.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, at least for 2019. I'm not convinced that there is much merit in adding another layer of abstraction here, unless it's a migration path to something better.

In 2018, we changed our upstream project to machine-drivers, though I'm not yet convinced of that projects long-term viability unless activity picks up.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Machine drivers organisation was mostly created to host drivers blocked by upstream, such as the KVM driver (forked and used by minikube). Its possibility to develop API seems questionable...

At this point in time, there is no difference to libmachine itself. So the change is mostly superficial, the bigger issue what is going to happen with the two libvirt machine drivers used by minikube ?

* Minikube no longer depends on existing KVM driver
tstromberg marked this conversation as resolved.
Show resolved Hide resolved
* Native drivers are made default and packaged with minikube
* Improve minikube start time by 30%
* Add a no-vm driver for linux CI environments
# minikube roadmap (2019)

This roadmap is a living document outlining the major technical improvements which we would like to see in minikube during 2019, divided by how they apply to the minikube [(guiding principles)[principles.md]

Please send a PR to suggest any improvements to it.

## (#1) User-friendly and accessible

- Creation of a user-centric minikube website for installation & documentation
- Localized output to 5+ written languages
- Make minikube usable in environments with challenging connectivity requirements
- Support lightweight deployment methods for environments where VM's are impractical
- Add offline support

## (#2) Inclusive and community-driven

- Increase community involvement in planning and decision making
- Make the continuous integration and release infrastructure publicly available
- Double the number of active maintainers

## (#3) Cross-platform

- Simplified installation process across all supported platforms
- Users should never need to separately install supporting binaries

## (#4) Support all Kubernetes features

- Add multi-node support

## (#5) High-fidelity

- Reduce guest VM overhead by 50%
- Disable swap in the guest VM

## (#6) Compatible with all supported Kubernetes releases

- Continuous Integration testing across all supported Kubernetes releases
- Automatic PR generation for updating the default Kubernetes release minikube uses

## (#7) Support for all Kubernetes-friendly container runtimes

- Run all integration tests across all supported container runtimes
- Support for Kata Containers (help wanted!)

## (#8) Stable and easy to debug

- Pre-flight error checks for common connectivity and configuration errors
- Improve the `minikube status` command so that it can diagnose common issues
- Mark all features not covered by continuous integration as `experimental`
- Stabilize and improve profiles support (AKA multi-cluster)