मुख्य विषयवस्तु में जाएं

Production Deployment Guide

This comprehensive guide provides detailed instructions for deploying Ilum in production environments with enhanced security, namespace separation, and multiple configuration options to meet diverse operational requirements.

विषय-सूची

विहंगावलोकन

For production environments, it's strongly recommended to deploy critical dependencies in separate namespaces to achieve:

  • Enhanced Security: Namespace-level isolation and RBAC policies
  • संसाधन प्रबंधन: Independent resource quotas and limits
  • Operational Excellence: Simplified maintenance and upgrades
  • Compliance: Meeting organizational separation requirements
  • अनुमापकता: Independent scaling of components

Critical Components for Namespace Separation

The following components should be deployed in separate namespaces for production:

  • पोस्टग्रेएसक्यूएल: Primary metadata store for इलम कोर and shared dependency for Marquez, Hive Metastore, Airflow, Superset, MLflow, and others
  • मोंगोडीबी: Legacy metadata store, still supported for existing deployments
  • अपाचे काफ्का: Message broker and communication layer (required for इलम कोर HA)
  • मिनियो: Object storage for Spark applications and data

कुबेरनेट्स पूर्वापेक्षाएँ

Ilum has been extensively tested across all leading Kubernetes environments, ensuring compatibility with a variety of deployment scenarios:

Supported Platforms

  • Lightweight Distributions: k3s, Rancher, MicroK8s
  • Bare-metal Clusters: Self-managed Kubernetes installations
  • Managed Services:
    • Google कुबेरनेट्स इंजन (GKE)
    • अमेज़न लोचदार कुबेरनेट्स सेवा (EKS)
    • Azure Kubernetes Service (AKS)
    • DigitalOcean Kubernetes
    • Red Hat OpenShift

Minimum Suggested Requirements

ComponentRequirement
Kubernetes Version1.20+
CPU8 cores minimum, 16+ recommended
याद16GB minimum, 32GB+ recommended

Air-gapped (Offline) Environments

For air-gapped installations, refer to our comprehensive Air-gapped Installation Guide.

Testing vs Production

मिनिक्यूब is used throughout our documentation for demonstration purposes but is not suitable for production due to limitations in scalability, resource management, and high availability.

स्‍थापत्‍यशैली

Components and modules

The Ilum platform consists of three core services and a curated set of optional modules:

  • इलम कोर: Main backend service. Hosts the public REST API, job and cluster orchestration, multi-engine SQL execution, security, and lineage capture.
  • इलम यूआई: React-based web frontend. Hosts the SQL Editor, Table Explorer, Lineage view, Workloads management, and the Modules registry.
  • ilum-api: Module-management microservice. Drives Helm-based install, upgrade, and disable of optional Ilum modules at runtime via cluster-scoped RBAC. Future releases will extend ilum-api के साथ Model Context Protocol (MCP) capabilities and open APIs for third-party extension.

Optional modules include execution engines (Trino, Apache Flink), additional catalogs (Project Nessie, Unity Catalog, DuckLake), notebooks (JupyterHub, Zeppelin), orchestration (Airflow, Kestra, Mage, n8n, NiFi), BI tools (Superset, Streamlit), AI and ML stacks (MLflow, LangFuse), and observability components (Kube Prometheus stack, Loki, Promtail).

पोस्टग्रेएसक्यूएल

PostgreSQL is the primary metadata store के लिए इलम कोर (accessed via R2DBC with jOOQ-generated SQL DSL). It is also used by shared dependencies including Marquez, Hive Metastore, Airflow, Superset, MLflow, Hydra, Gitea, n8n, and Kestra to store their respective metadata.

PostgreSQL is सक्षम डिफ़ॉल्ट रूप से इलम में।

If you want to control whether PostgreSQL is enabled or not, you can use the helm value पोस्टग्रेएसक्यूएल.सक्षम. For example, to disable it, you can add --set postgresql.enabled=false आपके इंस्टॉलेशन कमांड के लिए।

मोंगोडीबी

MongoDB is supported as a legacy metadata store के लिए इलम कोर. New deployments should use PostgreSQL; existing MongoDB-backed deployments remain fully supported. Ilum ships migration tooling (M001 through M009 scripts) for moving from MongoDB to PostgreSQL.

Ilum automatically creates all necessary databases and collections during the startup process when MongoDB is in use.

अपाचे काफ्का

अपाचे काफ्का इलम की संचार परत के रूप में कार्य करता है, जो इलम-कोर और स्पार्क नौकरियों के साथ-साथ बातचीत की सुविधा प्रदान करता है स्केल किए जाने पर विभिन्न इलम-कोर उदाहरणों के बीच। यह सुनिश्चित करना महत्वपूर्ण है कि अपाचे काफ्का दलाल दोनों द्वारा सुलभ हैं इलम-कोर और स्पार्क नौकरियां, खासकर जब स्पार्क नौकरियां एक अलग कुबेरनेट्स क्लस्टर पर लॉन्च की जाती हैं।

इलम काफ्का का उपयोग कई विषयों का उपयोग करके संचार करने के लिए करता है, जो सभी इलम के स्टार्टअप के दौरान बनाए गए थे। इसलिए, उपयोगकर्ता इन विषयों को मैन्युअल रूप से प्रबंधित करने की आवश्यकता नहीं है।

मिनियो

Ilum स्पार्क एप्लिकेशन घटकों के लिए स्टोरेज लेयर के रूप में MinIO का उपयोग करता है। सभी फाइलें (जार, कॉन्फ़िगरेशन, डेटा सहित स्पार्क घटकों (ड्राइवर, निष्पादकों) के संचालन के लिए आवश्यक फाइलें) संग्रहीत की जाती हैं और डाउनलोड के लिए उपलब्ध कराई जाती हैं मिनिओ।

MinIO S3 इंटरफ़ेस लागू करता है, जो इसे इनपुट/आउटपुट डेटा स्टोर करने में भी सक्षम बनाता है।

इलम-लिवी-प्रॉक्सी

Ilum-Livy प्रॉक्सी Livy API का हमारा कार्यान्वयन है, जो Jupyter, Zeppelin, Airflow जैसी सेवाओं में Ilum Groups के साथ स्पार्क कोड को एकीकृत करता है

इलम लिवी-प्रॉक्सी सक्षम है डिफ़ॉल्ट रूप से इलम में।

यदि आप इलम-लिवी-प्रॉक्सी जोड़ना या हटाना चाहते हैं, तो आप इसका उपयोग कर सकते हैं ilum-livy-proxy.enabled इसे प्रबंधित करने के लिए हेल्म मूल्य। उदाहरण के लिए: --सेट ilum-livy-proxy.enabled=false इसे अक्षम करने के लिए।

इलम-लिवी-प्रॉक्सी के बारे मे अधिक पढ़ें यहाँ

बृहस्पति

ज्यूपिटर एक नोटबुक है - परिष्कृत विकास वातावरण जो आपको एक निष्पादन योग्य दस्तावेज़ में कोड, चार्ट, स्पष्टीकरण और बहुत कुछ रखने की अनुमति देता है।

बृहस्पति सक्षम है डिफ़ॉल्ट रूप से इलम में।

हालाँकि, यदि आप यह नियंत्रित करना चाहते हैं कि यह सक्षम है या नहीं, तो आप हेल्म वैल्यू का उपयोग कर सकते हैं इलम-जुपिटर.सक्षम. उदाहरण के लिए, आप जोड़ सकते हैं --सेट ilum-jupyter.enabled=false इसे अक्षम करने के लिए अपने इंस्टॉलेशन कमांड पर।

ध्यान रखें, कि ज्यूपिटर का उपयोग करता है इलम-लिवी-प्रॉक्सी इलम समूहों के साथ एकीकृत करने के लिए। इसलिए, आपको इसे भी सक्षम करना चाहिए: --सेट ilum-livy-proxy.enabled=true

यदि आप ज्यूपिटर यूआई का उपयोग करना चाहते हैं, तो आप इसे इसके द्वारा कर सकते हैं:

  • Ilum UI का उपयोग करना: Modules > Jupyter पर जाएं
  • एक प्रवेश को कॉन्फ़िगर करना
  • पोर्ट-फ़ॉरवर्ड कमांड का उपयोग करना Kubectl पोर्ट-फॉरवर्ड SVC/ILUM-ज्यूपिटर 8888:8888

ज्यूपिटर के बारे मे अधिक पढ़ें यहाँ

अपाचे टसेपेल्लिन

Zeppelin एक नोटबुक है - परिष्कृत विकास वातावरण जो आपको एक निष्पादन योग्य दस्तावेज़ में कोड, चार्ट, स्पष्टीकरण और बहुत कुछ रखने की अनुमति देता है।

