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

Add 2A initialisation process document #58

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 Project 2A works.

## Architectural Overview

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

![2A initialisation process](../assets/hmc-initialisation.png)

## The process

1. [helm install hmc](../quick-start/2a-installation.md/#installation-via-helm) brings up the bootstrap components (yellow on the picture above)
1. hmc-controller-manager set up webhooks to validate its CRs, then cert-manager handles the webhooks’ certificates
1. hmc-controller-manager generates *Release* object corresponding to the hmc helm chart version
1. hmc-controller-manager ([release-controller](https://github.com/Mirantis/hmc/blob/main/internal/controller/release_controller.go) inside it) generates template objects (*ProviderTemplate/ClusterTemplate/ServiceTemplate*) corresponding to *Release* to be further processed
1. hmc-controller-manager generates *HelmRelease* object for every template from p.3 (Important: it includes also hmc 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. hmc-controller-manager creates a Management object which refers to the above *Release* and the *ProviderTemplate* objects.
*Management* object represents the 2A management cluster as a whole.
The management cluster Day-2 operations (such as [upgrade](../usage/2a-upgrade.md)) are being executed by manipulating the *Release* and *Management* objects.
1. hmc-controller-manager generates an empty *AccessManagement* object (*TemplateManagement* in older releases). *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/hmc-initialisation.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 @@ -100,5 +100,7 @@ nav:
- Overview: credential/main.md
- RBAC:
- Overview: rbac/roles.md
- Architecture: architecture.md
- Architecture:
- Overview: architecture/architecture.md
- 2A initialisation process: architecture/initialisation.md
- Glossary: glossary.md