diff --git a/docs/slides/arktos_current_work_and_next.pdf b/docs/slides/arktos_current_work_and_next.pdf new file mode 100644 index 00000000000..d363f5fa798 Binary files /dev/null and b/docs/slides/arktos_current_work_and_next.pdf differ diff --git a/docs/user-guide/Arktos-Release-Notes.md b/docs/user-guide/Arktos-Release-Notes.md new file mode 100644 index 00000000000..ea88dd87df9 --- /dev/null +++ b/docs/user-guide/Arktos-Release-Notes.md @@ -0,0 +1,93 @@ +# Roadmap + +## Arktos Release v0.1 (1/30/2020) +Arktos is an open source cluster management system designed for large scale clouds. It is evolved from the open source Kubernetes v1.15 codebase with some fundamental improvements. +Arktos aims to be an open source solution to address key challenges of large scale clouds, including system scalability, resource efficiency, multitenancy, cross-AZ resiliency, and the native support for the fast-growing modern workloads such as containers and serverless functions. + +Today we announce the v0.1 release of Arktos. + +### Repos +1. Arktos: https://github.com/futurewei-cloud/arktos +1. Arktos-cniplugins: https://github.com/futurewei-cloud/arktos-cniplugins +1. Arktos-vm-runtime: https://github.com/futurewei-cloud/arktos-vm-runtime + +### Released Components +1. Unified Node Agent +1. Unified Scheduler +1. Partitioned and Scalable Controller Manager +1. API Server/Core Server with Multi-Tenancy and Unified Pod Support +1. Arktos VM Runtime Server + +### Features +1. Multi-tenancy Features + 1. Introduce a new layer “tenant” before “namespace” in API resource URL schema, to provide a clear and isolated resource hierarchy for tenants. + 1. Introduce a new API resource “tenant”, to keep tenant-level configurations and properties. + 1. The metadata section of all exiting API resources has a new member: tenantName. + 1. API Server, ClientGo, Scheduler, Controllers and CLI changes for the new resource model. +1. Unified VM/Container Support: + 1. Extend “pod” definition to both containers and VM. Now a pod can contain one VM, or one or more containers. + 1. Enhance scheduler to schedule container pods and VM pods in the same way (unified scheduling). + 1. Enhance kubelet to support multiple CRI runtimes (unified agent). + 1. Implement a VM runtime server evolved from project Virtlet, with new features like VM reboot, snapshot, restore, etc. + 1. Enhance kubelet to handle VM state changes and configuration changes. + 1. Introduce a new API resource “action” and the corresponding handles (action framework) to support some VM specific actions which are not appropriate to be expressed as state machine changes, like reboot and snapshot. +1. Artkos Integration with OpenStack Neutron + 1. Arktos network controller integrate with neutron. + 1. Arktos CNI plugins for neutron. +1. Arktos integration with Mizar + 1. Arktos CNI plugins for mizar-mp. +1. Scalability + 1. Partitioned and scalable controller managers with active-active support. + 1. API Server Partitioning (in progress) + 1. ETCD partitioning (in progress) +### Known Issues +1. Go 1.13 is not supported yet. +### Features in Planning +1. Intelligent scheduling +1. in-place resource update +1. QoS enforcement + +## Arktos Release v0.2 (3/30/2020) + +### Features Added +1. Multi-tenancy Features + 1. Tenancy short-path support + 2. Add Tenant Controller + 3. Tenancy-aware token Authenticator + 4. Tenancy-aware Cert Authenticator + 5. Tenancy-aware RBAC Authorizer + 6. Tenancy in kubeconfig context + 7. Stabilization on multi-tenancy API Model + 8. More test and workaround fixes Added + +2. Scalability Features + 1. API Server Data Partitioning + 2. Active-active controller framework - new Kubernetes master component: Workload Controller Manager + 3. Set up test environments for data partitioned environment + 4. Add kube-up and start-kubemark for AWS + +3. Unifed VM/containers + 1. Add support for primary runtime + 2. Add volume driver for OpenStack Cinder + 3. Fix issues related to VM pod vCPU settings + +4. Documentation + 1. New documentation readthedocs page + +### Known Issues + + 1. Create new tenant make events related to the tenant populated to all api servers + 2. Performance testing: Scheduling Throughput is one fourth of pre-arktos + 3. AWS: Register kubemark master as a node + 4. AWS: Start-kubemark failed to run without sudo password + 5. Get coredns working with kubeadm + 6. AWS: Add workload-controller-manager to aws kube-up and start-kubemark + +### Future Releases + 1. Performance test result + 2. ETCD partitioning + 3. Intelligent scheduling + 4. In-place resource update + 5. QoS enforcement + + diff --git a/docs/user-guide/CONTRIBUTING.md b/docs/user-guide/CONTRIBUTING.md new file mode 100644 index 00000000000..e5c40333731 --- /dev/null +++ b/docs/user-guide/CONTRIBUTING.md @@ -0,0 +1,142 @@ +# Welcome + +Welcome to Arktos! + +- [Before you get started](#before-you-get-started) + - [Code of Conduct](#code-of-conduct) +- [Getting started](#getting-started) +- [Your First Contribution](#your-first-contribution) + - [Find something to work on](#find-something-to-work-on) + - [Find a good first topic](#find-a-good-first-topic) + - [Work on an Issue](#work-on-an-issue) + - [File an Issue](#file-an-issue) +- [Contributor Workflow](#contributor-workflow) + - [Creating Pull Requests](#creating-pull-requests) + - [Code Review](#code-review) + - [Testing](#testing) + - [Documents and Support](#documents-and-support) + +# Before you get started + +## Code of Conduct + +Please make sure to read and observe our [Code of Conduct](https://github.com/futurewei-cloud/arktos/blob/master/code-of-conduct.md). + +# Getting started + +- Fork the repository on GitHub +- Visit [README](https://github.com/futurewei-cloud/arktos#build-arktos) for build instructions. + + +# Your First Contribution + +We will help you to contribute in different areas like filing issues, developing features, fixing critical bugs and getting your work reviewed and merged. + +If you have questions about the development process, feel free to jump into our [slack channel](https://app.slack.com/client/TMNECBVT5/CRRUU7137) or join our [email group](https://groups.google.com/forum/#!forum/arktos-user). + +## Find something to work on + +We are always in need of help, be it fixing documentation, reporting bugs or writing some code. +Look at places where you feel best coding practices aren't followed, code refactoring is needed or tests are missing. +Here is how you get started. + +### Find a good first topic + +There are multiple repositories ([Arktos](https://github.com/futurewei-cloud/arktos), [Arktos-vm-runtime](https://github.com/futurewei-cloud/arktos-vm-runtime), [Arktos-cniplugins](https://github.com/futurewei-cloud/arktos-cniplugins)) within the Arktos organization. +Each repository has beginner-friendly issues that provide a good starting point. +For example, [Arktos](https://github.com/futurewei-cloud/arktos) has [help wanted](https://github.com/futurewei-cloud/arktos/labels/help%20wanted) and [good first issue](https://github.com/futurewei-cloud/arktos/labels/good%20first%20issue) labels for issues that should not need deep knowledge of the system. We can help new contributors who wish to work on such issues. + + +### Work on an issue + +When you are willing to take on an issue, you can assign it to yourself. Just reply with `/assign` or `/assign @yourself` on an issue, +then the robot will assign the issue to you and your name will present at `Assignees` list. + +### File an Issue + +While we encourage everyone to contribute code, it is also appreciated when someone reports an issue. +Issues should be filed under the appropriate Arktos sub-repository. + +*Example:* An Arktos issue should be opened to [Arktos](https://github.com/futurewei-cloud/arktos). And the same should apply to [Arktos-vm-runtime](https://github.com/futurewei-cloud/arktos-vm-runtime) and [Arktos-cniplugins](https://github.com/futurewei-cloud/arktos-cniplugins). + +Please follow the prompted submission guidelines while opening an issue. + +# Contributor Workflow + +Please do not ever hesitate to ask a question or send a pull request. + +This is a rough outline of what a contributor's workflow looks like: + +- Fork [Arktos](https://github.com/futurewei-cloud/arktos). +- Create a topic branch in your forked repo from where to base the contribution. This is usually master. +- Make commits of logical units. +- Make sure commit messages are in the proper format (see below). +- Push changes in a topic branch to a personal fork of the repository. +- Submit a pull request to [Arktos](https://github.com/futurewei-cloud/arktos). +- The PR must receive an approval from two team members including at least one maintainer. + +## Creating Pull Requests + +Pull requests are often called simply "PR". +Arktos generally follows the standard [github pull request](https://help.github.com/articles/about-pull-requests/) process. +To submit a proposed change, please develop the code/fix and add new test cases. +After that, run these local verifications before submitting pull request to predict the pass or +fail of continuous integration. + +## Code Review + +To make it easier for your PR to receive reviews, consider the reviewers will need you to: + +* follow [good coding guidelines](https://github.com/golang/go/wiki/CodeReviewComments). +* write [good commit messages](https://chris.beams.io/posts/git-commit/). +* break large changes into a logical series of smaller patches which individually make easily understandable changes, and in aggregate solve a broader issue. +* label PRs with appropriate reviewers: to do this read the messages the bot sends you to guide you through the PR process. + +### Format of the commit message + +We follow a rough convention for commit messages that is designed to answer two questions: what changed and why. +The subject line should feature the what and the body of the commit should describe the why. + +``` +scripts: add test codes for metamanager + +this add some unit test codes to imporve code coverage for metamanager + +Fixes #12 +``` + +The format can be described more formally as follows: + +``` +: + + + +