कृपया ध्यान रखें, कि Zeppelin नोटबुक डिफ़ॉल्ट रूप से ilum पैकेज में बंडल नहीं है। यदि आप इस सेवा को चलाना चाहते हैं, तो जोड़ें --सेट ilum-zeppelin.enabled=true आपके इंस्टॉलेशन कमांड के लिए।

ध्यान रखें, कि टसेपेल्लिन का उपयोग करता है इलम-लिवी-प्रॉक्सी इलम समूहों के साथ एकीकृत करने के लिए। इसलिए, आपको इसे भी सक्षम करना चाहिए: --सेट ilum-livy-proxy.enabled=true

यदि आप Zeppelin UI का उपयोग करना चाहते हैं, तो इसे करने का सबसे अच्छा तरीका एक प्रवेश को कॉन्फ़िगर करना या पोर्ट-फ़ॉरवर्ड कमांड का उपयोग करना है Kubectl पोर्ट-फॉरवर्ड SVC/Ilum-Zeppelin 8080:8080

Zeppelin के बारे मे अधिक पढ़ें यहाँ

हाइव मेटास्टोर

Hive Metastore is a metadata storage used to store your Spark catalogs (Spark tables, databases, views, and more) in a database instead of runtime memory. You can view these schemas later on the टेबल एक्सप्लोरर पृष्ठ।

सूचना-विषयक

हाइव मेटास्टोर डिफ़ॉल्ट रूप से इलम में सक्षम नहीं है।

To enable the Hive Metastore bundled instance, set the following values in your Helm installation command:

इलम कोर:
मेटास्टोर:
सक्षम: सच्चा
प्रकार: छत्ता

ilum-hive-metastore:
सक्षम: सच्चा
नोट

Hive Metastore uses PostgreSQL डेटाबेस to store metadata. You can read about Postgres in Ilum नीचे.

प्रोजेक्ट नेस्सी

Nessie is a transactional catalog for your data. It was inspired by Git and is designed to support a wide range of data-lake tooling. It works best with अपाचे आइसबर्ग tables.

To learn more about Nessie, visit the Nessie documentation page.

सूचना-विषयक

Project Nessie is not enabled in Ilum by default. To enable it, set the following values in your Helm installation command:

इलम कोर:
मेटास्टोर:
सक्षम: सच्चा
प्रकार: नेस्सी

नेस्सी:
सक्षम: सच्चा

Ilum SQL (Kyuubi Gateway)

नोट

Ilum SQL डिफ़ॉल्ट रूप से Ilum में सक्षम नहीं है।

Ilum SQL is the multi-engine SQL gateway built on Apache Kyuubi. It exposes a single JDBC and REST entry point for queries that route to अपाचे स्पार्क, त्रिगुण, डकडीबीनहीं तो Apache Flink based on the engine selected for each query, or chosen by the automatic engine router.

To enable Ilum SQL, add --सेट ilum-sql.enabled=true SQL निष्पादन होस्ट को सक्षम करने के लिए और --set ilum-core.sql.enabled=true to enable the SQL features inside Ilum itself.

Read more about the SQL Editor on the SQL Editor page.

त्रिगुण

नोट: Trino is not enabled in Ilum by default. To enable it, add --सेट trino.enabled=true to deploy a built-in Trino distribution.

Trino is a distributed SQL query engine well suited to interactive analytics on medium-to-large datasets and for federated queries across multiple data sources. It complements Spark for workloads that benefit from low-latency response times.

Once enabled, Trino is reachable through the Ilum SQL gateway and selectable from the Engine Selector in the SQL Editor. Read more on the SQL Editor page.

DuckDB and DuckLake

डकडीबी is enabled by default and provides single-node SQL execution for small-to-medium data, ad-hoc exploration, and DuckLake-managed tables. It runs in-process with इलम कोर and is selectable from the Engine Selector in the SQL Editor.

DuckLake is the DuckDB-native catalog, enabled by default, with table data stored in MinIO (or any configured S3-compatible backend). No additional Helm values are required to use DuckDB or DuckLake.

Apache Flink support is available for उद्यमिता deployments as a Beta feature. Flink is exposed through the Kyuubi SQL gateway for low-latency stream processing. Contact Ilum for enablement details.

एन8एन

नोट: n8n डिफ़ॉल्ट रूप से Ilum में सक्षम नहीं है। इसे सक्षम करने के लिए, जोड़ें --सेट ilum-n8n.enabled=true अंतर्निहित N8N वितरण को सक्षम करने के लिए।

n8n देशी AI क्षमताओं के साथ एक फेयर-कोड वर्कफ़्लो ऑटोमेशन प्लेटफॉर्म है।

इसके बारे में अधिक पढ़ें n8n पेज.

अपाचे एयरफ्लो

Apache Airflow is a powerful platform for orchestrating and managing data workflows. To read more about Airflow in Ilum, visit the Airflow documentation page.

नोट

Airflow is not enabled in the Ilum package by default. To deploy Airflow, add --सेट airflow.enabled=true आपके इंस्टॉलेशन कमांड के लिए।

Once enabled, Airflow will appear in the Ilum UI under the मॉड्यूल section.

अपाचे लिवी

Airflow can leverage Ilum’s Livy proxy to easily create jobs within Ilum. For more details, see the Livy proxy section above.

मार्केज़

Marquez is an open-source metadata management tool that focuses on capturing, aggregating, and visualizing the lineage of data assets within an organization’s data ecosystem. It tracks how datasets are produced and consumed by different jobs and provides a central view of these dependencies.

कृपया ध्यान रखें कि मार्केज़ डिफ़ॉल्ट रूप से इलम पैकेज में बंडल नहीं है। यदि आप इस सेवा को चलाना चाहते हैं, आगे कहना --set global.lineage.enabled=true आपके इंस्टॉलेशन कमांड के लिए।

ध्यान रखें कि मार्केज़ का उपयोग करता है PostgreSQL डेटाबेस मेटाडेटा संग्रहीत करने के लिए। आप इसके बारे में पढ़ सकते हैं नीचे.

Additionally, if you wish to use Marquez’s web client instead of Ilum’s UI, enable the default web client with --सेट ilum-marquez.web.enabled=true और एक्सेस विधियों में से एक सेट करें:

  • पोर्ट-फ़ॉरवर्ड कमांड का उपयोग करें Kubectl पोर्ट-फॉरवर्ड SVC/Ilum-Marquez-Web 9444:9444
  • एक प्रवेश कॉन्फ़िगर करें

मार्केज़ और इलम वंश के बारे में और पढ़ें यहाँ

OpenMetadata

OpenMetadata is an open-source data catalog and governance platform. In Ilum it serves as the catalog of record: tables, schemas, column-level lineage, classification tags, glossary terms, domains, and data products are all populated through OpenLineage events and ingestion pipelines. It complements Marquez, which remains a lightweight lineage-event debugging surface.

OpenMetadata is opt-in and disabled by default. A plain installation brings up zero OpenMetadata resources. Enabling the full catalog stack requires four flags:

helm install इलम इलम / \
--अस्त हो openmetadata.enabled=सच्चा \
--अस्त हो openmetadata-dependencies.enabled=सच्चा \
--अस्त हो openmetadataBootstrap.enabled=सच्चा \
--अस्त हो ilum-core.job.openLineage.openmetadata.enabled=सच्चा

openmetadata.enabled deploys the OpenMetadata server (a small Ilum fork of the 1.12.5 image that fixes OpenLineage auto-create reliability). openmetadata-dependencies.enabled brings up its backing OpenSearch और पोस्टग्रेएसक्यूएल. openmetadataBootstrap.enabled runs the post-install Job that registers the Hive, Delta Lake, MinIO, Superset, and OpenLineage services and seeds governance metadata. ilum-core.job.openLineage.openmetadata.enabled adds the Spark-to-OpenMetadata OpenLineage transport leg so engine lineage reaches the catalog.

Take into account that OpenMetadata makes use of a PostgreSQL डेटाबेस and an OpenSearch index; both are provisioned by openmetadata-dependencies. When cookie-based UI auth is enabled, access to the embedded OpenMetadata view is gated by the access_openmetadata Nginx map.

Read more about OpenMetadata in Ilum यहाँ.

केस्ट्रा

केस्ट्रा एक है खुला स्त्रोत डेटा ऑर्केस्ट्रेशन प्लेटफॉर्म को ऑर्केस्ट्रेट और स्वचालित करने के लिए डिज़ाइन किया गया है पाइपलाइन और व्यापार वर्कफ़्लोज़। आप इसके बारे में पढ़ सकते हैं यहाँ.

सूचना-विषयक

केस्ट्रा डिफ़ॉल्ट रूप से इलम में सक्षम नहीं है। इसे सक्षम करने के लिए, जोड़ें --set kestra.enabled=true आपके इंस्टॉलेशन कमांड के लिए।

नोट

केस्ट्रा का उपयोग करता है PostgreSQL डेटाबेस नौकरियों और कार्यों के बारे में डेटा संग्रहीत करने के लिए और न्यूनतम for general file storage.

Mage

Mage is an open-source data engineering platform that simplifies the process of building, deploying, and maintaining data pipelines. It provides a user-friendly interface for creating data workflows, integrating with various data sources, and managing data transformations.

To read about Mage next to Ilum, visit the दस्तावेज़ीकरण पृष्ठ.

सूचना-विषयक

Mage is not enabled in Ilum by default. To enable it, add --set mageai.enabled=true आपके इंस्टॉलेशन कमांड के लिए।

नोट

Ilum deploys Mage OSS, which is the open-source version of Mage, and does not include the commercial features available in Mage Pro (Cloud).

NiFi

अपाचे निफाई is a software project for building data processing pipelines. It provides a user interface for creating, managing, and deploying data processing pipelines.

To read about NiFi next to Ilum, visit the दस्तावेज़ीकरण पृष्ठ.

सूचना-विषयक

NiFi is not enabled in Ilum by default. To enable it, add --set nifi.enabled=true आपके इंस्टॉलेशन कमांड के लिए।

Streamlit

Streamlit is a library for creating beautiful, performant, and scalable data apps in Python. It is used to build custom data apps accessible from the Ilum UI.

To read about Streamlit next to Ilum, visit the दस्तावेज़ीकरण पृष्ठ.

सूचना-विषयक

Streamlit is not enabled in Ilum by default. To enable it, add --set streamlit.enabled=true आपके इंस्टॉलेशन कमांड के लिए।

Additionally, can provide a docker image with your streamlit application running in it. To see how to do it, visit our दस्तावेज़ीकरण पृष्ठ.

क्यूब प्रोमेथियस स्टैक

क्यूब प्रोमेथियस स्टैक में आपके डेटा इन्फ्रास्ट्रक्चर की निगरानी के लिए प्रोमेथियस, ग्राफाना और अन्य उपकरण शामिल हैं

कृपया ध्यान रखें, कि क्यूब प्रोमेथियस स्टैक डिफ़ॉल्ट रूप से इलम पैकेज में बंडल नहीं किया गया है। यदि आप इस सेवा को चलाना चाहते हैं, तो जोड़ें --set kube-prometheus-stack.enabled=true आपके इंस्टॉलेशन कमांड के लिए।

यदि आप किसी मौजूदा Ilum Helm चार्ट को अपग्रेड कर रहे हैं जो पहले किया था नहीं क्यूब प्रोमेथियस स्टैक सक्षम किया गया है, आप पहले आवश्यक प्रोमेथियस कस्टम संसाधन परिभाषा (CRDs) नवीनीकरण के साथ आगे बढ़ने से पहले स्थापित करना होगा। ऐसा करने के लिए, निम्न आदेश चलाएँ:

kubectl apply --server-side -स्‍त्री-विषयक https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.80.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml
kubectl apply --server-side -स्‍त्री-विषयक https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.80.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml
kubectl apply --server-side -स्‍त्री-विषयक https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.80.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml
kubectl apply --server-side -स्‍त्री-विषयक https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.80.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml
kubectl apply --server-side -स्‍त्री-विषयक https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.80.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusagents.yaml
kubectl apply --server-side -स्‍त्री-विषयक https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.80.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml
kubectl apply --server-side -स्‍त्री-विषयक https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.80.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml
kubectl apply --server-side -स्‍त्री-विषयक https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.80.0/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml
kubectl apply --server-side -स्‍त्री-विषयक https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.80.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml
kubectl apply --server-side -स्‍त्री-विषयक https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.80.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml

यदि आप प्रोमेथियस यूआई का उपयोग करना चाहते हैं, तो इसे करने का सबसे अच्छा तरीका एक प्रवेश को कॉन्फ़िगर करना या पोर्ट-फॉरवर्ड कमांड का उपयोग करना है Kubectl पोर्ट-फॉरवर्ड SVC/प्रोमेथियस-संचालित 9090:9090

यदि आप Grafana UI का उपयोग करना चाहते हैं, तो इसे करने का सबसे अच्छा तरीका एक प्रवेश को कॉन्फ़िगर करना या पोर्ट-फ़ॉरवर्ड कमांड का उपयोग करना है Kubectl पोर्ट-फॉरवर्ड SVC/Ilum-Grafana 8080:80

लोकी और प्रोमटेल

लोकी का उपयोग आपके डेटा इन्फ्रास्ट्रक्चर के लॉग को इकट्ठा करने और प्रबंधित करने के लिए किया जाता है। प्रोमटेल का उपयोग एक एजेंट के रूप में किया जाता है जो लॉग को लोकी में धकेलता है

कृपया ध्यान रखें, कि लोकी सक्षम नहीं है डिफ़ॉल्ट रूप से इलम में। यदि आप इस सेवा को चलाना चाहते हैं, तो जोड़ें --set global.logAggregation.loki.enabled=true आपके इंस्टॉलेशन कमांड के लिए।

प्रोमटेल भी सक्षम नहीं है डिफ़ॉल्ट रूप से इलम में। इसे सक्षम करने के लिए जोड़ें --set global.logAggreagtion.promtail.enabled=true अपने स्थापना आदेश के लिए

यदि आप लोकी तक पहुंचना चाहते हैं और लोकी क्वेरी चलाना चाहते हैं, तो आप एक प्रवेश को कॉन्फ़िगर कर सकते हैं या पोर्ट-फॉरवर्ड कमांड का उपयोग कर सकते हैं Kubectl पोर्ट-फॉरवर्ड SVC/ILUM-लोकी-रीड 3100:3100 पढ़ने के प्रश्नों के लिए और Kubectl पोर्ट-फॉरवर्ड SVC/ilum-loki-write 3100:3100 प्रश्नों को लिखने के लिए। आप भी उपयोग कर सकते हैं सेवा इलम-लोकी-गेटवे Grafana को लोकी से जोड़ने के लिए

Production Architecture Overview

Recommendations on which optionally deployed components to place in which namespace, whether in the one belonging to the Ilum release or in separate, dedicated ones.

┌─────────────────────────┐     ┌────────────────────────────┐
│ ILUM │ │ Dependencies │
│ components │ │ separated │
│ namespace │ │ namespaces │
├─────────────────────────┤ ├────────────────────────────┤
│ • Ilum Core ** │ │ • PostgreSQL ** │
│ • Ilum UI ** │ │ • MongoDB (legacy) │
│ • Ilum API ** │ │ • Kafka ** │
│ • Ilum Livy-Proxy * │ │ • MinIO * │
│ • Ilum Jupyter * │ │ • Kube-Prometheus-Stack * │
│ • Ilum Zeppelin │ │ • Loki & Promtail * │
│ • Ilum Hive Metastore * │ └────────────────────────────┘
│ • Ilum Kyuubi * │
│ • Trino │
│ • Marquez * │
│ • Unity Catalog │
│ • Nessie │
│ • Airflow │
│ • MLflow │
│ • LangFuse │
│ • Superset │
│ • Streamlit │
│ • Gitea * │
│ • N8N │
│ • Kestra │
│ • Mage │
│ • OpenLDAP │
└─────────────────────────┘
** Mandatory components for production release
* Recommended components for production release

Network Communication

  • Inter-namespace Communication: Configured via Kubernetes Services and NetworkPolicies
  • Service Discovery: DNS-based service resolution
  • प्रतिभूति: TLS encryption for all inter-service communication

High Availability Configuration

For production deployments, critical services should run with multiple replicas to eliminate single points of failure. The following table shows recommended configurations:

ComponentMinimum ReplicasRecommendedHelm ValueNotes
इलम कोर23ilum-core.replicaCount: 3Stateless; requires Kafka communication mode for HA
ilum-api22ilum-api.replicaCount: 2Stateless module-management microservice; cluster-scoped RBAC
पोस्टग्रेएसक्यूएल23postgresql.replicaCount: 3Primary metadata store; primary + standby with streaming replication
MongoDB (legacy)33mongodb.replicaCount: 3Only for legacy deployments; replica set with automatic failover
अपाचे काफ्का33kafka.replicaCount: 3Required for HA communication; minimum 3 for quorum
मिनियो44minio.replicas: 4Erasure coding requires minimum 4 nodes
हाइव मेटास्टोर22ilum-hive-metastore.replicaCount: 2Stateless; connects to shared PostgreSQL backend
Kyuubi (ilum-sql)22ilum-sql.replicaCount: 2SQL gateway; stateless

Example Helm values for a fully HA deployment:

इलम कोर:
प्रतिकृति गणना: 3

mongodb:
प्रतिकृति गणना: 3

काफ्का:
प्रतिकृति गणना: 3

मीनो:
प्रतिकृतियों: 4

postgresql:
प्रतिकृति गणना: 3
चेतावनी

High Availability for ilum-core requires अपाचे काफ्का as the communication type. The default gRPC communication does not support HA. Set ilum-core.communication.type: kafka to enable HA mode.

