This repository has been archived by the owner on Mar 17, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #10 from onmetal/documentation
Added overview documentation
- Loading branch information
Showing
10 changed files
with
59 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -58,6 +58,7 @@ jobs: | |
version: v3.6.3 | ||
|
||
- name: Run chart-releaser | ||
if: ${{ github.event_name == 'push' }} | ||
uses: helm/[email protected] | ||
env: | ||
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,15 @@ | ||
# virtual-controlplane | ||
|
||
![Gardener on Metal Logo](docs/assets/logo.png) | ||
|
||
This project contains a collection of helm charts to deploy a virtual/nodeless Kubernetes API server. | ||
|
||
The API server can be deployed using various storage backends | ||
## Start using or developing the virual-controlplane locally | ||
|
||
For more details please check [documentation](https://onmetal.github.io/virtual-controlplane/) or the content in the `/docs` folder. | ||
|
||
* Etcd | ||
* Postgress | ||
* CockroachDB | ||
## Feedback and Support | ||
|
||
## Usage | ||
Feedback and contributions are always welcome! | ||
|
||
```shell | ||
helm repo add vc https://onmetal.github.io/virtual-controlplane/ | ||
``` | ||
In order to report bugs, submit suggestions or post questions please open a [Github issue](https://github.com/onmetal/virtual-controlplane/issues). |
This file was deleted.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,40 @@ | ||
# Virtual Controlplane | ||
# Virtual Controlplane | ||
|
||
The project contains a collection of helm charts to deploy a virtual/nodeless [Kubernetes API server](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/). | ||
|
||
## Background | ||
|
||
Why do we need such a thing as a nodeless Kubernetes cluster? | ||
|
||
When developing a custom controlplane by [extending Kubernetes](https://kubernetes.io/docs/concepts/extend-kubernetes/) and using the [Operator Pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) we typically might not be interested in objects like `Pods`, `Deployments` and others. The goal instead is to introduce new [CustomResourceDefinitions](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/) on which our controllers will operate by leveraging the concepts the Kubernetes API machinery is offering us. | ||
|
||
In order to do it, we will need certain things such as: | ||
|
||
- `etcd` server (ideally with a [backup and restore sidecar](https://github.com/gardener/etcd-backup-restore)[^1]) | ||
- `kube-api-server` and `kube-controller-manager` | ||
|
||
Since this Kubernetes API server setup does not have any nodes, we don't need to deploy the `kube-scheduler` as we won't be deploying any `Pods`. | ||
|
||
Those components can be easily deployed on an existing Kubernetes cluster[^2]. | ||
|
||
![virtual controlplane](assets/vc.png) | ||
|
||
The figure above illustrates the core components which are deployed on a _vanilla_ Kubernetes runtime cluster. | ||
|
||
![virtual controlplane controller](assets/vc-controller.png) | ||
|
||
Your custom controllers can now also be deployed on the same (or different) runtime cluster as illustrated in the image above. | ||
|
||
## Advantages | ||
|
||
The main advantage of this approach is, that controllers and the content inside of virtual Kubernetes API server are no longer physically bound to the underlying runtime cluster as your CRDs are not mixed with content of the runtime clusters API server. | ||
|
||
Since the virtual controlplane in our scenario is just another workload running in a Kubernetes cluster, it can be moved and restored to a different cluster in case disaster strikes and the runtime cluster becomes unavailable. | ||
|
||
Another advantage is, that the performance of the virtual Kubernetes API server becomes a lot more predictable since nobody besides your controllers[^3] are working against it. | ||
|
||
[^1]: In our setup we are reusing the great work from the [Gardener](https://gardener.cloud/) project. | ||
[^2]: This can also be done on a classical virtual machine based setup. | ||
[^3]: And maybe the `kube-controller-manager`. | ||
|
||
--8<-- "hack/docs/abbreviations.md" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
*[CRD]: Custom Resource Definition | ||
*[CRDs]: Custom Resource Definitions | ||
*[CR]: Custom Resource | ||
*[CRs]: Custom Resources | ||
*[PR]: Pull Request | ||
*[PRs]: Pull Requests | ||
*[DCO]: Developer Certificate of Origin |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters