Skip to content

Commit

Permalink
Added k0rdent initialization document
Browse files Browse the repository at this point in the history
* Added the init process document
* Renamed 2A/hmc to k0rdent/kcm
* Fixed spellings
  • Loading branch information
ironreality authored and randybias committed Jan 21, 2025
1 parent b3c2f0c commit e3a1dcf
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 5 deletions.
5 changes: 1 addition & 4 deletions docs/architecture.md → docs/architecture/architecture.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
# Architecture

# Architectural Overview

Below is a diagram that provides an overview of how k0rdent works.

## Architectural Overview

```mermaid
---
title: kcm Overview
Expand Down
17 changes: 17 additions & 0 deletions docs/architecture/initialization.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# k0rdent initialization process

![k0rdent initialization process](../assets/kcm-initialization.png)

## The process

1. [helm install kcm](../quick-start/installation.md#installation-via-helm) brings up the bootstrap components (yellow on the picture above)
1. kcm-controller-manager set up webhooks to validate its CRs, then cert-manager handles the webhooks’ certificates
1. kcm-controller-manager generates *Release* object corresponding to the kcm helm chart version
1. kcm-controller-manager ([release-controller](https://github.com/k0rdent/kcm/blob/main/internal/controller/release_controller.go) inside it) generates template objects (*ProviderTemplate/ClusterTemplate/ServiceTemplate*) corresponding to *Release* to be further processed
1. kcm-controller-manager generates *HelmRelease* object for every template from p.3 (Important: it includes also kcm helm chart itself)
1. [Flux](https://github.com/fluxcd/flux2) (source-controller and helm-controller pods) reconciles the *HelmRelease* objects i.e. installs all the helm charts referred to in the templates.
**After this point the deployment is completely controlled by Flux.**
1. kcm-controller-manager creates a Management object which refers to the above *Release* and the *ProviderTemplate* objects.
*Management* object represents the k0rdent management cluster as a whole.
The management cluster Day-2 operations (such as [upgrade](../usage/upgrade.md)) are being executed by manipulating the *Release* and *Management* objects.
1. kcm-controller-manager generates an empty *AccessManagement* object. *AccessManagement* defines [access rules](../template/main.md/#template-life-cycle-management) for *ClusterTemplate*/*ServiceTemplate* propagation across user namespaces. Further *AccessManagement* might be edited and used along with admin-created *ClusterTemplateChain* and *ServiceTemplaitChain* objects.
Binary file added docs/assets/kcm-initialization.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 3 additions & 1 deletion mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,5 +105,7 @@ nav:
- Disaster Recovery:
- Overview: disaster-recovery/overview.md
- Customization: disaster-recovery/customization.md
- Architecture: architecture.md
- Architecture:
- Overview: architecture/architecture.md
- k0rdent initialization process: architecture/initialization.md
- Glossary: glossary.md

0 comments on commit e3a1dcf

Please sign in to comment.