Failure Domains & Resilience

Ilum's architecture is designed to eliminate single points of failure through several mechanisms:

Stateless Core Design

वही इलम कोर component is fully stateless. It persists no local data and can recover its entire state from PostgreSQL (or MongoDB on legacy deployments) and Kafka after a crash or restart. This means any इलम कोर replica can handle any request, enabling seamless horizontal scaling and zero-downtime rolling updates.

वही ilum-api module-management microservice is also stateless. It can be scaled horizontally and tolerates pod restarts without losing in-flight Helm operations, thanks to a long termination grace period.

Pod Anti-Affinity

Configure Kubernetes pod anti-affinity rules to ensure replicas of critical services are spread across different nodes and availability zones:

इलम कोर:
सादृश्‍य:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- अत्‍यंत महत्वपूर्ण: ऐप
संचालक: में
मान:
- इलम-अंतर्भाग
topologyKey: kubernetes.io/hostname

Namespace-Level Isolation

Deploying dependencies (MongoDB, Kafka, MinIO, PostgreSQL) in separate namespaces provides blast radius containment. A failure in one component's namespace does not cascade to others. See Namespace Separation Strategy for details.

Leader Election

For components that require coordination (such as the Spark History Server or scheduled maintenance tasks), Kubernetes-native leader election ensures that exactly one instance acts as the primary while others stand by for automatic failover.

Dynamic Resource Scaling

Ilum supports multiple layers of dynamic scaling to match compute resources with workload demands.

Spark Dynamic Allocation

Enable Spark's built-in dynamic allocation to automatically adjust the number of executors based on workload:

# Cluster-level Spark defaults in ilum
spark.dynamicAllocation.enabled: "सच"
spark.dynamicAllocation.minExecutors: "1"
spark.dynamicAllocation.maxExecutors: "20"
spark.dynamicAllocation.executorIdleTimeout: "60s"
spark.dynamicAllocation.schedulerBacklogTimeout: "5s"

With dynamic allocation, idle executors are released back to the cluster, freeing resources for other jobs. New executors are added automatically when tasks queue up.

Kubernetes Horizontal Pod Autoscaler (HPA)

For always-on services like Trino coordinators or ilum-core, use Kubernetes HPA to scale based on CPU or memory utilization:

apiVersion: autoscaling/v2
प्रकार: HorizontalPodAutoscaler
मेटाडेटा:
नाम: इलम-अंतर्भाग-hpa
कल्पना:
scaleTargetRef:
apiVersion: ऐप्स/v1
प्रकार: परिनियोजन
नाम: इलम-अंतर्भाग
minReplicas: 2
maxReplicas: 5
मैट्रिक्स:
- प्रकार: संसाधन
resource:
नाम: cpu
लक्ष्य:
प्रकार: Utilization
averageUtilization: 70

Cluster Autoscaler Integration

Ilum works seamlessly with Kubernetes cluster autoscalers (available on GKE, EKS, AKS, and via Cluster API). When Spark jobs request more executor pods than the current cluster can accommodate, the cluster autoscaler provisions additional nodes automatically. When pods are released, nodes are drained and removed.

नोक

Combine Spark dynamic allocation with cluster autoscaling for full elasticity: Spark scales executors based on workload, and the cluster scales nodes based on pending pods.

Auto-Pause on Idle

Ilum's interactive services (SQL Editor sessions, Jupyter notebooks) can be configured to automatically pause after a period of inactivity, releasing compute resources:

इलम कोर:
एसक्यूएल:
duckdb:
idleTimeout: 1h
job:
retain:
hours: 24

Namespace Separation Strategy

# Core Ilum Components placed in ilum namespace
इलम: # Main application services (ilum-core, ilum-ui, ilum-api)

# Critical Dependencies (Separate Namespaces)
ilum-postgresql: # PostgreSQL databases (primary metadata store)
ilum-mongodb: # MongoDB cluster (legacy metadata store)
ilum-kafka: # Kafka brokers (required for ilum-core HA)
ilum-minio: # Object storage cluster
ilum-kps: # Kube-prometheus-stack monitoring resources
ilum-logs: # Loki & Promtail log aggregation resources

Namespace Creation

Create all required namespaces before deployment:

⚠️ Warning: Create namespaces only for components you plan to deploy

# Ilum namespace
Kubectl Create Namespace ilum

# Dependency namespaces
kubectl create namespace ilum-mongodb
kubectl create namespace ilum-kafka
kubectl create namespace ilum-minio
kubectl create namespace ilum-postgresql
kubectl create namespace ilum-kps
kubectl create namespace ilum-logs

सुरक्षा कुंजियाँ

यह एप्लिकेशन प्रमाणीकरण उद्देश्यों के लिए JSON वेब टोकन (JWT) का उपयोग करता है। डिफ़ॉल्ट रूप से, अनुप्रयोग एक RSA कुंजी नियोजित करता है जोड़ी, जो इन टोकन पर हस्ताक्षर करने के लिए रनटाइम पर बेतरतीब ढंग से उत्पन्न होती है।

अपने मानक कॉन्फ़िगरेशन में, एप्लिकेशन हर बार शुरू होने पर एक ताजा आरएसए कुंजी जोड़ी बनाता है। यह दृष्टिकोण कुंजी पीढ़ी प्रक्रिया को स्वचालित रूप से संभालकर स्थानीय विकास और परीक्षण को सरल बनाता है। हालाँकि, यह होना चाहिए इस बात पर जोर दिया कि यह दृष्टिकोण उत्पादन वातावरण के लिए उपयुक्त नहीं है।

उत्पादन वातावरण में बेतरतीब ढंग से उत्पन्न कुंजियों का उपयोग करने के साथ प्राथमिक मुद्दा दृढ़ता की कमी है। हर बार एप्लिकेशन पुनरारंभ होता है, यह एक नया आरएसए कुंजी जोड़ी उत्पन्न करता है, जो पहले जारी किए गए सभी टोकन को अमान्य करता है। इससे हो सकता है सभी उपयोगकर्ताओं के लिए अचानक और अप्रत्याशित लॉगआउट, उपयोगकर्ता अनुभव को बाधित करता है और संभावित रूप से डेटा हानि की ओर ले जाता है।

निजी कुंजी उत्पन्न करें

उत्पादन वातावरण के लिए, एक स्थिर और सुरक्षित कुंजी जोड़ी को मैन्युअल रूप से उत्पन्न किया जाना चाहिए और लगातार उपयोग किया जाना चाहिए। यहन यह सुनिश्चित करता है कि टोकन कई एप्लिकेशन पुनरारंभ होने पर मान्य रहें, इस प्रकार एक सुसंगत उपयोगकर्ता अनुभव प्रदान करें।

आप OpenSSL जैसे टूल का उपयोग करके मैन्युअल रूप से RSA कुंजी जोड़ी उत्पन्न कर सकते हैं। 2048-बिट आरएसए निजी कुंजी उत्पन्न करने के लिए एक सामान्य आदेश निम्नानुसार है:

openssl genpkey -algorithm RSA \
-pkeyopt rsa_keygen_bits:2048 \
-पीकेओपीटी rsa_keygen_pubexp:65537 | \
ओपनएसएसएल PKCS8 -topk8 -nocrypt -outform pem > private-key.p8

निजी कुंजी की सामग्री निम्न की तरह दिखनी चाहिए:

-----निजी कुंजी शुरू करें-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCsRnE83rm6BJya
nTyzVqX0SG+D4zBjkyWsOmGG+CoDdgQ6Z8AaocmnjP1SbRykQsQSMf6SeW+fdpH+
ccmzuHe7pZIa2o2Mg8xbk/UszJDaPztwoQbUt/2gHi/rZP8cIVkquzhnN/yxrMls
...
-----अंत निजी कुंजी-----

सेटिंग के रूप में निजी कुंजी का उपयोग करने के लिए ilum-core.security.jwt.privateKey, कुंजी से शीर्ष लेख और पाद लेख निकालें।

सार्वजनिक कुंजी जनरेट करें

संबंधित सार्वजनिक कुंजी उत्पन्न करने के लिए, उपयोग करें:

ओपनएसएसएल pkey -pubout -inform pem -outform pem -in private-key.p8 -out public-key.spki

सार्वजनिक कुंजी की सामग्री निम्न की तरह दिखनी चाहिए:

-----सार्वजनिक कुंजी शुरू करें-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArEZxPN65ugScmp08s1al
9Ehvg+MwY5MlrDphhvgqA3YEOmfAGqHJp4z9Um0cpELEEjH+knlvn3aR/nHJs7h3
u6WSGtqNjIPMW5P1LMyQ2j87cKEG1Lf9oB4v62T/HCFZKrs4Zzf8sazJbMN3E/mJ
...
----- सार्वजनिक कुंजी समाप्त करें-----

