Skip to content

Commit

Permalink
Merge pull request #282 from stakater/docs-refactoring
Browse files Browse the repository at this point in the history
further docs cleanup
  • Loading branch information
rasheedamir authored Mar 5, 2025
2 parents 7821d96 + a9381e5 commit 7200712
Show file tree
Hide file tree
Showing 54 changed files with 179 additions and 250 deletions.
18 changes: 10 additions & 8 deletions content/about/key-features.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ Multi Tenant Operator binds existing ClusterRoles to the Tenant's Namespaces use

Multi Tenant Operator is also able to leverage existing groups in Kubernetes and OpenShift, or external groups synced from 3rd party identity management systems, for maintaining Tenant membership in your organization's current user management system.

More details on [Tenant](../kubernetes-resources/tenant/tenant-overview.md)

### Templates and Template distribution

Multi Tenant Operator allows admins/users to define templates for namespaces, so that others can instantiate these templates to provision namespaces with batteries loaded. A template could pre-populate a namespace for certain use cases or with basic tooling required. Templates allow you to define Kubernetes manifests, Helm chart and more to be applied when the template is used to create a namespace.
Expand All @@ -25,13 +27,13 @@ Common use cases for namespace templates may be:
* Deploying pre-populated databases with test data
* Injecting new namespaces with optional credentials such as image pull secrets

More details on [Distributing Template Resources](../how-to-guides/deploying-templates.md)
More details on [Distributing Template Resources](../kubernetes-resources/template/how-to-guides/deploying-templates.md)

### Resource Management

Multi Tenant Operator provides a mechanism for defining Resource Quotas at the tenant scope, meaning all namespaces belonging to a particular tenant share the defined quota, which is why you are able to safely enable dev teams to self serve their namespaces whilst being confident that they can only use the resources allocated based on budget and business needs.

More details on [Quota](../crds-api-reference/quota.md)
More details on [Quota](../kubernetes-resources/quota.md)

## FinOps Features

Expand All @@ -46,7 +48,7 @@ More details on [Showback](../console/showback.md)

Multi Tenant Operator can downscale Deployments and StatefulSets in a tenant's Namespace according to a defined sleep schedule. The Deployments and StatefulSets are brought back to their required replicas according to the provided wake schedule.

