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

[DOC] Architecture update #15

Merged
merged 14 commits into from
Jun 14, 2024
45 changes: 0 additions & 45 deletions content/docs/concepts/architecture/README.md

This file was deleted.

52 changes: 52 additions & 0 deletions content/docs/concepts/architecture/architecture.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# MKE Architecture

Mirantis Kubernetes Engine (MKE) 4 is an enterprise-grade, production-ready
Kubernetes platform designed to be secure, scalable, and reliable.
MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved
MKE 4 is deployed using an MKE configuration file.
MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved
See the [Configuration and blueprints](configuration.md) for more information.
MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved

## Components

MKE 4 is built on top of k0s, a lightweight Kubernetes distribution.
See the [official k0s documentation](https://docs.k0sproject.io/v1.29.3+k0s.0/)
MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved
for more information.

### Control plane

MKE 4 uses a control plane that oversees crucial cluster-wide decisions,
and monitors and responds to events within the cluster.
MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved
While the control plane components can function on any machine in the cluster,
MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved
setup scripts streamline the process by running all control plane
components on one machine and excluding user containers from that machine.

### Container Network Interface (CNI)

By default, MKE 4 installs Calico as the CNI plugin. This is done by specifying
MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved
`calico` in the network provider field of the k0s configuration.

Calico is installed with the following configuration:

- IPv4 only with a fixed Pod CIDR of `10.244.0.0/16`.
MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved
- The datastore mode is set to `kdd`.
MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved
- `kube-proxy` set to `iptables` mode.
- `vxlan` backend, which uses the default port of `4789` for traffic and default virtual network ID of `4096`.
MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved

With the Alpha.1 release, MKE 4 has the following limitations:
MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved

- There is no option to use a different CNI plugin.
- There is no option to configure Calico from the above defaults.
- When a cluster is upgraded from MKE 3, the Calico configuration is not migrated.
MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved

<!-- ### Data Plane -->

<!-- [Discuss the data plane components and their functions] -->

<!-- ## High-Level Diagram -->

<!-- [Include a high-level diagram illustrating the MKE architecture] -->

<!-- ## Deployment considerations -->

<!-- [Highlight any important considerations for deploying MKE] -->

<!-- ## Conclusion [Wrap up the document with a conclusion or summary] -->
85 changes: 64 additions & 21 deletions content/docs/concepts/architecture/configuration.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,24 @@
## MKE4 Configuration & Blueprints
The MKE4 Configuration file contains an opinionated configuration on how to set up the MKE cluster. It lets the user define details about their cluster such as how many nodes there are in the cluster, how to access the nodes, and any specific MKE4 feature that you want to enable/disable. The simple MKE4 configuration file is translated into a more complex Blueprint that contains the granular details of how to set up the cluster.
# Configuration and blueprints

The Mirantis Kubernetes Engine (MKE) 4 configuration file contains an
opinionated configuration on how to set up the MKE cluster.

### Creating your Config
A default MKE config can be generated by running `mkectl init > mke.yaml`. This will generate a default config that you can modify to deploy MKE on your cluster.
In the configuration file, you can:

MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved
To apply your config to a set of pre-existing machines, modify the `hosts` section of the config.
- Define the number of nodes in the cluster.
- Define ways to access the nodes.
- Enable or disable certain MKE 4 features.

KoryKessel-Mirantis marked this conversation as resolved.
Show resolved Hide resolved
An example of a hosts section is shown below:
The configuration file is translated into a more complex blueprint
that contains the granular details on how to set up the cluster.
MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved

## Create configuration

KoryKessel-Mirantis marked this conversation as resolved.
Show resolved Hide resolved
To generate the default MKE configuration file run `mkectl init > mke.yaml` command.
Next, modify generated file accordingly to deploy MKE on the cluster.
MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved

To apply configuration to a set of pre-existing machines, modify the `hosts`
section of the file:

```yaml
hosts:
Expand All @@ -31,27 +42,59 @@ hosts:
role: worker
```

For users migrating from MKE3, it is possible to pass some options to `mkectl` to migrate your settings directly from MKE3.
## Migrate configuration

MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved
If you migrate from MKE 3, you can pass some options to `mkectl` to transfer
the settings directly from MKE 3. Execute one of the following options:

**Convert local MKE 3 config**

To pass in a downloaded MKE 3 configuration file set the `--mke3-config` flag.
This will convert the local MKE 3 config into a valid MKE 4 config.

To pass in a downloaded MKE3 config file set the `--mke3-config` flag. This will convert the local MKE3 config into a valid MKE4 config.
```bash
mkectl init --mke3-config /path/to/mke3-config.toml
```

**Retrieve and convert MKE 3 config from a cluster**

MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved
Alternatively, you can provide `mkectl` with the credentials to connect to
an MKE 3 Cluster, which will allow `mkectl` to retrieve the MKE 3 config itself,
and convert it to an MKE 4 config.

```bash
mkectl init --mke3-admin-username admin --mke3-admin-password password --mke3-hostname mke3.example.com
```

`mkectl init --mke3-config /path/to/mke3-config.toml`
## Choose addons

MagdaDziadosz marked this conversation as resolved.
Show resolved Hide resolved
Alternatively you can provide `mkectl` with the credentials to connect to an MKE3 Cluster, which will allow `mkectl` to retrieve the MKE3 config itself and then convert it to an MKE4 config.
A core part of MKE 4 is the ability to selectively install addons from a set of
curated and tested addons. Run `mkectl init` command to enable a set of default
KoryKessel-Mirantis marked this conversation as resolved.
Show resolved Hide resolved
addons that are considered core to MKE 4. You can modify the generated config to
enable or disable additional addons, as well as modify their settings.

`mkectl init --mke3-admin-username admin --mke3-admin-password password --mke3-hostname mke3.example.com`
## Blueprints

KoryKessel-Mirantis marked this conversation as resolved.
Show resolved Hide resolved
### Choosing Addons
A core part of MKE4 is the ability to selectively install addons from from a set of curated and tested addons. `mkectl init` will enable a set of default addons that are considered core to MKE4. You can modify the generated config to enable/disable additional addons as you wish, as well as modify settings on each particular addon.
All MKE 4 configuration files are translated into blueprints.
A blueprint is a special type of file that is used
KoryKessel-Mirantis marked this conversation as resolved.
Show resolved Hide resolved
to create a Kubernetes Custom Resource (CRD) also called a blueprint.
Thus, the blueprint file must be a valid Kubernetes YAML and contain many
of the same fields as standard Kubernetes Objects.
MKE 4 uses the Blueprint Operator to manage all blueprints and their assignments.

### Blueprints
MKE4 uses the blueprint operator under the hood. All MKE4 configs are translated into blueprints. A blueprint is a special type of file that is used to create a Kubernetes Custom Resource (CRD) also called a Blueprint. Thus the blueprint file must be valid Kubernetes YAML and contains many of the same fields as standard Kubernetes Objects.
A blueprint is composed of three sections:

KoryKessel-Mirantis marked this conversation as resolved.
Show resolved Hide resolved
A blueprint is roughly composed of 3 sections.
1. The section detailing the Kubernetes Provider and any specific settings for that provider. This section is mostly managed by `mkectl` independently of the user provided MKE config.
2. The section detailing the infrastructure that will be used for the Kubernetes Cluster. This is essentially just the `hosts` section of the MKE config.
3. The components section. This section is composed of the various addons specified in the MKE config. `mkectl` takes the user-friendly MKE config options and translates them into specific settings in either Helm or Manifest type addons that are deployed into the cluster.
1. The Kubernetes Provider details with settings for that provider.
This section is mostly managed by `mkectl` independently of the user provided MKE configuration file.
KoryKessel-Mirantis marked this conversation as resolved.
Show resolved Hide resolved
2. The infrastructure details that are used for the Kubernetes Cluster.
This is the `hosts` section of the MKE configuration file.
3. The components section, composed of various addons specified in the MKE
configuration file. The `mkectl` command transforms the MKE configuration options
into specific settings in either Helm or Manifest type addons that are deployed
into the cluster.

To see the detailed blueprint of a MKE config you can run `mkectl init --blueprint`. It is possible to modify the blueprint directly but any such modifications are considered advanced and not officially supported by MKE.
To see detailed blueprint of an MKE config run `mkectl init --blueprint` command.
You can modify the blueprint directly, but any such modification is considered
KoryKessel-Mirantis marked this conversation as resolved.
Show resolved Hide resolved
advanced and is not supported by MKE.
KoryKessel-Mirantis marked this conversation as resolved.
Show resolved Hide resolved

Please see the blueprint operator [documentation](https://mirantiscontainers.github.io/boundless/) for more details on blueprints.
<!-- Please see the Blueprint Operator [documentation](https://mirantiscontainers.github.io/boundless/) for more details on blueprints. - broken link -->
60 changes: 30 additions & 30 deletions content/releases/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,33 +13,33 @@
### Features
This table summarizes MKE 4 features, their status, and links to guides

| Feature | Pre-Release | Status |
|------------------------------------------------------------------|-------|----------|
| Authentication | alpha.1| MVP |
| Authorization | alpha.1 | MVP |
| [Backup & Restore](../docs/reference/backuprestore/README.md) | alpha.1 | MVP |
| CIS Benchmark | | |
| CLI | | |
| Cloud Providers | | |
| CoreDNS | | |
| cAdvisor | | |
| gMSA | | |
| GPU Feature Discovery | | |
| [Ingress](../docs/reference/ingress/README.md) | alpha.1| MVP | |
| [Kubernetes](../docs/concepts/architecture/README.md#Components) | alpha.1 | MVP 1.29 | |
| Life Cycle Management | | |
| Licensing | | |
| Load Balancing | | |
| Logging, Monitoring and Alerting | alpha.1 | MVP |
| [Networking (CNI)](../docs/concepts/architecture/README.md#CNI) | alpha.1 | MVP |
| Node Feature Discovery | | |
| Offline Bundle | | |
| OpsCare | | |
| Policy Controller | | |
| Storage (CSI) | | |
| Support Dump | | |
| Telemetry | | |
| TLS | | |
| 2FA | | |
| Web UI | alpha 2 | |
| Windows | | |
| Feature | Pre-Release | Status |
|------------------------------------------------------------------------|-------|----------|
| Authentication | alpha.1| MVP |
| Authorization | alpha.1 | MVP |
| [Backup & Restore](../docs/reference/backuprestore/README.md) | alpha.1 | MVP |
| CIS Benchmark | | |
| CLI | | |
| Cloud Providers | | |
| CoreDNS | | |
| cAdvisor | | |
| gMSA | | |
| GPU Feature Discovery | | |
| [Ingress](../docs/reference/ingress/README.md) | alpha.1| MVP | |
| [Kubernetes](../docs/concepts/architecture/architecture.md#components) | alpha.1 | MVP 1.29 | |
| Life Cycle Management | | |
| Licensing | | |
| Load Balancing | | |
| Logging, Monitoring and Alerting | alpha.1 | MVP |
| [Networking (CNI)](../docs/concepts/architecture/architecture.md#container-network-interface-cni-) | alpha.1 | MVP |

Check failure on line 34 in content/releases/README.md

View workflow job for this annotation

GitHub Actions / Linkspector

[linkspector] content/releases/README.md#L34

Connot reach ../docs/concepts/architecture/architecture.md#container-network-interface-cni-. Status: 404 Cannot find section: #container-network-interface-cni- in file: /home/runner/work/mke-docs/mke-docs/content/docs/concepts/architecture/architecture.md.
Raw output
message:"Connot reach ../docs/concepts/architecture/architecture.md#container-network-interface-cni-. Status: 404 Cannot find section: #container-network-interface-cni- in file: /home/runner/work/mke-docs/mke-docs/content/docs/concepts/architecture/architecture.md."  location:{path:"content/releases/README.md"  range:{start:{line:34  column:3}  end:{line:34  column:101}}}  severity:ERROR  source:{name:"linkspector"  url:"https://github.com/UmbrellaDocs/linkspector"}
| Node Feature Discovery | | |
| Offline Bundle | | |
| OpsCare | | |
| Policy Controller | | |
| Storage (CSI) | | |
| Support Dump | | |
| Telemetry | | |
| TLS | | |
| 2FA | | |
| Web UI | alpha 2 | |
| Windows | | |
Loading