Skip to content

Operator's component

Cesar Celis Hernandez edited this page Apr 24, 2023 · 32 revisions

Objective:

To give a general overview of Operator's components.

Diagram:

image

Description:

MinIO Operator orchestrates the tenant(s) by deploying a Operator POD that controls the flow in which a Tenant is deployed and maintained. A React UI is shown via Console POD and it allows end user to interact with the Operator to create, edit or delete a Tenant.

Inside a Tenant, MinIO POD will contain an initContainer and a sidecar container that are used by MinIO to retrieve the MINIO_ARGS for the tenant and to monitor the configurations secret and update it locally as soon as it changes. Additionally this sidecar will validate if root credentials are missing and if so, error out. MinIO Containers will store and retrieve Objects from the PVs via its PVCs.

MinIO Container: What it does?:
It stores and retrieves objects in the mount points provided.
This is considered the main program and it source code comes from: https://github.com/minio/minio/
This container is agnostic of k8s environment and its binary can be executed in bare metal as well.
initContainer: What it does?:
It validates the arguments like `MINIO_ARGS` for Tenant to start.
Once the validation is completed, the container is terminated and exits with code zero.
You can find its implementation at: operator/pkg/validator/validator.go
SideCar container: What it does?:
To monitor the configuration secret and update it locally as soon as it changes.
Additional this sidecar will validate if root credentials are missing and if so, error out.
Its implementation can be found at: operator/pkg/sidecar/sidecar.go