Skip to content

Commit

Permalink
Merge pull request #136 from open-component-model/mpas-section
Browse files Browse the repository at this point in the history
Create mpas section
  • Loading branch information
souleb authored Sep 22, 2023
2 parents 8e3ae3b + 951affb commit aa91860
Show file tree
Hide file tree
Showing 5 changed files with 656 additions and 0 deletions.
71 changes: 71 additions & 0 deletions content/en/mpas/core_concepts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
title: "Core Concepts"
description: Core Concepts of Mpas.
lead: ""
date: 2023-09-12T10:37:58+01:00
lastmod: 2023-09-12T10:37:58+01:00
draft: true
images: []
weight: 101
toc: true
---

This section describes the core concepts of `MPAS`. To learn more about the `MPAS` architecture,
see [Architecture](https://github.com/open-component-model/MPAS/tree/main/docs/concepts).

## Product

Products are packages of software that can be deployed to targets such as Kubernetes clusters,
virtual machines or bare-metal devices.

Products are made available to the `MPAS` system as `OCM` Components via a Subscription.
Multiple instances of a Product may be installed that refer to the same Subscription.

A `ProductDeployment` is a Kubernetes Custom Resource that represents a product to
be deployed to a target. The `ProductDeployment` is reconciled by the `MPAS Product Controller`
which will generate the necessary Kubernetes resources to deploy the product to the cluster.

A `ProductDeploymentGenerator` is a Kubernetes Custom Resource that represents a
`ProductDeployment` to be deployed to a Kubernetes cluster. The `ProductDeploymentGenerator`
is reconciled by the `MPAS Product Controller` in order to generate the `ProductDeployment` resource.

A `ProductDescription` is a manifest that describes a product. It specifies the set
of resources that are needed to deploy the product in a form of pipeline steps.
The `ProductDescription` is retrieved by the `MPAS Product Controller` in order to
generate the `ProductDeployment` resource during a `ProductDeploymentGenerator` reconciliation.

A `ProductDeploymentPipeline` is a Kubernetes Custom Resource that defines a resource
that needs to be deployed as part of the `ProductDeployment`. The `ProductDeploymentPipeline` is
reconciled by the `MPAS Product Controller` as part of the `ProductDeployment` deployment.


## Project

A `Project` is a Kubernetes Custom Resource that is used to manage the lifecycle of
a `MPAS` project. A `Project` is reconciled by the `MPAS Project Controller` which
will generate a project namespace and a git repository for the project containing
the project folder structure. The controller will also generate the necessary
`Flux kustomization` resources in the `mpas-system` namespace in order to update
the cluster with the project resources from the git repository. All items that the
`MPAS Project controller` created during reconcile, are visible in the `status` subresource
of a `Project` CR.

The project git repository is designed to be used as a gitops repository for the
project. It is where all the product custom resources are to be defined in order
to be deployed to the cluster.

## Subscription

The purpose of a Subscription is to replicate `OCM` components containing a particular
Product from a delivery registry to a registry in the `MPAS` customer's environment.

A `ComponentSubscription` is a Kubernetes Custom Resource that represents a subscription
to a component. The `ComponentSubscription` is reconciled by the `OCM Replication Controller`
which will transfer the OCM component using the OCM library into the target registry.

## Target

A `Target` is a Kubernetes Custom Resource that represents a target environment where
a `Product` is to be deployed. The `MPAS Product Controller` controller reconciles the `Target`
and creates any necessary prerequisite that needs to exist in the target environment, e.g.
a namespace and service account.
Loading

0 comments on commit aa91860

Please sign in to comment.