{"id":18291177,"url":"https://github.com/rhecosystemappeng/aizencorp","last_synced_at":"2026-01-21T07:33:08.328Z","repository":{"id":212342123,"uuid":"692159835","full_name":"RHEcosystemAppEng/AizenCorp","owner":"RHEcosystemAppEng","description":null,"archived":false,"fork":false,"pushed_at":"2023-12-12T18:53:30.000Z","size":126,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-09T07:49:32.756Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RHEcosystemAppEng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-09-15T17:37:16.000Z","updated_at":"2023-12-13T17:11:57.000Z","dependencies_parsed_at":"2023-12-13T20:02:35.197Z","dependency_job_id":"9cc772ca-afa4-47b2-9bc3-aa9ded1284ad","html_url":"https://github.com/RHEcosystemAppEng/AizenCorp","commit_stats":null,"previous_names":["rhecosystemappeng/aizencorp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RHEcosystemAppEng/AizenCorp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHEcosystemAppEng%2FAizenCorp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHEcosystemAppEng%2FAizenCorp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHEcosystemAppEng%2FAizenCorp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHEcosystemAppEng%2FAizenCorp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RHEcosystemAppEng","download_url":"https://codeload.github.com/RHEcosystemAppEng/AizenCorp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHEcosystemAppEng%2FAizenCorp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28629915,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T14:13:26.045Z","updated_at":"2026-01-21T07:33:08.305Z","avatar_url":"https://github.com/RHEcosystemAppEng.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# AizenCorp (RAY operator + Spark Operator + ML Flow)\n\nAn End-to-End AI stack that collapses all layers of AI and automatically transforms ​real-time operational data into AI predictions\n\n* Easy: Deploys to on-premise orprivate cloud infrastructure in minutes\n* Automatic: Generates AI models for real-time business data analysis\n* Low Code: Suitable for data analysts and data scientists at any level of AI proficiency\n* Scalable: Easily scales from prototyping to production clusters\n\n## Objective\n\nDeploy AizenCorp on Red Hat OpenShift Data Science platform.\n\n## Deployment\n\n### Pre-requisites\n\n* Kubernetes Cluster\n  \n### Components in K8s cluster\n\n* Ray Operator\n* Container Storage Provider, Storage Class (Persistent Volume)\n* Spark Operator\n  \n### Monitoring \u0026 Alerting\n\n* Prometheus \u0026 Grafana\n  \n### S3 compatible Object store\n\n* Red Hat OpenShift Container Storage\n* AWS S3\n* MinIO\n  \n### MLFlow\n\n## BOM\n\n| Software                                        | Component Version | Description / Function                           | Vendor  | Component Implementer | Number of Instances | Total Storage Requirements in GB | Total RAM in GB | Remarks/Notes |\n|-------------------------------------------------|-------------------|--------------------------------------------------|---------|-----------------------|---------------------|----------------------------------|-----------------|---------------|\n| Openshift Master                                | 4.12+             | Control Plane                                    | Red Hat | Red Hat               | 3 (4 core)          | 120                              | 16              | m6i.xlarge    |\n| Openshift Worker                                | 4.12+             | Data Plane                                       | Red Hat | Red Hat               | 3 (16 core)         | 120                              | 64              | c6i.4xlarge   |\n| Bastion Node                                    | RHEL              |                                                  | Red Hat | Red Hat               |                     |                                  |                 |               |\n| Spark Operator                                  | 3.1.1             | Analytics engine for large-scale data processing | Apache  | Red Hat               |                     |                                  |                 |               |\n| Ray Operator                                    | 2.8.0             | Scaling of AI / ML workloads                     | NA      | Red Hat               |                     |                                  |                 |               |\n| Prometheus                                      | 4.10.0            | Monitoring and Alerting                          | NA      | Red Hat               |                     |                                  |                 |               |\n| Grafana                                         |                   | Visualization / Dashboard                        |         |                       |                     |                                  |                 |               |\n| S3 Compatible Object Store                      |                   |                                                  |         |                       |                     |                                  |                 |               |\n| \u0026nbsp;- AWS S3                              |                   | Data Store - S3 Compatible                       | AWS     | AWS                   |                     |                                  |                 |               |\n| \u0026nbsp;- MinIO                               |                   | Data Store - S3 Compatible                       | Minio   | Minio                 |                     |                                  |                 |               |\n| \u0026nbsp;- Red Hat OpenShift Container Storage | 4.12.9            | Data Store - S3 Compatible                       | Red Hat | Red Hat               | 3 (16 core)         | 120                              | 64              | c6i.4xlarge   |\n| MLFlow                                          |\n\n## Installation\n\n### Ray Cluster\n\nInstructions to deploy [Ray Cluster](https://docs.ray.io/en/latest/cluster/kubernetes/getting-started/raycluster-quick-start.html#kuberay-raycluster-quickstart).\n\n1. Add helm repository\n\n   ```sh\n   helm repo add kuberay https://ray-project.github.io/kuberay-helm/\n   helm repo update\n   ```\n\n2. Create namespace\n\n   ```sh\n   oc new-project ray-odh\n   ```\n\n3. Install kuberay-operator\n\n   ```sh\n   helm install kuberay-operator kuberay/kuberay-operator --version 0.4.0\n   ```\n\n4. Install Ray cluster\n\n   ```sh\n   helm install raycluster kuberay/ray-cluster --version 0.4.0\n   ```\n\n5. Install kuberay-apiserver\n\n   ```sh\n   helm install kuberay-apiserver kuberay/kuberay-apiserver --version 0.4.0\n   ```\n\n### Spark Operator\n\nInstructions to deploy [Spark Operator](https://github.com/opendatahub-io-contrib/spark-on-openshift/).\n\n#### Prerequisites\n\n* OCP cluster with ODF\n\nSteps:\n\n(1 to 5 are the steps for the history server deployment. 6 onwards is spark operator deployment)\n\n1. Clone Git repository\n\n   ```sh\n   git clone git@github.com:opendatahub-io-contrib/spark-on-openshift.git\n   cd spark-on-openshift\n   ```\n\n2. Deploy Spark History Server\n\n   To avoid losing this precious information, you can (and you should!) send all the logs to a specific location and set up the Spark History Server to be able to view and interpret them at any time.\n\n   Follow the [instructions](https://github.com/opendatahub-io-contrib/spark-on-openshift#spark-history-server) to deploy Spark History Server.\n\n   You can use OpenShift Data Foundation in which case you will have to do the following steps before creating the ObjectBucketClaim.\n\n   a. [Prepare](https://access.redhat.com/documentation/en-us/red_hat_openshift_data_foundation/4.9/html/deploying_openshift_data_foundation_using_ibm_z_infrastructure/preparing_to_deploy_openshift_data_foundation) to deploy OpenShift Data Foundation.\n   b. [Deploying](https://access.redhat.com/documentation/en-us/red_hat_openshift_data_foundation/4.9/html/deploying_and_managing_openshift_data_foundation_using_red_hat_openstack_platform/deploying_openshift_data_foundation_on_red_hat_openstack_platform_in_internal_mode) OpenShift Data Foundation on Red Hat OpenStack Platform in internal mode\n\n3. Deploy Spark Operator\n\n   Follow the [instructions](https://github.com/opendatahub-io-contrib/spark-on-openshift/tree/main#working-with-the-spark-operator) to install the standalone spark operator.\n\n### Prometheus Server\n\nInstructions to deploy Prometheus Server\n\n#### Install Prometheus Operator\n\n1. Select the project from the Project list where you want to install the Prometheus operator.\n2. In the left panel, go to Operators \u003e OperatorHub.\n3. To find the Prometheus operator, enter the search term “prometheus”, and click Prometheus Operator provided by Red Hat.\n4. On the Prometheus Operator page click Install. The Create Operator Subscription page is shown. Complete the following steps to create the Prometheus operator subscription:\n\n   a. Select the installation mode by clicking A specific namespace on the cluster, and choose the project where you want to install the Prometheus operator.\n\n   b. If the Prometheus operator is available through various channels, choose the appropriate channel that you want to subscribe to.\n\n   c. Click stable to deploy from the stable channel. Select the Approval Strategy as Manual.\n\n   d. Click Subscribe. The Prometheus operator details are shown on the Installed Operator page. The status is shown as “UpgradePending”.\n\n   e. Click the Prometheus operator from the Name column, and click 1 requires approval link.\n\n   f. Click Preview Install Plan. The details about the manual installation plan are shown.\n\n   g. Click Approve.\n\n#### Creating Prometheus instance\n\n1. Log in to the OpenShift Container Platform (OCP) by using the OpenShift administrator credentials.\n2. In the left panel, go to Operators \u003e Installed Operators.\n3. Select the project from the Project list, where you installed Prometheus operator.\n4. Click the Prometheus Operator link from the Name column.\n5. Click the Prometheus tab, and click Create Prometheus.\n6. On the Create Prometheus page, use one of the following options to edit the custom resource to create a Prometheus instance:\n   * YAML View: You are provided with full control of object creation.\n   * Form View: You can enter the details in a form.\n  \n7. Enter the following details in the YAML file:\n   * name: Enter the name of the Prometheus instance. Refer to the example, wherein the Prometheus instance name is entered as app-monitor.\n   * namespace: Enter the name of the project or the namespace where you installed Prometheus operator. Refer to the example, wherein the namespace is entered as prometheus.\n   * As shown in the example, enter the following details in the Custom Resource (CR). Enter the key that is mentioned is in the service monitors that points to RQA services. Refer to the example, wherein the Key is mentioned as aizen-app.\n  \n      ```\n      serviceMonitorSelector:\n         matchExpressions:\n            - key: aizen-app\n            operator: Exists\n      ```\n\n      Example:\n\n      ```\n      apiVersion: monitoring.coreos.com/v1\n      kind: Prometheus\n      metadata:\n         name: app-monitor\n      labels:\n         prometheus: k8s\n      namespace: prometheus\n      spec:\n      replicas: 1\n      serviceAccountName: prometheus-k8s\n      securityContext: {}\n      serviceMonitorSelector:\n         matchExpressions:\n            - key: aizen-app\n            operator: Exists\n      ruleSelector: {}\n      alerting:\n         alertmanagers:\n            - namespace: openshift-monitoring\n            name: alertmanager-main\n            port: web\n      ```\n\n8. Click Create.\n9. Adding a cluster role to the user.\n\n   Provide the view cluster role to the Service Account that is created by the Prometheus operator.\n   Run the following command:\n\n   ```\n   oc adm policy add-cluster-role-to-user view system:serviceaccount:\u003cproject name\u003e:prometheus-k8s\n   ```\n\n### Grafana\n\nInstall the Grafana operator in the same project or the namespace where you installed the Prometheus operator.\n\n#### Install Grafana Operator\n\n1. Log in to the OpenShift Container Platform (OCP) by using the OpenShift administrator credentials.\n2. Select the project from the Project list where you installed the Prometheus operator.\n3. In the left panel, go to Operators \u003e OperatorHub.\n4. To find the Grafana operator, enter the search term “grafana”, and click Grafana Operator provided by Red Hat, which is a community operator.\n5. On the Grafana Operator page click Install. The Create Operator Subscription page is shown. Complete the following steps to create the Grafana operator subscription:\n   * Select the installation mode by clicking A specific namespace on the cluster, and choose your project where you want to install the Grafana operator.\n   * If the Grafana operator is available through various channels, choose the appropriate channel that you want to subscribe to. Click stable to deploy from the stable channel.\n   * Select the Approval Strategy as Manual.\n   * Click Subscribe. The Grafana operator details are shown on the Installed Operator page. The status is shown as “UpgradePending”.\n   * Click the Grafana operator from the Name column, and click 1 requires approval link.\n   * Click Preview Install Plan. The details about the manual installation plan are shown.\n   * Click Approve.\n\n#### Create Grafana Instance\n\n1. In the left panel, go to Operators \u003e Installed Operators. Select the project where you installed Grafana operator.\n2. Click the Grafana Operator link from the Name column.\n3. Click the Grafana tab, and click Create Grafana.\n4. On the Create Grafana page, use one of the following options to edit the custom resource to create a Grafana instance:\n   * YAML View: You are provided with full control of object creation.\n   * Form View: You can enter the details in a form.\n5. Enter the following details in the YAML file:\n   * name: Enter the name of the Grafana instance. Refer to the example, wherein the Grafana instance name is entered as example-grafana.\n   * namespace: Enter the name of the project or the namespace where you installed Grafana operator. Refer to the example, wherein the Grafana namespace name is entered as prometheus.\n   * admin_user: Enter the username. Refer to the example, wherein the username is provided as root.\n   * admin_password: Enter the password. Refer to the example, wherein the username is provided as secret\n  \n   Example:\n\n   ```\n   apiVersion: integreatly.org/v1alpha1\n   kind: Grafana\n   metadata:\n   name: example-grafana\n   namespace: prometheus\n   spec:\n   ingress:\n      enabled: true\n   config:\n      auth:\n         disable_signout_menu: true\n      auth.anonymous:\n         enabled: true\n      log:\n         level: warn\n         mode: console\n      security:\n         admin_password: secret\n         admin_user: root\n   dashboardLabelSelector:\n      - matchExpressions:\n         - key: app\n            operator: In\n            values:\n               - grafana\n   ```\n\n6. Click Create.\n\n#### Create Grafana route\n\nRun the following command:\n\n```\noc expose svc/grafana-route -n \u003cproject name\u003e\n```\n\n#### Create Grafana DataSource\n\n1. Log in to the OpenShift Container Platform (OCP) by using the OpenShift administrator credentials.\n2. In the left panel, go to Operators \u003e Installed Operators. Select the project where you installed Grafana operator.\n3. Click the Grafana Operator link from the Name column, and click the Grafana Data Source tab.\n4. Click Create GrafanaDataSource.\n5. Enter the following details in the YAML file:\n   * name: Enter the name of the Grafana Data Source. Refer to the example, wherein the Grafana Data Source name is entered as example-grafanadatasource.\n   * namespace: Enter the name of the project or the namespace where you installed Grafana operator. Refer to the example, wherein the Grafana namespace name is entered as prometheud.\n   * url: Enter the Prometheus service URL.\n  \n   Example:\n\n   ```\n   apiVersion: integreatly.org/v1alpha1\n   kind: GrafanaDataSource\n   metadata:\n   name: example-grafanadatasource\n   namespace: prometheus\n   spec:\n   datasources:\n      - access: proxy\n         editable: true\n         isDefault: true\n         jsonData:\n         timeInterval: 5s\n         name: Prometheus\n         type: prometheus\n         url: \u003cPrometheus service URL\u003e\n         version: 1\n   name: example-datasources.yaml\n   ```\n\n### MinIO\n\nMinIO is an object storage solution that provides an Amazon Web Services S3-compatible API and supports all core S3 features. MinIO is built to deploy anywhere - public or private cloud, baremetal infrastructure, orchestrated environments, and edge infrastructure.\n\nFollow the [instructions](https://min.io/docs/minio/kubernetes/openshift/operations/installation.html) to Deploy MinIO\n\n### MLFlow Server\n\nMLflow is an open source platform to manage the ML lifecycle, including experimentation, reproducibility, deployment, and a central model registry.\n\nHelm installation into OpenShift namespace\n\n#### Pre-requisites\n\n* Install the \"Crunchy Postgres for Kubernetes\" operator (can be found in OperatorHub) - To store the MLFlow config\n* Install the \"OpenShift Data Foundation\" operator (can be found in OperatorHub) - To provide S3 storage for the experiments and models.\n  As an alternative use Amazon S3 or MinIO.\n\n#### Install\n\n```\n\u003cCreate an OpenShift project, either through the OpenShift UI or 'oc new-project project-name'\u003e\nhelm repo add strangiato https://strangiato.github.io/helm-charts/\nhelm repo update\n\u003cLog in to the correct OpenShift project through 'oc project project-name'\u003e\nhelm upgrade -i mlflow-server strangiato/mlflow-server\n```\n\n#### Additional Options\n\nThe MLFlow Server helm chart provides a number of customizable options when deploying MLFlow. These options can be configured using the --set flag with helm install or helm upgrade to set options directly on the command line or through a values.yaml file using the --values flag.\n\nFor a full list of configurable options, see the helm chart [documentation](https://github.com/strangiato/helm-charts/tree/main/charts/mlflow-server#values)\n\nOPENDATAHUB DASHBOARD APPLICATION TILE\nAs discussed in the Dashboard Configuration, ODH/RHODS allows administrators to add a custom application tile for additional components on the cluster.\n\nThe MLFlow Server helm chart supports creation of the Dashboard Application tile as a configurable value. If MLFlow Server is installed in the same namespace as ODH/RHODS you can install the dashboard tile run the following command:\n\n```\nhelm upgrade -i mlflow-server strangiato/mlflow-server \\\n    --set odhApplication.enabled=true\n```\n\nThe MLFlow Server helm chart also supports installing the odhApplication object in a different namespace, if MLFlow Server is not installed in the same namespace as ODH/RHODS:\n\n```\nhelm upgrade -i mlflow-server strangiato/mlflow-server \\\n    --set odhApplication.enabled=true \\\n    --set odhApplication.namespaceOverride=redhat-ods-applications\nAfter enabling the odhApplication component, wait 1-2 minutes and the tile should appear in the Explorer view of the dashboard.\n```\n\nNote: This feature requires ODH v1.4.1 or newer\n\n#### Test MLFlow\n\n1. Go to the OpenShift Console and switch to Developer view.\n2. Go to the Topology view and make sure that you are on the MLFlow project.\n3. Check that the MLFlow circle is dark blue (this means it has finished deploying).\n4. Press the \"External URL\" link in the top right corner of the MLFlow circle to open up the MLFlow UI.\n5. Run helm test mlflow-server in your command prompt to test MLFlow. If successful, you should see a new experiment called \"helm-test\" show up in the MLFlow UI with 3 experiments inside it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhecosystemappeng%2Faizencorp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhecosystemappeng%2Faizencorp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhecosystemappeng%2Faizencorp/lists"}