सेटिंग के रूप में सार्वजनिक कुंजी का उपयोग करने के लिए ilum-core.security.jwt.publicKey, कुंजी से शीर्ष लेख और पाद लेख निकालें।

Authentication Methods

पहचान प्रदाता के रूप में इलम

इलम को एक पहचान प्रदाता के रूप में तैनात किया जा सकता है। इस सुविधा के साथ, आप उपयोगकर्ताओं को विशेष रूप से इलम के भीतर प्रबंधित कर सकते हैं और उन्हें अन्य माइक्रोसर्विसेज जैसे एयरफ्लो, सुपरसेट, ग्राफना, गिटिया और मिनियो में प्रमाणित कर सकते हैं।

इलम के पहचान प्रदाता को सक्षम करने के लिए, निम्न ध्वज जोड़ें: --सेट global.security.hydra.enabled=true और --set global.security.hydra.uiUrl=.

पहचान प्रदाता कॉन्फ़िगरेशन के बारे में अधिक जानने के लिए, पर जाएँ यह पृष्ठ

OpenLDAP

OpenLDAP is the open-source LDAP server. It is not enabled in Ilum by default. To enable it add --set openldap.enabled=true to your installation command.

If you want to access OpenLDAP you can use port-forward command kubectl port-forward svc/ilum-openldap 1389:389.

Ilum-Core is preconfigured to connect to OpenLDAP server deployed by Ilum. However you must switch security type to LDAP by adding --set ilum-core.security.type=ldap आपके इंस्टॉलेशन कमांड के लिए।

To learn more about OpenLDAP and LDAP in Ilum, visit the LDAP documentation page यहाँ.

Dependency Deployment

नोट: The components described below are required or recommended dependencies for Ilum. You can choose to deploy them using the provided instructions or integrate with your own existing managed services.

मोंगोडीबी

Deploy MongoDB in a dedicated namespace with high availability

1. Add Bitnami Repository

helm repo आगे कहना bitnami https://charts.bitnami.com/bitnami
हेल्म रेपो अपडेट

2. Create MongoDB Values File

# mongodb-values.yaml
प्रतिबिंब:
registry: docker.io
कोष: ilum/mongodb
टैग: 6.0.5
fullnameOverride: "ilum-mongodb"
architecture: "replicaset"
प्रमाणन:
सक्षम: गलत
volumePermissions:
सक्षम: सच्चा

3. Deploy MongoDB, Ilum by default uses chart in ^13.x version but should also work with newer versions

helm install mongodb bitnami/mongodb \
--namespace ilum-mongodb \
--version 13.18.5 \
--values mongodb-values.yaml

For more information about mongo deployment refer to mongodb chart details

4. Ilum AIO chart configuration values that need to be changed

# Disable bundled mongo
mongodb:
सक्षम: गलत

इलम कोर:
mongo:
उरी: "mongodb://ilum-mongodb-0.ilum-mongodb-headless.ilum-mongodb:27017,ilum-mongodb-1.ilum-mongodb-headless.ilum-mongodb:27017/ilum?replicaSet=rs0"
# or use your mongo instance uri

अपाचे काफ्का

Deploy Kafka cluster in a dedicated namespace

1. Add Bitnami Repository

helm repo आगे कहना bitnami https://charts.bitnami.com/bitnami
हेल्म रेपो अपडेट

2. Create Kafka Values File

# kafka-values.yaml
extraConfig: |
auto.create.topics.enable=false
message.max.bytes=20000000
fullnameOverride: "ilum-kafka"
listeners:
ग्राहक:
प्रोटोकॉल: PLAINTEXT

3. Deploy Kafka, Ilum by default uses chart in ^25.x version but should also work with newer versions

helm install kafka bitnami/kafka \
--namespace ilum-kafka \
--version 25.3.5 \
--values kafka-values.yaml

For more information about kafka deployment refer to kafka chart details

4. Ilum AIO chart configuration values that need to be changed

इलम कोर:
communication:
प्रकार: काफ्का
काफ्का:
address: "ilum-kafka-controller-0.ilum-kafka-controller-headless.ilum-kafka:9092,ilum-kafka-controller-1.ilum-kafka-controller-headless.ilum-kafka:9092,ilum-kafka-controller-2.ilum-kafka-controller-headless.ilum-kafka:9092"
# or use your kafka instance address

MinIO Deployment

Deploy MinIO cluster for object storage:

1. Add Bitnami Repository

helm repo आगे कहना bitnami https://charts.bitnami.com/bitnami
हेल्म रेपो अपडेट

2. Create MinIO Values File

# minio-values.yaml
extraEnvVars: |
- name: MINIO_BROWSER_REDIRECT_URL
value: "http://ilum-minio.ilum-minio:9001/external/minio/"
# Environment variables for hydra
- नाम: MINIO_IDENTITY_OPENID_CONFIG_URL
मूल्य: "ILUM_UI_PROTOCOL://ILUM_UI_DOMAIN/external/hydra/.well-known/openid-configuration"
- नाम: MINIO_IDENTITY_OPENID_CLIENT_ID
मूल्य: "HYDRA_CLIENT_ID"
- नाम: MINIO_IDENTITY_OPENID_CLIENT_SECRET
मूल्य: "HYDRA_CLIENT_SECRET"
- नाम: MINIO_IDENTITY_OPENID_REDIRECT_URI
मूल्य: "ILUM_UI_PROTOCOL://ILUM_UI_DOMAIN/external/minio/oauth_callback"
- नाम: MINIO_IDENTITY_OPENID_SCOPES
मूल्य: "openid,profile,email"
- नाम: MINIO_IDENTITY_OPENID_CLAIM_NAME
मूल्य: "minio_policies"
# end of hydra related environment variables
fullnameOverride: "ilum-minio"
defaultBuckets: "ilum-files, ilum-data, ilum-tables, ilum-mlflow, ilum-kestra"
प्रमाणन:
rootUser: ""
rootPassword: ""
persistence:
आकार वाला: 16Gi

3. Deploy MinIO, Ilum by default uses chart in ^15.x version but should also work with newer versions

helm install minio bitnami/minio \
--namespace ilum-minio \
--version 15.0.7 \
--values minio-values.yaml

For more information about minio deployment refer to minio chart details

4. Ilum AIO chart configuration values that need to be changed

# Disable bundled minio
मीनो:
सक्षम: गलत

इलम कोर:
मीनो:
statusProbe:
baseUrl: "http://ilum-minio.ilum-minio:9000"
kubernetes:
storage:
प्रकार: एस 3
एस 3:
मेज़बान: "ilum-minio.ilum-minio"
बंदरगाह: 9000
accessKey: ""
secretKey: ""

# If hive metastore is deployed with minio as the storage
ilum-hive-metastore:
storage:
मेटास्टोर:
warehouse: "s3a://ilum-data/"
प्रकार: "एस 3"
एस 3:
मेज़बान: "ilum-minio.ilum-minio"
बंदरगाह: 9000
accessKey: ""
secretKey: ""

# If trino is deployed with minio as the storage
ट्रिनो:
कैटलॉग:
इलम-डेल्टा: |
कनेक्टर नाम = delta_lake
delta.metastore.store-table-metadata=true
delta.register-table-procedure.enabled=true
hive.metastore.uri=thrift://ilum-hive-metastore:9083
fs.native-s3.enabled=true
s3.endpoint=http://ilum-minio.ilum-minio:9000
s3.region=us-east-1
s3.path-style-access=true
s3.aws-access-key=
s3.aws-secret-key=

# If Loki is deployed with s3 as the storage
loki:
loki:
auth_enabled: गलत
storage:
bucketNames:
chunks: इलम-फ़ाइलें
ruler: इलम-फ़ाइलें
शासन: इलम-फ़ाइलें
प्रकार: एस 3
एस 3:
समापन बिंदु: एचटीटीपी://ilum-minio.ilum-मीनो:9000
region: us-पूर्व-1
secretAccessKey: < आपका-एस 3-रहस्य-अत्‍यंत महत्वपूर्ण>
accessKeyId: < आपका-एस 3-प्रवेश-अत्‍यंत महत्वपूर्ण>
s3ForcePathStyle: सच्चा
insecure: सच्चा

# If minio is deployed
minioExtensions:
मेज़बान: एचटीटीपी://ilum-minio.ilum-मीनो:9000

# If airflow is deployed with minio as the logs storage
airflow:
extraEnv: |
- name: AIRFLOW__API__AUTH_BACKENDS
value: "airflow.api.auth.backend.default"
- name: MINIO_USERNAME
value: ""
- name: MINIO_PASSWORD
value: ""
- name: MINIO_ENDPOINT
value: "http://ilum-minio.ilum-minio:9000"

# If mlflow is deployed
एमएलफ्लो:
externalS3:
मेज़बान: "ilum-minio.ilum-minio"