More details on [Hibernation](../tutorials/tenant/tenant-hibernation.md#hibernating-a-tenant) and [ResourceSupervisor](../crds-api-reference/resource-supervisor.md)
More details on [Hibernation](../kubernetes-resources/tenant/how-to-guides/hibernate-tenant.md) and [ResourceSupervisor](../kubernetes-resources/resource-supervisor.md)

### Capacity Planning

Expand All @@ -58,19 +60,19 @@ Provides tools to forecast and allocate resources effectively, ensuring optimal

Multi Tenant Operator extends the tenants permission model to Hashicorp Vault where it can create Vault paths and greatly ease the overhead of managing RBAC in Vault. Tenant users can manage their own secrets without the concern of someone else having access to their Vault paths.

More details on [Vault Multitenancy](../how-to-guides/enabling-multi-tenancy-vault.md)
More details on [Vault Multitenancy](../integrations/vault/vault.md)

### ArgoCD Multitenancy

Multi Tenant Operator is not only providing strong Multi Tenancy for the Kubernetes internals but also extends the tenants permission model to ArgoCD were it can provision AppProjects and Allowed Repositories for your tenants greatly ease the overhead of managing RBAC in ArgoCD.

More details on [ArgoCD Multitenancy](../how-to-guides/enabling-multi-tenancy-argocd.md)
More details on [ArgoCD Multitenancy](../integrations/argocd.md)

### Mattermost Multitenancy

Multi Tenant Operator can manage Mattermost to create Teams for tenant users. All tenant users get a unique team and a list of predefined channels gets created. When a user is removed from the tenant, the user is also removed from the Mattermost team corresponding to tenant.

More details on [Mattermost](../how-to-guides/mattermost.md)
More details on [Mattermost](../integrations/mattermost.md)

## Developer and Platform Productivity Features

Expand All @@ -84,15 +86,15 @@ More details on [Console](../console/overview.md)

Multi Tenant Operator can be configured to automatically provision a namespace in the cluster for every member of the specific tenant, that will also be preloaded with any selected templates and consume the same pool of resources from the tenants quota creating safe remote dev namespaces that teams can use as scratch namespace for rapid prototyping and development. So, every developer gets a Kubernetes-based cloud development environment that feel like working on localhost.

More details on [Sandboxes](../tutorials/tenant/create-sandbox.md)
More details on [Sandboxes](../kubernetes-resources/tenant/how-to-guides/create-sandbox.md)

## Security Features

### Cross Namespace Resource Distribution

Multi Tenant Operator supports cloning of secrets and configmaps from one namespace to another namespace based on label selectors. It uses templates to enable users to provide reference to secrets and configmaps. It uses a template group instance to distribute those secrets and namespaces in matching namespaces, even if namespaces belong to different tenants. If template instance is used then the resources will only be mapped if namespaces belong to same tenant.

More details on [Copying Secrets and Configmaps](../tutorials/distributing-resources/copying-resources.md)
More details on [Copying Secrets and Configmaps](../kubernetes-resources/template/how-to-guides/copying-resources.md)

### Self-Service

Expand Down
14 changes: 7 additions & 7 deletions content/architecture/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ MTO consists of multiple controllers and components that work together to provid

| Name | Type | Description |
|------|------|-------------|
| Tenant Controller | Deployment | The Tenant Controller is responsible for managing the creation, deletion, and updating of tenants in the cluster via [Tenant CRD](../crds-api-reference/tenant.md). |
| Tenant Controller | Deployment | The Tenant Controller is responsible for managing the creation, deletion, and updating of tenants in the cluster via [Tenant CRD](../kubernetes-resources/tenant/tenant-overview.md). |
| Namespace Controller | Deployment | The Namespace Controller is responsible for managing the creation, deletion, and updating of namespaces in the cluster. |
| Resource Supervisor Deployment | Deployment | The Resource Supervisor Controller is responsible for managing sleep and hibernation of namespaces in the cluster via [ResourceSupervisor CRD](../crds-api-reference/resource-supervisor.md). |
| Extensions Controller | Deployment | The Extensions Controller enhances MTO's functionality by allowing integration with external services,Currently supports integration with ArgoCD, enabling you to synchronize your repositories and configure AppProjects directly through MTO. It manages extensions via [Extension CRD](../crds-api-reference/extensions.md). |
| Template Quota Integration Config Controller | Deployment | The Template Quota Integration Config Controller manages 3 different CRDs in one controller, [Template CRD](../crds-api-reference/template.md), [Quota CRD](../crds-api-reference/quota.md), and [IntegrationConfig CRD](../crds-api-reference/integration-config.md). |
| TemplateInstance Controller | Deployment | The TemplateInstance Controller is responsible for managing the creation, deletion, and updating of TemplateInstances in the cluster via [TemplateInstance CRD](../crds-api-reference/template-instance.md). |
| TemplateGroupInstance Controller | Deployment | The TemplateGroupInstance Controller is responsible for managing the creation, deletion, and updating of TemplateGroupInstances in the cluster via [TemplateGroupInstance CRD](../crds-api-reference/template-group-instance.md). |
| Resource Supervisor Deployment | Deployment | The Resource Supervisor Controller is responsible for managing sleep and hibernation of namespaces in the cluster via [ResourceSupervisor CRD](../kubernetes-resources/resource-supervisor.md). |
| Extensions Controller | Deployment | The Extensions Controller enhances MTO's functionality by allowing integration with external services,Currently supports integration with ArgoCD, enabling you to synchronize your repositories and configure AppProjects directly through MTO. It manages extensions via [Extension CRD](../kubernetes-resources/extensions.md). |
| Template Quota Integration Config Controller | Deployment | The Template Quota Integration Config Controller manages 3 different CRDs in one controller, [Template CRD](../kubernetes-resources/template/template.md), [Quota CRD](../kubernetes-resources/quota.md), and [IntegrationConfig CRD](../kubernetes-resources/integration-config.md). |
| TemplateInstance Controller | Deployment | The TemplateInstance Controller is responsible for managing the creation, deletion, and updating of TemplateInstances in the cluster via [TemplateInstance CRD](../kubernetes-resources/template/template-instance.md). |
| TemplateGroupInstance Controller | Deployment | The TemplateGroupInstance Controller is responsible for managing the creation, deletion, and updating of TemplateGroupInstances in the cluster via [TemplateGroupInstance CRD](../kubernetes-resources/template/template-group-instance.md). |
| Webhook | Deployment | The Webhook is responsible for managing webhook requests from MTO's resources. |
| Pilot Controller | Deployment | The Pilot Controller is responsible provisioning and managing the lifecycle of MTO-Console and it's dependencies. |
| Keycloak | Deployment | Keycloak is an open-source identity and access management solution that provides authentication and authorization services for the MTO Console that can be provisioned via Pilot Controller or can be deployed and managed externally following this guide [External Keycloak](../how-to-guides/integrating-external-keycloak.md). |
| Keycloak | Deployment | Keycloak is an open-source identity and access management solution that provides authentication and authorization services for the MTO Console that can be provisioned via Pilot Controller or can be deployed and managed externally following this guide [External Keycloak](../integrations/keycloak.md). |
| PostgreSQL | StatefulSet | PostgreSQL is an open-source relational database that acts as a caching layer and stores the data for the MTO Console. It is also provisioned via Pilot Controller and is managed internally. |
| Opencost-Gateway | Deployment | Opencost is an open-source cost management solution that provides cost tracking and reporting for the resources deployed on the cluster. It is also provisioned via Pilot Controller and is managed internally. |
| Prometheus-Server | Deployment | Prometheus is an open-source monitoring and alerting solution that provides metrics and monitoring for the resources deployed on the cluster. It is also provisioned via Pilot Controller and is managed internally. |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ To enable custom metrics and view them in your OpenShift cluster, you need to fo
- To ensure that the metrics are being scraped for the namespace, navigate to `Observe` -> `Targets` in the OpenShift console. You should see the namespace in the list of targets.
- To view the custom metrics, navigate to `Observe` -> `Metrics` in the OpenShift console. You should see the custom metrics for templates, template instances and template group instances in the list of metrics.

Details of metrics can be found at [Metrics and Logs](../explanation/logs-metrics.md)
Details of metrics can be found at [Metrics and Logs](./logs-metrics.md)
File renamed without changes.
40 changes: 20 additions & 20 deletions content/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@

#### Features

- Added [Azure Pricing](./how-to-guides/azure-pricing.md) support for Opencost via [Integration Config](./crds-api-reference/integration-config.md#azure-pricing-model).
- Added option to disable `Intra-tenant Networking` via [Integration Config](./crds-api-reference/integration-config.md#tenantpolicies).
- Added [Storage class per tenant](./crds-api-reference/tenant.md#storage) support via Tenant CR.
- Added [Azure Pricing](./integrations/azure-pricing.md) support for Opencost via [Integration Config](./kubernetes-resources/integration-config.md#azure-pricing-model).
- Added option to disable `Intra-tenant Networking` via [Integration Config](./kubernetes-resources/integration-config.md#tenantpolicies).
- Added [Storage class per tenant](./kubernetes-resources/tenant/tenant-overview.md#storage) support via Tenant CR.
- Added option to override component images.
- Added support to add/update `Casbin` policies via `tenant-operator-casbin-config` Configmap.

Expand Down Expand Up @@ -129,8 +129,8 @@ Before upgrading to v1.1.0, perform the following steps:

#### Enhanced

- Updated Tenant CR to v1beta3, more details in [Tenant CRD](./crds-api-reference/tenant.md)
- Added custom pricing support for Opencost, more details in [Opencost](./crds-api-reference/integration-config.md#custom-pricing)
- Updated Tenant CR to v1beta3, more details in [Tenant CRD](./kubernetes-resources/tenant/tenant-overview.md)
- Added custom pricing support for Opencost, more details in [Opencost](./kubernetes-resources/integration-config.md#custom-pricing)

#### Fix

Expand Down Expand Up @@ -170,7 +170,7 @@ Before upgrading to v1.1.0, perform the following steps:
- `TemplateGroupInstance` controller now ensures that its underlying resources are force-synced when a namespace is created or deleted.
- Optimizations were made to ensure the reconciler in the TGI controller runs only once per watch event, reducing reconcile times.
- The `TemplateGroupInstance` reconcile flow has been refined to process only the namespace for which the event was received, streamlining resource creation/deletion and improving overall efficiency.
- Introduced new metrics to enhance the monitoring capabilities of the operator. Details at [TGI Metrics Explanation](./explanation/logs-metrics.md)
- Introduced new metrics to enhance the monitoring capabilities of the operator. Details at [TGI Metrics Explanation](./architecture/logs-metrics.md)

### v0.10.0

Expand Down Expand Up @@ -208,7 +208,7 @@ Before upgrading to v1.1.0, perform the following steps:
- fix: ValidatingWebhookConfiguration CRs are now owned by OLM, to handle cleanup upon operator uninstall
- enhance: TemplateGroupInstance CRs now actively watch the resources they apply, and perform functions to make sure they are in sync with the state mentioned in their respective Templates

> More information about TemplateGroupInstance's sync at [Sync Resources Deployed by TemplateGroupInstance](./how-to-guides/resource-sync-by-tgi.md)
> More information about TemplateGroupInstance's sync at [Sync Resources Deployed by TemplateGroupInstance](./kubernetes-resources/template/how-to-guides/resource-sync-by-tgi.md)
### v0.9.2

Expand Down Expand Up @@ -249,8 +249,8 @@ Before upgrading to v1.1.0, perform the following steps:

### v0.8.0

- feat: Allow custom roles for each tenant via label selector, more details in [custom roles document](./how-to-guides/custom-roles.md)
- Roles mapping is a required field in [MTO's IntegrationConfig](./crds-api-reference/integration-config.md). By default, it will always be filled with OpenShift's admin/edit/view roles
- feat: Allow custom roles for each tenant via label selector, more details in [custom roles document](./kubernetes-resources/tenant/how-to-guides//custom-roles.md)
- Roles mapping is a required field in [MTO's IntegrationConfig](./kubernetes-resources/integration-config.md). By default, it will always be filled with OpenShift's admin/edit/view roles
- Ensure that mentioned roles exist within the cluster
- Remove coupling with OpenShift's built-in admin/edit/view roles
- feat: Removed coupling of ResourceSupervisor and Tenant resources
Expand Down Expand Up @@ -290,7 +290,7 @@ Before upgrading to v1.1.0, perform the following steps:
- feat: Allow creation of namespaces without tenant prefix from within tenant spec
- fix: Webhook changes will now be updated without manual intervention
- maintain: Updated Tenant CR version from v1beta1 to v1beta2. Conversion webhook is added to facilitate transition to new version
- see [Tenant spec](./crds-api-reference/tenant.md) for updated spec
- see [Tenant spec](./kubernetes-resources/tenant/tenant-overview.md) for updated spec
- enhance: Better automated testing

## v0.6.x
Expand Down Expand Up @@ -339,7 +339,7 @@ Before upgrading to v1.1.0, perform the following steps:
- fix: TemplateGroupInstance now cleans up leftover Template resources from namespaces that are no longer part of TGI namespace selector
- fix: Fixed hibernation sync issue

- enhance: Update tenant spec for applying common/specific namespace labels/annotations. For more details check out [commonMetadata & SpecificMetadata](./tutorials/tenant/assigning-metadata.md)
- enhance: Update tenant spec for applying common/specific namespace labels/annotations. For more details check out [commonMetadata & SpecificMetadata](./kubernetes-resources/tenant/how-to-guides/assign-metadata.md)
- enhance: Add support for multi-pod architecture for Operator-Hub

- chore: Remove conversion webhook for Quota and Tenant
Expand All @@ -349,7 +349,7 @@ Before upgrading to v1.1.0, perform the following steps:
### v0.4.7

- feat: Add hibernation of StatefulSets and Deployments based on a timer
- feat: [New custom resource](./tutorials/tenant/tenant-hibernation.md) that handles hibernation
- feat: [New custom resource](./kubernetes-resources/tenant/how-to-guides/hibernate-tenant.md) that handles hibernation

### v0.4.6

Expand Down Expand Up @@ -426,7 +426,7 @@ Before upgrading to v1.1.0, perform the following steps:

### v0.3.24

- feat: Add feature to allow ArgoCD to sync specific cluster scoped custom resources, configurable via Integration Config. More details in [relevant docs](./crds-api-reference/integration-config.md#argocd)
- feat: Add feature to allow ArgoCD to sync specific cluster scoped custom resources, configurable via Integration Config. More details in [relevant docs](./kubernetes-resources/integration-config.md#argocd)

### v0.3.23

Expand Down Expand Up @@ -463,8 +463,8 @@ Before upgrading to v1.1.0, perform the following steps:

> ⚠️ ApiVersion `v1alpha1` of Tenant and Quota custom resources has been deprecated and is scheduled to be removed in the future. The following links contain the updated structure of both resources
>
> - [Quota v1beta1](./crds-api-reference/quota.md)
> - [Tenant v1beta1](./crds-api-reference/tenant.md)
> - [Quota v1beta1](./kubernetes-resources/quota.md)
> - [Tenant v1beta1](./kubernetes-resources/tenant/tenant-overview.md)
### v0.3.18

Expand Down Expand Up @@ -534,13 +534,13 @@ Before upgrading to v1.1.0, perform the following steps:

### v0.3.2

- refactor: Restructure Quota CR, more details in [relevant docs](./crds-api-reference/quota.md)
- refactor: Restructure Quota CR, more details in [relevant docs](./kubernetes-resources/quota.md)
- feat: Add support for adding LimitRanges in Quota
- feat: Add conversion webhook to convert existing v1alpha1 versions of quota to v1beta1

### v0.3.1

- feat: Add ability to create ArgoCD AppProjects per tenant, more details in [relevant docs](./how-to-guides/enabling-multi-tenancy-argocd.md)
- feat: Add ability to create ArgoCD AppProjects per tenant, more details in [relevant docs](./integrations/argocd.md)

### v0.3.0

Expand All @@ -550,16 +550,16 @@ Before upgrading to v1.1.0, perform the following steps:

### v0.2.33

- refactor: Restructure Tenant spec, more details in [relevant docs](./crds-api-reference/tenant.md)
- refactor: Restructure Tenant spec, more details in [relevant docs](./kubernetes-resources/tenant/tenant-overview.md)
- feat: Add conversion webhook to convert existing v1alpha1 versions of tenant to v1beta1

### v0.2.32

- refactor: Restructure integration config spec, more details in [relevant docs][def]
- feat: Allow users to input custom regex in certain fields inside of integration config, more details in [relevant docs](./crds-api-reference/integration-config.md)
- feat: Allow users to input custom regex in certain fields inside of integration config, more details in [relevant docs](./kubernetes-resources/integration-config.md)

### v0.2.31

- feat: Add limit range for `kube-RBAC-proxy`

[def]: ./crds-api-reference/integration-config.md
[def]: ./kubernetes-resources/integration-config.md
Loading

0 comments on commit 7200712

Please sign in to comment.