# If kestra is deployed with minio as the storage
kestra:
configuration:
kestra:
storage:
प्रकार: मीनो
मीनो:
समापन बिंदु: इलम-minio.ilum-मीनो
बंदरगाह: 9000
secure: गलत
accessKey: < आपका-एस 3-प्रवेश-अत्‍यंत महत्वपूर्ण>
secretKey: < आपका-एस 3-रहस्य-अत्‍यंत महत्वपूर्ण>
region: "डिफ़ॉल्ट"
bucket: इलम-kestra

PostgreSQL Deployment

Deploy PostgreSQL for metadata storage:

1. Add Bitnami Repository

helm repo आगे कहना bitnami https://charts.bitnami.com/bitnami
हेल्म रेपो अपडेट

2. Create PostgreSQL Values File

# postgresql-values.yaml
fullnameOverride: इलम-postgresql
प्रमाणन:
postgresPassword: "चेंजमीप्लीज"
उपयोगकर्ता नाम: इलम
पासवर्ड: "चेंजमीप्लीज"

3. Deploy PostgreSQL, Ilum by default uses chart in ^13.x version but should also work with newer versions

helm install postgresql bitnami/postgresql \
--namespace ilum-postgresql \
--version 13.4.4 \
--values postgresql-values.yaml

For more information about postgresql deployment refer to postgresql chart details

4. Ilum AIO chart configuration values that need to be changed

# Disable bundled PostgreSQL
postgresql:
सक्षम: गलत

#Postgres extensions for databases auto-creation
postgresExtensions:
मेज़बान: "ilum-postgresql-hl.ilum-postgresql"
बंदरगाह: 5432
databasesToCreate: marquez,airflow,मेटास्टोर,एमएलफ्लो,mlflow_auth,superset,गीता,एन8एन,हाइड्रा,kestra
प्रमाणन:
उपयोगकर्ता नाम: इलम
पासवर्ड: "चेंजमीप्लीज"

# Configure hydra database if hydra is enabled in ilum-core deployment
इलम कोर:
हाइड्रा:
dns: पोस्टग्रेज़://ilum:CHANGEMEPLEASE@ilum-postgresql.ilum-postgresql:5432/hydra?sslmode=disable

# If ilum-hive-metastore is deployed
ilum-hive-metastore:
postgresql:
मेज़बान: "ilum-postgresql-hl.ilum-postgresql"
बंदरगाह: 5432
database: मेटास्टोर
प्रमाणन:
उपयोगकर्ता नाम: इलम
पासवर्ड: "चेंजमीप्लीज"

# If lineage is enabled
ilum-marquez:
marquez:
db:
प्रतिबिंब: "बिटनामी/पोस्टग्रेएसक्यूएल:16"
मेज़बान: "ilum-postgresql-0.ilum-postgresql-hl.ilum-postgresql"
बंदरगाह: 5432
नाम: marquez
उपभोक्ता: इलम
पासवर्ड: "चेंजमीप्लीज"

# If gitea is deployed
गीता:
initPreScript: "while ! nc -z ilum-postgresql-hl.ilum-postgresql 5432 2>/dev/null; do echo 'Waiting for Postgres...'; sleep 5; done; echo 'Postgres is ready!'"
गीता:
कॉन्फिग:
सर्वर:
ROOT_URL: एचटीटीपी://gitea.example.com/external/gitea
database:
DB_TYPE: पोस्टग्रेज़
HOST: "ilum-postgresql-hl.ilum-postgresql:5432"
NAME: गीता
उपभोक्ता: इलम
PASSWD: "चेंजमीप्लीज"

# If airflow is deployed with postgres as metadata connection
airflow:
डाटा:
metadataConnection:
उपभोक्ता: पोस्टग्रेज़
सफल होना: "चेंजमीप्लीज"
प्रोटोकॉल: postgresql
मेज़बान: "ilum-postgresql-hl.ilum-postgresql"
बंदरगाह: 5432
db: airflow
sslmode: disable

# If superset is deployed with postgres as the storage
superset:
supersetNode:
connections:
db_host: "ilum-postgresql-hl.ilum-postgresql"
db_port: "5432"
db_user: इलम
db_pass: "चेंजमीप्लीज"
db_name: superset

# If mlflow is deployed with postgres as the external database
एमएलफ्लो:
externalDatabase:
dialectDriver: "postgresql"
मेज़बान: "ilum-postgresql-hl.ilum-postgresql"
बंदरगाह: 5432
उपभोक्ता: इलम
database: एमएलफ्लो
authDatabase: mlflow_auth
existingSecret: "ilum-postgresql"
existingSecretPasswordKey: "postgres-password"

# If n8n is deployed
एन8एन:
db:
प्रकार: postgresdb
externalPostgresql:
मेज़बान: "ilum-postgresql-hl.ilum-postgresql"
उपयोगकर्ता नाम: "ilum"
पासवर्ड: "चेंजमीप्लीज"
database: "n8n"

# If kestra is deployed
kestra:
configuration:
datasources:
पोस्टग्रेज़:
यूआरएल: "jdbc:postgresql://ilum-postgresql-hl.ilum-postgresql:5432/kestra"
driverClassName: "org.postgresql.Driver"
उपयोगकर्ता नाम: इलम
पासवर्ड: "चेंजमीप्लीज"
initContainers:
- नाम: wait-के लिए-पोस्टग्रेज़
प्रतिबिंब: "बिटनामी/पोस्टग्रेएसक्यूएल:16"
command:
- /bin/bash
आर्ग्स:
- -ec
- |
until pg_isready -h ilum-postgresql-hl.ilum-postgresql -p 5432 -U ilum -d kestra; do
echo "Waiting for PostgreSQL server to be ready..."
sleep 2
समाज-सम्मत
echo "Database is ready!"

Kube-Prometheus-Stack Deployment (If you plan to use it)

Deploy Kube-Prometheus-Stack for monitoring purposes:

1. Add Prometheus Community Repository

helm repo आगे कहना prometheus-community https://prometheus-community.github.io/helm-charts
हेल्म रेपो अपडेट

2. Create Kube-Prometheus-Stack Values File

# kps-values.yaml
नामओवरराइड करें: "ilum-kps"
kubeStateMetrics:
सक्षम: गलत
nodeExporter:
सक्षम: गलत
alertmanager:
सक्षम: गलत
ग्राफाना:
नामओवरराइड करें: "ilum-grafana"
grafana.ini:
सर्वर:
root_url: "%(protocol)s://%(domain)s:%(http_port)s/external/grafana"
serve_from_sub_path: "सच"
auth.generic_oauth:
सक्षम: गलत
नाम: इलम
allow_sign_up: सच्चा
login_attribute_path: userId
email_attribute_name: ईमेल
role_attribute_path: इसमें शामिल हैं(grafana_roles, 'व्यवस्थापक') && 'एडमिन' || इसमें शामिल हैं(grafana_roles, 'संपादक') && 'संपादक' || इसमें शामिल हैं(grafana_roles, 'Viewer') && 'दर्शक'
role_attribute_strict: सच्चा
adminPassword: शासन
sidecar:
dashboards:
folderAnnotation: "grafana_folder"
प्रदाता:
foldersFromFilesStructure: "सच"

3. Deploy kube-prometheus-stack, Ilum by default uses chart in ^54.x version but should also work with newer versions

helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack \
--namespace ilum-kps \
--version 54.2.2 \
--values kps-values.yaml

For more information about kube-prometheus-stack deployment refer to kps chart details

4. Define prometheus PodMonitors and ServiceMonitors

You can define your own Pod and ServiceMonitors for prometheus. Example PodMonitors defined in Ilum AIO chart you can use

Ilum Pods Monitor

apiVersion: monitoring.coreos.com/v1
प्रकार: PodMonitor
मेटाडेटा:
नाम: इलम-pods-monitor
Namespace: इलम-kps
लेबल:
ilum.prometheus: "सच"
कल्पना:
चयनकर्ता:
मैचलेबल्स:
ilum.prometheus: "सच"
podMetricsEndpoints:
- interval: 5s
बंदरगाह: एचटीटीपी
पथ: /actuator/prometheus
namespaceSelector:
matchNames:
- इलम

Spark Driver Pods Monitor

apiVersion: monitoring.coreos.com/v1
प्रकार: PodMonitor
मेटाडेटा:
नाम: इलम-चालक-pods-monitor
Namespace: इलम-kps
लेबल:
ilum.resourceType: चालक
कल्पना:
चयनकर्ता:
मैचलेबल्स:
ilum.resourceType: चालक
podMetricsEndpoints:
- interval: 5s
बंदरगाह: उत्तेजक गुण-यूआई
पथ: /metrics/executors/prometheus/
- interval: 5s
बंदरगाह: उत्तेजक गुण-यूआई
पथ: /metrics/prometheus/
namespaceSelector:
any: सच्चा

Loki & Promtail Deployment (If you plan to use it)

Deploy Loki & Promtail for logs aggregation:

1. Add Grafana Repository

helm repo आगे कहना grafana https://grafana.github.io/helm-charts
हेल्म रेपो अपडेट

2. Create Loki and Promtail Values File

# loki-values.yaml
नामओवरराइड करें: इलम-loki
निगरानी:
selfMonitoring:
सक्षम: गलत
grafanaAgent:
installOperator: गलत
lokiCanary:
सक्षम: गलत
test:
सक्षम: गलत
loki:
auth_enabled: गलत
storage:
bucketNames:
chunks: इलम-फ़ाइलें
ruler: इलम-फ़ाइलें
शासन: इलम-फ़ाइलें
प्रकार: एस 3
एस 3:
समापन बिंदु: एचटीटीपी://ilum-minio.ilum-मीनो:9000
region: us-पूर्व-1
secretAccessKey: < आपका-एस 3-रहस्य-अत्‍यंत महत्वपूर्ण>
accessKeyId: < आपका-एस 3-प्रवेश-अत्‍यंत महत्वपूर्ण>
s3ForcePathStyle: सच्चा
insecure: सच्चा
compactor:
retention_enabled: सच्चा
deletion_mode: छानना-और-मिटाना
shared_store: एस 3
limits_config:
allow_deletes: सच्चा
# promtail-values.yaml
कॉन्फिग:
clients:
- यूआरएल: एचटीटीपी://ilum-loki-लिखना:3100/loki/api/v1/push
snippets:
pipelineStages:
- match:
चयनकर्ता: '{ilum_logAggregation!="true"}'
action: औषधि
drop_counter_reason: non_ilum_log
extraRelabelConfigs:
- action: लेबलमैप
regex: "__meta_kubernetes_pod_label_ilum(.*)"
replacement: "ilum${1}"
- action: लेबलमैप
regex: "__meta_kubernetes_pod_label_spark(.*)"
replacement: "spark${1}"

scrapeConfigs: |
- job_name: kubernetes-pods
pipeline_stages:
{{- toYaml .Values.config.snippets.pipelineStages | nindent 4 }}
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- ilum
relabel_configs:
- source_labels:
- __meta_kubernetes_pod_controller_name
regex: ([0-9a-z-.]+?)(-[0-9a-f]{8,10})?
action: replace
target_label: __tmp_controller_name
- source_labels:
- __meta_kubernetes_pod_label_app_kubernetes_io_name
- __meta_kubernetes_pod_label_app
- __tmp_controller_name
- __meta_kubernetes_pod_name
regex: ^;*([^;]+)(;.*)?$
action: replace
target_label: app
- source_labels:
- __meta_kubernetes_pod_label_app_kubernetes_io_instance
- __meta_kubernetes_pod_label_instance
regex: ^;*([^;]+)(;.*)?$
action: replace
target_label: instance
- source_labels:
- __meta_kubernetes_pod_label_app_kubernetes_io_component
- __meta_kubernetes_pod_label_component
regex: ^;*([^;]+)(;.*)?$
action: replace
target_label: component
{{- if .Values.config.snippets.addScrapeJobLabel }}
- replacement: kubernetes-pods
target_label: scrape_job
{{- end }}
{{- toYaml .Values.config.snippets.common | nindent 4 }}
{{- with .Values.config.snippets.extraRelabelConfigs }}
{{- toYaml . | nindent 4 }}
{{- end }}

3. Deploy Loki, Ilum by default uses chart in 3.5.0 version but should also work with newer versions

helm install loki grafana/loki \
--namespace ilum-logs \
--version 3.5.0 \
--values loki-values.yaml

For more information about loki deployment refer to loki chart details

4. Deploy Promtail, Ilum by default uses chart in ^6.15.x version but should also work with newer versions

helm install promtail grafana/promtail \
--namespace ilum-logs \
--version 6.15.5 \
--values promtail-values.yaml

For more information about promtail deployment refer to promtail chart details

5. Ilum AIO chart configuration values that need to be changed

व्‍यापक:
logAggregation:
सक्षम: सच्चा
loki:
सक्षम: गलत
यूआरएल: एचटीटीपी://ilum-loki-gateway.ilum-logs
promtail:
सक्षम: गलत

Pre-configured Stack Examples

नोट: In those examples security configuration has been ignored, so those deployments stick to Ilum internal security mechanism, if you want to know how to use other security methods refer to एलडीएपी नहीं तो OAUTH2

Option 1: Minimal Production Stack

Suitable for deployments with basic requirements. Extra enabled modules:

  • इलम-एसक्यूएल
  • ilum-hive-metastore
  • ilum-marquez (lineage)

Minimal needed values file taking into account the components deployment described above. For more detailed configuration you can examine dedicated charts, for example इलम कोर

# minimal-production-values.yaml
व्‍यापक:
lineage:
सक्षम: सच्चा

इलम कोर:
प्रतिभूति:
jwt:
privateKey: Key generated as described in Security-keys section
publicKey: Key generated as described in Security-keys section
एसक्यूएल:
सक्षम: सच्चा
मेटास्टोर:
सक्षम: सच्चा
प्रकार: छत्ता
mongo:
उरी: "mongodb://ilum-mongodb-0.ilum-mongodb-headless.ilum-mongodb:27017,ilum-mongodb-1.ilum-mongodb-headless.ilum-mongodb:27017/ilum?replicaSet=rs0"
communication:
प्रकार: काफ्का
काफ्का:
address: "ilum-kafka-controller-0.ilum-kafka-controller-headless.ilum-kafka:9092,ilum-kafka-controller-1.ilum-kafka-controller-headless.ilum-kafka:9092,ilum-kafka-controller-2.ilum-kafka-controller-headless.ilum-kafka:9092"
मीनो:
statusProbe:
baseUrl: "http://ilum-minio.ilum-minio:9000"
kubernetes:
storage:
प्रकार: एस 3
एस 3:
मेज़बान: "ilum-minio.ilum-minio"
बंदरगाह: 9000
accessKey: ""
secretKey: ""

गीता:
initPreScript: "while ! nc -z ilum-postgresql-hl.ilum-postgresql 5432 2>/dev/null; do echo 'Waiting for Postgres...'; sleep 5; done; echo 'Postgres is ready!'"
गीता:
कॉन्फिग:
सर्वर:
ROOT_URL: एचटीटीपी://gitea.example.com/external/gitea
database:
DB_TYPE: पोस्टग्रेज़
HOST: "ilum-postgresql-hl.ilum-postgresql:5432"
NAME: गीता
उपभोक्ता: इलम
PASSWD: "चेंजमीप्लीज"

ilum-marquez:
marquez:
db:
मेज़बान: "ilum-postgresql-0.ilum-postgresql-hl.ilum-postgresql"

# Disable bundled dependencies
mongodb:
सक्षम: गलत
काफ्का:
सक्षम: गलत
मीनो:
सक्षम: गलत
postgresql:
सक्षम: गलत

# Above-default modules
इलम-एसक्यूएल:
सक्षम: सच्चा

ilum-hive-metastore:
सक्षम: सच्चा
storage:
मेटास्टोर:
warehouse: "s3a://ilum-data/"
प्रकार: "एस 3"
एस 3:
मेज़बान: "ilum-minio.ilum-minio"
बंदरगाह: 9000
accessKey: ""
secretKey: ""
postgresql:
मेज़बान: "ilum-postgresql-hl.ilum-postgresql"
बंदरगाह: 5432
database: मेटास्टोर
प्रमाणन:
उपयोगकर्ता नाम: इलम
पासवर्ड: "चेंजमीप्लीज"

# Ilum add-ons
postgresExtensions:
मेज़बान: "ilum-postgresql-hl.ilum-postgresql"
बंदरगाह: 5432
databasesToCreate: marquez,airflow,मेटास्टोर,एमएलफ्लो,mlflow_auth,superset,गीता,एन8एन,हाइड्रा,kestra
प्रमाणन:
उपयोगकर्ता नाम: इलम
पासवर्ड: "चेंजमीप्लीज"

minioExtensions:
मेज़बान: एचटीटीपी://ilum-minio.ilum-मीनो:9000

Option 2: Enterprise Production Stack

Comprehensive setup with monitoring, logging aggregation, and more optional modules. Extra enabled modules:

  • इलम-एसक्यूएल
  • ilum-hive-metastore
  • ilum-marquez (lineage)
  • superset
  • एमएलफ्लो
  • क्यूब-प्रोमेथियस-स्टैक
  • Loki & Promtail (log aggregation)

Minimal needed values file taking into account the components deployment described above. For more detailed configuration you can examine dedicated charts, for example इलम कोर

# enterprise-production-values.yaml
व्‍यापक:
lineage:
सक्षम: सच्चा
logAggregation:
सक्षम: सच्चा
loki:
सक्षम: गलत
यूआरएल: एचटीटीपी://ilum-loki-gateway.ilum-logs
promtail:
सक्षम: गलत

इलम कोर:
प्रतिभूति:
jwt:
privateKey: Key generated as described in Security-keys section
publicKey: Key generated as described in Security-keys section
एसक्यूएल:
सक्षम: सच्चा
मेटास्टोर:
सक्षम: सच्चा
प्रकार: छत्ता
mongo:
उरी: "mongodb://ilum-mongodb-0.ilum-mongodb-headless.ilum-mongodb:27017,ilum-mongodb-1.ilum-mongodb-headless.ilum-mongodb:27017/ilum?replicaSet=rs0"
communication:
प्रकार: काफ्का
काफ्का:
address: "ilum-kafka-controller-0.ilum-kafka-controller-headless.ilum-kafka:9092,ilum-kafka-controller-1.ilum-kafka-controller-headless.ilum-kafka:9092,ilum-kafka-controller-2.ilum-kafka-controller-headless.ilum-kafka:9092"
मीनो:
statusProbe:
baseUrl: "http://ilum-minio.ilum-minio:9000"
kubernetes:
storage:
प्रकार: एस 3
एस 3:
मेज़बान: "ilum-minio.ilum-minio"
बंदरगाह: 9000
accessKey: ""
secretKey: ""

गीता:
initPreScript: "while ! nc -z ilum-postgresql-hl.ilum-postgresql 5432 2>/dev/null; do echo 'Waiting for Postgres...'; sleep 5; done; echo 'Postgres is ready!'"
गीता:
कॉन्फिग:
सर्वर:
ROOT_URL: एचटीटीपी://gitea.example.com/external/gitea
database:
DB_TYPE: पोस्टग्रेज़
HOST: "ilum-postgresql-hl.ilum-postgresql:5432"
NAME: गीता
उपभोक्ता: इलम
PASSWD: "चेंजमीप्लीज"

ilum-marquez:
marquez:
db:
मेज़बान: "ilum-postgresql-0.ilum-postgresql-hl.ilum-postgresql"

# Disable bundled dependencies
mongodb:
सक्षम: गलत
काफ्का:
सक्षम: गलत
मीनो:
सक्षम: गलत
postgresql:
सक्षम: गलत

# Above-default modules
इलम-एसक्यूएल:
सक्षम: सच्चा

ilum-hive-metastore:
सक्षम: सच्चा
storage:
मेटास्टोर:
warehouse: "s3a://ilum-data/"
प्रकार: "एस 3"
एस 3:
मेज़बान: "ilum-minio.ilum-minio"
बंदरगाह: 9000
accessKey: ""
secretKey: ""
postgresql:
मेज़बान: "ilum-postgresql-hl.ilum-postgresql"
बंदरगाह: 5432
database: मेटास्टोर
प्रमाणन:
उपयोगकर्ता नाम: इलम
पासवर्ड: "चेंजमीप्लीज"

# Ilum add-ons
postgresExtensions:
मेज़बान: "ilum-postgresql-hl.ilum-postgresql"
बंदरगाह: 5432
databasesToCreate: marquez,मेटास्टोर,एमएलफ्लो,mlflow_auth,superset,गीता
प्रमाणन:
उपयोगकर्ता नाम: इलम
पासवर्ड: "चेंजमीप्लीज"

minioExtensions:
मेज़बान: एचटीटीपी://ilum-minio.ilum-मीनो:9000

superset:
सक्षम: सच्चा
supersetNode:
connections:
db_host: "ilum-postgresql-hl.ilum-postgresql"
db_port: "5432"
db_user: इलम
db_pass: "चेंजमीप्लीज"
db_name: superset

एमएलफ्लो:
सक्षम: सच्चा
externalS3:
मेज़बान: "ilum-minio.ilum-minio"
externalDatabase:
dialectDriver: "postgresql"
मेज़बान: "ilum-postgresql-hl.ilum-postgresql"
बंदरगाह: 5432
उपभोक्ता: इलम
database: एमएलफ्लो
authDatabase: mlflow_auth
existingSecret: "ilum-postgresql"
existingSecretPasswordKey: "postgres-password"

Helm Values Configuration

Complete Production Values Template

Reference the official Helm chart values at: https://artifacthub.io/packages/helm/ilum/ilum?modal=values

Ilum AIO Installation

Step 1: Verify Dependencies

# Check MongoDB
Kubectl फली प्राप्त करें -n ilum-mongodb
kubectl logs -स्‍त्री-विषयक mongodb-0 -n ilum-mongodb

# Check Kafka
Kubectl फली प्राप्त करें -n ilum-kafka
kubectl logs -स्‍त्री-विषयक kafka-0 -n ilum-kafka

# Check MinIO
Kubectl फली प्राप्त करें -n ilum-minio
kubectl logs -स्‍त्री-विषयक minio-0 -n ilum-minio

# Check PostgreSQL
Kubectl फली प्राप्त करें -n ilum-postgresql
kubectl logs -स्‍त्री-विषयक postgresql-primary-0 -n ilum-postgresql

Step 2: Deploy Ilum

Ilum in defragmented deployment needs ilum-minio रहस्य

कुबेक्टल -n ilum create secret generic ilum-minio \
--from-literal=root-user=<your-s3-access-key> \
--from-literal=root-password=<your-s3-secret-key>

ilum-postgresql रहस्य

कुबेक्टल -n ilum create secret generic ilum-postgresql \
--from-literal=पासवर्ड=चेंजमीकृपया \
--from-literal=postgres-password=चेंजमीकृपया

इलम स्थापित करें

helm install इलम इलम / \
--namespace इलम \
--values production-values.yaml

# Monitor deployment
Kubectl फली प्राप्त करें -n इलम -w

Post-Installation Configuration

1. Verify Installation

# Check all pods
kubectl get pods --all-namespaces | grep इलम

# Check services
kubectl get services --all-namespaces | grep इलम

# Check ingress (if enabled)
kubectl get ingress --all-namespaces

2. Access Ilum UI

# Port forward (for testing)
kubectl port-forward svc/ilum-ui 9777:9777 -n इलम

# Or access via ingress
http://ilum.company.com

# Or access via NodePort
kubectl get svc
http://K8S_NODE_ADDRESS:ILUM_UI_NODEPORT

समस्या निवारण

छवि खींचने की त्रुटियां

आपके क्लस्टर पर इलम की स्थापना के दौरान, हेल्म खींच लेगा Docker छवियां, जो आपके द्वारा सक्षम अतिरिक्त मॉड्यूल के आधार पर 10 जीबी जितनी बड़ी हो सकती हैं। नतीजतन, धीमे इंटरनेट कनेक्शन के साथ, यदि छवि डाउनलोड समय कॉन्फ़िगर किए गए टाइमआउट से अधिक है, तो आप छवि पुल टाइमआउट त्रुटियों का सामना कर सकते हैं। इस समस्या को हल करने के लिए, आप कर सकते हैं:

  1. खींचो Docker छवि मैन्युअल रूप से चलाकर:
minikube ssh docker pull image
# उदाहरण के लिए
minikube ssh docker pull ilum/core-6.1.3

  1. अपने कुबेरनेट्स कॉन्फ़िगरेशन में इमेज पुल टाइमआउट को इस तरह बदलें:
minikube start --extra-config=kubelet.runtime-request-timeout=5m

या इस तरह:

minikube start --extra-config=kubelet.image-pull-progress-deadline=5m

डिफ़ॉल्ट पासवर्ड / क्रेडेंशियल्स

Ilum प्रारंभिक सेटअप और परीक्षण को सरल बनाने के लिए विभिन्न मॉड्यूल के लिए पूर्वनिर्धारित क्रेडेंशियल्स के साथ आता है। हालांकि, के लिए उत्पादन परिनियोजनयह है इन डिफ़ॉल्ट क्रेडेंशियल्स को परिवर्तित करना महत्वपूर्ण है सुरक्षा सुनिश्चित करने और अनधिकृत पहुंच को रोकने के लिए।

डिफ़ॉल्ट क्रेडेंशियल्स

अनुप्रयोगडिफ़ॉल्ट उपयोगकर्ता नामडिफ़ॉल्ट पासवर्ड
इलम यूआईशासनशासन
Object Storage Consoleशासनadmin12345
एयरफ्लो वेब यूआईशासनशासन
सुपरसेट UIशासनशासन
गीटिया यूआईइलमइलम
ग्राफानाशासनशासन

डेटाबेस क्रेडेंशियल्स (आंतरिक उपयोग के लिए)

डाटाबेसडिफ़ॉल्ट उपयोगकर्ता नामडिफ़ॉल्ट पासवर्ड
पोस्टग्रेएसक्यूएलपोस्टग्रेज़चेंजमीकृपया
मार्केज़पोस्टग्रेज़चेंजमीकृपया
हाइव मेटास्टोरपोस्टग्रेज़चेंजमीकृपया