Skip to main content

Upgrade Notes

Upgrade notes

NOTE TEMPLATE

1. Change

Feature:

Feature description

Values deleted - chart name

NameReason
helm.valueHelm value deletion reason

Values added - chart name

Values section description
NameDescriptionValue
helm.valueHelm value descriptiondefault value

Names changed - chart name

Old NameNew Name
old namenew name

⚠️⚠️⚠️ Warnings

Values changed - chart name

NameOld valueNew Value
helm.valueold valuenew value

NEXT RELEASE

RELEASE 6.6.1

1. Ugraded JupyterHub experience

Feature:

Ugraded helm_jupyterhub to bundle Ilum-specific SSH/Git/LDAP bootstrap logic, curated notebooks, and tailored singleuser defaults so helm_aio merely enables the dependency, pins fullnameOverride, and surfaces only the still-relevant overrides. This also keeps the SSH network policy open for port 2222 and ensures the shared ilum-jupyter-ssh-keys secret remains stable, while c.JupyterHub.cleanup_servers = True guarantees the SSH service and user pods stop with the release.

Values added - helm_aio

NameDescriptionValue
ilum-jupyterhub.enabledEnables the curated Ilum JupyterHub chartfalse

Values added - helm_jupyterhub

NameDescriptionValue
fullnameOverrideOverride for the full resource nameilum-jupyterhub
enabledChart enabled flagfalse
SSH configuration
NameDescriptionValue
ssh.enabledEnables the bundled SSH operator, service, and shared key workflowfalse
ssh.keysSecretSecret that provides the stable host and authorized keysilum-jupyter-ssh-keys
ssh.modeSSH authentication mode: master (shared authorized_keys from keysSecret) or per-user (individual secrets per user)master
ssh.perUserSecretNameTemplateTemplate for per-user secret names when using per-user modessh-keys-{username}
ssh.perUserAuthorizedKeysKeyKey name in per-user secrets containing authorized_keysauthorized_keys
ssh.service.typeType of service fronting port 2222NodePort
ssh.service.portPort exposed for SSH traffic2222
ssh.service.targetPortTarget port for SSH traffic2222
ssh.service.nodePortNodePort number (empty for auto-assignment)""
ssh.service.clusterIPClusterIP address (empty for auto-assignment)""
ssh.service.loadBalancerIPLoadBalancer IP address""
ssh.service.annotationsAnnotations for the SSH service{}
ssh.service.prefixPrefix for SSH service resourcesilum-jupyter-ssh
ssh.sshdConfig.customConfigCustom sshd_config lines[]
ssh.operatorImage.nameSSH operator image repositorydocker.ilum.cloud/ilum-jupyterhub
ssh.operatorImage.tagSSH operator image tagssh-operator-4.3.1
ssh.extraEnvExtra environment variables for SSH operator[]
Git configuration
NameDescriptionValue
git.existingSecretCredentials that allow the Git init job to seed the notebooks repositoryilum-git-credentials
git.emailGit email for commitsilum@ilum
git.repositoryGit repository namejupyter
git.addressGitea server addressilum-gitea-http:3000
git.urlGitea endpoint URL used to seed the ilum-jupyterhub orghttp://ilum-gitea-http:3000
git.orgNameOrganization managed by the git-init jobilum-jupyterhub
git.operatorImage.nameGit operator image repositorydocker.ilum.cloud/ilum-jupyterhub
git.operatorImage.tagGit operator image taggitea-operator-4.3.1
git.secret.nameSecret containing credentials referenced by the operatorilum-git-credentials
git.secret.usernameKeyKey for username in the secretusername
git.secret.passwordKeyKey for password in the secretpassword
LDAP configuration
NameDescriptionValue
ldap.enabledKeeps the LDAP authenticator wired into Ilum JupyterHubtrue
ldap.urlsLDAP server endpoints that front the Ilum directory["ldap://ilum-openldap:389"]
ldap.baseSearch base for Ilum users and groups"dc=ilum,dc=cloud"
ldap.usernameBind DN used for authentication"cn=admin,dc=ilum,dc=cloud"
ldap.passwordPassword for the bind DNNot@SecurePassw0rd
ldap.adminUsersLDAP accounts with admin privileges in JupyterHub["ilumadmin","admin"]
ldap.userSearchBaseBase DN where user entries live"ou=people,dc=ilum,dc=cloud"
ldap.userSearchFilterFilter for user lookups"uid={0}"
ldap.groupSearchBaseBase DN where group entries live"ou=groups,dc=ilum,dc=cloud"
ldap.groupSearchFilterFilter that matches members"(member={0})"
ldap.allowedGroupsEmpty list allows all groups unless specified[]
ldap.userAttributeUser attribute for username"uid"
ldap.fullnameAttributeAttribute for user's full name"cn"
ldap.emailAttributeAttribute for user's email"mail"
ldap.groupNameAttributeAttribute for group name"cn"
ldap.groupMemberAttributeAttribute for group membership"member"
ldap.useSslUse SSL for LDAP connectionfalse
ldap.startTlsUse STARTTLS for LDAP connectionfalse
ldap.lookupDnLookup DN before bindingtrue
Hub configuration
NameDescriptionValue
hub.image.nameHub image repositorydocker.ilum.cloud/ilum-jupyterhub
hub.image.tagHub image tagjupyterhub-4.3.1
hub.contentSecurityPolicy.enabledTurns the managed CSP header injection on/offtrue
hub.contentSecurityPolicy.frameAncestorsOrigins allowed to embed JupyterHub in an iframe["'self'","http://localhost:9777"]
hub.gitInit.enabledRuns the job that ensures the ilum-jupyterhub organization/repo existtrue
Singleuser runtime defaults
NameDescriptionValue
singleuser.startupArgs.iopubDataRateLimitRaised output bandwidth ceiling for Ilum workloads1000000000
singleuser.startupArgs.extraArgsAdditional CLI arguments forwarded to the user server[]
singleuser.nodeSelectorArchitecture-agnostic placement (empty by default){}
singleuser.tolerationsAllows scheduling on tainted nodes when needed[]
Image pull credentials
NameDescriptionValue
imagePullSecret.createCreate the pull secret in-clusterfalse
imagePullSecret.automaticReferenceInjectionAuto-inject the created secret into JupyterHub workloadstrue
imagePullSecret.registryRegistry host for the pull secret""
imagePullSecret.usernameRegistry username for the pull secret""
imagePullSecret.passwordRegistry password for the pull secret""
imagePullSecret.emailRegistry email for the pull secret""
imagePullSecret.nameExisting secret name to reference instead of the autogenerated pull secret""
imagePullSecretsAdditional pull secrets injected into all hub-managed pods[]

Values changed - helm_jupyterhub

NameOld valueNew Value
singleuser.networkPolicy.allowedIngressPorts[][2222]

Instructions

  • Keep ilum-jupyter-ssh-keys stable outside Helm so the SSH host fingerprint survives upgrades; rotating the secret requires removing stale entries from user known_hosts.
  • Ensure ilum-git-credentials contains valid credentials for a Gitea account with org-level write access—both the SSH operator and Git init job rely on the rendered token.
  • To refresh the curated notebooks, update helm_jupyterhub/files/examples (and their config map templates) so the init container can push them into the ilum-jupyterhub repo again.

⚠️⚠️⚠️ Warnings

  • Port 2222 is opened via the SSH operator’s shared service; if you switch to per-user authorized keys, keep the service numbering and secrets aligned.

  • Cleanup is forced (c.JupyterHub.cleanup_servers = True), so user pods and the SSH service terminate with the Helm release. Manage any long-lived workloads outside this chart.

2. Upgraded Livy compatible API to version 0.8.0

Feature:

Upgraded Livy compatible API to version 0.8.0 with enhanced configuration options for compression, server version control, and TTL-based session cleanup.

Values added - ilum-core

Livy Compression Configuration
NameDescriptionValue
livy.compression.enabledEnable response compression for Livy endpointsfalse
Livy Server Configuration
NameDescriptionValue
livy.server.versionLivy server version identifier0.8.0
livy.server.sendServerVersionSend server version in response headersfalse
livy.server.allowCustomClasspathAllow custom classpath in session creationfalse
Livy TTL Session Cleanup Configuration
NameDescriptionValue
livy.ttl.checkPeriodBackground sweep period in milliseconds for checking expired sessions300000
livy.ttl.checkInitialDelayInitial delay in milliseconds before first TTL background check60000

Values added - ilum-aio

Same values as ilum-core but under the ilum-core. prefix (e.g., ilum-core.livy.compression.enabled).

⚠️⚠️⚠️ Important Notes

For most users:No action required. All new configuration options have safe defaults and are backward compatible.

Optional Performance Optimization: If you handle large Livy responses, you may enable compression by setting livy.compression.enabled: true.

Session Management: The new TTL cleanup uses a hybrid approach (lazy + background sweep) to automatically clean up expired sessions. Default settings should work for most deployments.

3. Updated default Spark version and added autopause configuration

Feature:

Updated default Spark version to 3.5.7-delta in kubernetes.defaultCluster.config. Added spark.ilum.autopause: "true" to kubernetes.defaultCluster.config to set the default behavior of the autopause feature.

Values changed - ilum-core

NameOld valueNew Value
kubernetes.defaultCluster.config.spark.kubernetes.container.imageilum/spark:3.5.6-deltailum/spark:3.5.7-delta

Values added - ilum-core

NameDescriptionValue
kubernetes.defaultCluster.config.spark.ilum.autopauseSets the default behavior of autopause feature"true"

Feature:

Fixed stability issues and changed HTTP cookie-based access control to be disabled by default for all external services (Jupyter, Airflow, MLflow, Grafana, etc.).

What Changed?

  • External services are now open by default - no cookie requirements
  • All users can access services without any special configuration
  • System works out-of-the-box

What This Means for You

  • ✅ Your services will become more accessible
  • ✅ Users can access Jupyter, Airflow, MLflow, etc. without cookie setup
  • ✅ No action required for most deployments

If you need to restrict access:

  • Use the built-in OAuth2/Hydra authentication (recommended for production)
  • Or manually enable cookie-based access control per service (see below)

This is an advanced feature for specific use cases:

  • ✅ Temporary access restrictions for specific users/sessions
  • ✅ Custom access control integrated with your frontend application

To enable for a specific service:

nginx:
config:
http_cookie:
enabled: true
ilum-jupyter:
enabled: true

Values changed - ilum-ui

NameOld valueNew Value
nginx.config.http_cookie.enabledtruefalse

Values changed - ilum-aio

NameOld valueNew Value
ilum-ui.nginx.config.http_cookie.enabledtruefalse

⚠️⚠️⚠️ Important Notes

For most users:No action required. This change makes services more accessible.

If you customized cookie settings in 6.6.0: You may need to review your configuration. The system now defaults to open access instead of requiring cookies.

RELEASE 6.6.0

1. Upgraded Apache Airflow to 3.1.1

Feature:

Upgraded Apache Airflow from 3.0.5 to 3.1.1 with improved OIDC authentication support using authlib OAuth providers (AUTH_OAUTH) instead of deprecated flask-oidc (AUTH_OIDC). This upgrade includes fixes for OAuth redirect URI patterns and proper volume mounting for OIDC client secrets in init containers.

Values changed - ilum-aio

NameOld valueNew Value
airflow.airflowVersion3.0.53.1.1
airflow.images.airflow.tag3.0.53.1.1
airflow.apiServer.extraInitContainers[0].imageilum/airflow:3.0.5ilum/airflow:3.1.1

Values added - ilum-aio

NameDescriptionValue
airflow.migrateDatabaseJob.useHelmHooksDisable Helm hooks for database migration jobfalse
airflow.apiServer.extraInitContainers[0]Modified create admin user init containerSee below
airflow.apiServer.apiServerConfigConfigMapNameCustom webserver_config.py configmapilum-api-server-config
Init Container Volume Mount Configuration
- name: create-admin-user
image: ilum/airflow:3.1.1
command: ["/bin/bash", "/scripts/init.sh"]
volumeMounts:
- name: ilum-airflow-create-user-secret
mountPath: /scripts
- name: config
mountPath: /opt/airflow/airflow.cfg
subPath: airflow.cfg
- name: oauth-secret-volume
mountPath: /opt/airflow/client-secret
readOnly: true
- name: webserver-config-volume
mountPath: /opt/airflow/webserver_config.py
subPath: webserver_config.py
readOnly: true

⚠️⚠️⚠️ Warnings

Configuration value airflow.apiServer.apiServerConfigConfigMapName is preconfigured to use a ConfigMap named ilum-api-server-config. But the name of this configMap must follow pattern <release-name>-api-server-config to be properly mounted as it is Airflow's chart requirement. So if your release name is different from ilum, please change this value accordingly. For example use:

airflow:
apiServer:
apiServerConfigConfigMapName: <your-release-name>-api-server-config
extraVolumes:
- name: oauth-secret-volume
secret:
secretName: ilum-hydra-client-secret
- name: ilum-airflow-create-user-secret
secret:
secretName: ilum-airflow-create-user-secret
- name: webserver-config-volume
configMap:
name: <your-release-name>-api-server-config

2. Enhanced Jupyter startup configuration

Feature:

Added configurable startup arguments for Jupyter notebook server, allowing users to customize base URL, IOPub data rate limits, and pass additional command-line arguments. Also added support for extra environment variables with templating support.

Values added - ilum-jupyter

Startup and environment configuration
NameDescriptionValue
tokenJupyter notebook authentication token""
startupArgs.baseUrlJupyter base URL path for reverse proxy configurations/external/jupyter/
startupArgs.iopubDataRateLimitIOPub data rate limit in bytes/sec (controls output bandwidth)1000000000
startupArgs.extraArgsAdditional command-line arguments to pass to Jupyter server[]
extraEnvAdditional environment variables for Jupyter container as string template""

⚠️⚠️⚠️ Warnings

  • All startup arguments configured via startupArgs.* can be completely overridden by setting the args parameter in values.yaml. When args is set, all default startup arguments are ignored, giving you full control over the Jupyter server startup command.
  • The extraEnv parameter accepts a string template (multiline YAML using |). Example usage:
    extraEnv: |
    - name: MY_VAR
    value: value

3. Added Apache NiFi module

Feature:

Added Apache NiFi to ilum-aio as a new module. This will allow users to easily deploy NiFi and use it next to Ilum.

Values added - ilum-aio

NameDescriptionValue
nifi.enabledFlag to enable NiFi deployment in ilum-aiofalse
nifi.fullnameOverrideFull name override for NiFiilum-nifi
nifi.image.tagTag of the source NiFi image2.5.0
nifi.properties.safetyValveAdditional properties passed to nifi.propertiesSee values.yaml
nifi.persistence.enabledEnables PVC for the data directorytrue
nifi.persistence.subpath.enabledEnabled one PVC instead of manytrue
nifi.persistence.subpath.sizeSize of the data directory10Gi
nifi.zookeeper.enabledEnables bundled Zookeeper deploymentfalse
nifi.registry.enabledEnables bundled NiFi registry deploymentfalse
nifi.ca.enabledEnables bundled CA deploymentfalse
nifi.openldap.enabledEnables bundled openLDAP deploymentfalse

Values added - ilum-ui

NameDescriptionValue
runtimeVars.nifiUrlURL of the NiFi instancehttp://ilum-nifi:8443/nifi/
runtimeVars.nifiPathProxy path of NiFi/external/nifi/
nginx.config.nifi.enabledEnable proxy for NiFifalse
nginx.config.http_cookie.nifi.enabledEnables cookie mapping for NiFitrue

4. Added integration with Project Nessie metastore

Feature:

Added integration with Project Nessie metastore in Ilum, which allows the use of Nessie as a metastore for Spark jobs.

Values added - ilum-core

NameDescriptionValue
metastore.typeIndicates the default metastorehive
metastore.nessie.addressThe address of the default Nessie metastorehttp://ilum-nessie:19120/api/v2
metastore.nessie.warehouseDirThe location of the warehouse of the default Nessie metastores3a://ilum-data/nessie_catalog
metastore.nessie.s3EndpointThe S3 API endpoint to use for the default Nessie metastorehttp://ilum-minio:9000
metastore.nessie.s3PathStyleAccessWhether to use path style access for the S3 Nessie connectiontrue
metastore.nessie.authTypeAuth type of the default Nessie metastoreNONE
metastore.nessie.refThe branch to use for the default Nessie metastoremain
metastore.nessie.cacheEnabledEnables caching in the default Nessie metastorefalse
metastore.nessie.catalog_nameThe name of the catalog for the default Nessie metastorenessie_catalog
metastore.nessie.configAdditional config to add for the Spark jobSee values.yaml
metastore.nessie.statusProbeStatus probe for the Nessie metastore, so Ilum-core does not launch too quicklySee values.yaml

Values added - ilum-aio

NameDescriptionValue
nessie.enabledEnables or disables bundled Nessie deploymentfalse
nessie.fullnameOverrideFull name override for Nessieilum-nessie
nessie.versionStoreTypeType of persistent metadata storageJDBC2
nessie.extraInitContainersAdds init containers to Nessie (waiting for database)See values.yaml
nessie.jdbc.jdbcUrlUrl for DB connectionjdbc:postgresql://ilum-postgresql-hl:5432/nessie
nessie.jdbc.secret.nameSecret containing DB credentialsilum-postgres-credentals
nessie.jdbc.secret.usernameKey of username in the secretusername
nessie.jdbc.secret.passwordKey of password in the secretpassword

Names changed - ilum-core

Old NameNew Name
hiveMetastore.enabledmetastore.enabled
hiveMetastore.*metastore.hive.*

Values changed - ilum-core

NameOld valueNew Value
kubernetes.defaultCluster.configSee values.yamlSee values.yaml

⚠️⚠️⚠️ Warnings

This is an important change that will need to be addressed if any custom changes to the default configuration were made. Please carefully review the changes and make sure they will not break your deployment.

5. Livy API now fully served by ilum-core (embedded)

Feature:

Livy API is implemented and served directly by ilum-core (embedded). The legacy Livy proxy is deprecated but can still be turned on for backward compatibility.

Values added - ilum-aio

NameDescriptionValue
ilum-core.livy.enabledEnables embedded Livy integration in AIO via ilum-coretrue
ilum-core.livy.ilumUI.publicEndpointPublic endpoint of ilum-ui used for Livy links/integrationhttp://localhost:9777
ilum-livy-proxy.legacy.enabledTurns on the legacy Livy proxy resources (ConfigMap/Deployment/etc.)false

⚠️⚠️⚠️ Warnings

  • The compat Service (ilum-livy-proxy → ilum-core) is deprecated and will be removed in a future release.
  • The legacy proxy is also deprecated and will be removed after the transition period.
  • Mode matrix (AIO):
    • ilum-livy-proxy.enabled=false & ilum-livy-proxy.legacy.enabled=false → nothing created; call ilum-core directly.
    • ilum-livy-proxy.enabled=true & ilum-livy-proxy.legacy.enabled=false → create compat Service pointing to the new ilum-core Livy API.
    • ilum-livy-proxy.enabled=false & ilum-livy-proxy.legacy.enabled=true → deploy legacy proxy.
  • When legacy is enabled, update client endpoints to use the legacy Service:
    • ilum-jupyter.livyEndpoint = http://ilum-livy-proxy:8998
    • ilum-zeppelin.livyEndpoint = http://ilum-livy-proxy:8998
    • Airflow connection: AIRFLOW_CONN_ILUM-LIVY-PROXY=livy://ilum-livy-proxy:8998
  • Some resources (e.g., ConfigMap/Ingress) are rendered based on ilum-livy-proxy.legacy.enabled only (not on ilum-livy-proxy.enabled).

6. Added cronjob cleaning after uninstalling

Feature:

A pre-delete hook will now clean up kubernetes cronjobs after uninstalling the chart.

Values added - ilum-core

NameDescriptionValue
cronjob.cleanup.enabledEnable cronjob cleanup after uninstalling the charttrue
cronjob.cleanup.imageImage used for the cleanup jobalpine/kubectl:1.34.1

RELEASE 6.5.2

1. SSH mode implementation for helm_jupyter

Feature:

SSH mode in the helm_jupyter chart has been implemented to provide SSH access directly within the main Jupyter container. This allows users to access their Jupyter environment via SSH while maintaining workspace consistency between web and SSH interfaces.

Values added - helm_jupyter

SSH access configuration
NameDescriptionValue
ssh.enabledEnable SSH access in the Jupyter containertrue
ssh.keysSecretName of the secret containing SSH keysilum-jupyter-ssh-keys
ssh.service.typeSSH service typeNodePort
ssh.service.portSSH service port2222
ssh.service.nodePortSSH service node port (when service type is NodePort)""
ssh.service.clusterIPSSH service cluster IP""
ssh.service.loadBalancerIPSSH service load balancer IP""
ssh.service.annotationsSSH service annotations{}
ssh.sshdConfig.customConfigCustom SSH server configuration[]

⚠️⚠️⚠️ Warnings

  • SSH server runs directly in the main Jupyter container on port 2222 internally
  • SSH keys must be provided via a Kubernetes Secret referenced by ssh.keysSecret parameter
  • The secret should contain both SSH host keys and authorized_keys for authentication
  • SSH access provides direct access to the /home/jovyan/work directory (same as web interface)
  • Custom SSH server configuration can be provided via ssh.sshdConfig.customConfig array

2. Address Bitnami’s move to bitnamilegacy + bitnamisecure

Feature:

Bitnami has moved to bitnamilegacy + bitnamisecure for their images after the 18th of August 2025. This change moves used images to the new repositories.

Values added - ilum-aio

NameDescriptionValue
global.security.allowInsecureImagesAllows images from outside of bitnami repository in Bitnami's chartstrue
kafka.image.repositoryRepository for Kafka's imagebitnamilegacy/kafka
minio.image.repositoryRepository for Minio's imagebitnamilegacy/minio
mlflow.image.repositoryRepository for MlFlow's imagebitnamilegacy/mlflow
postgresql.image.repositoryRepository for Postgresql's imagebitnamilegacy/postgresql

Values changed - ilum-aio

NameOld valueNew Value
airflowExtensions.git.imagebitnami/git:2.48.1bitnamisecure/git@sha256:72ae5bd9715fc81446becc0418011883479c593bac427911aa62ecf27ef96546
postgresExtensions.imagebitnami/postgresql:16bitnamilegacy/postgresql:16

Values changed - ilum-core

NameOld valueNew Value
kafka.statusProbe.imagebitnami/kafka:3.4.1bitnamilegacy/kafka:3.4.1

Values changed - ilum-hive-metastore

NameOld valueNew Value
postgresql.imagebitnami/postgresql:16bitnamilegacy/postgresql:16

Values changed - ilum-jupyter

NameOld valueNew Value
git.init.imagebitnami/git:2.48.1bitnamisecure/git@sha256:72ae5bd9715fc81446becc0418011883479c593bac427911aa62ecf27ef96546

Values changed - ilum-marquez

NameOld valueNew Value
marquez.db.imagebitnami/postgresql:16bitnamilegacy/postgresql:16

1. Updated Airflow defaults in ilum-aio

Feature:

Bumped Airflow to 3.0.5 and streamlined default connection/env configuration. Removed legacy cleanup and scheduler overrides in favor of chart defaults and connection-based setup.

Values added - ilum-aio

NameDescriptionValue
airflow.enableBuiltInSecretEnvVars.AIRFLOW__CORE__FERNET_KEYEnable default fernet key generationfalse

Values changed - ilum-aio

NameOld valueNew Value
airflow.extraEnvSee values.yamlSee values.yaml
airflow.airflowVersion3.0.33.0.5
airflow.images.airflow.tag3.0.33.0.5
airflow.apiServer.extraInitContainers[0].imageilum/airflow:3.0.3ilum/airflow:3.0.5

Values deleted - ilum-aio

NameReason
airflow.scheduler.argsRevert to chart default scheduler command as we manage connections via env variables now
airflow.cleanup.enabledUse executor's instant cleanup
airflow.config.kubernetes_executor.delete_worker_podsUse chart defaults
airflow.config.kubernetes_executor.delete_worker_pods_on_failureUse chart defaults

⚠️⚠️⚠️ Warnings

As the default Airflow’s fernet key creation mechanism made it impossible to enable Airflow via values upgrade, the mechanism will get disabled by default. To use it once again, manually create a Kubernetes secret and set required values in the airflow chart.

Feature:

Added configurable HTTP cookie mappings in the ilum-ui nginx configuration. This allows users to enable or disable cookie-based access control for individual services or turn off the entire cookie mapping section. Each service can be controlled individually while maintaining backward compatibility with all options enabled by default.

Values added - ilum-ui

NameDescriptionValue
nginx.config.http_cookie.enabledGlobal flag to enable HTTP cookie mappingstrue
nginx.config.http_cookie.historyServer.enabledEnable cookie mapping for history server accesstrue
nginx.config.http_cookie.mlflow.enabledEnable cookie mapping for MLflow accesstrue
nginx.config.http_cookie.ilum-jupyter.enabledEnable cookie mapping for Jupyter notebook accesstrue
nginx.config.http_cookie.gitea.enabledEnable cookie mapping for Gitea accesstrue
nginx.config.http_cookie.n8n.enabledEnable cookie mapping for n8n accesstrue
nginx.config.http_cookie.minio.enabledEnable cookie mapping for MinIO accesstrue
nginx.config.http_cookie.airflow.enabledEnable cookie mapping for Airflow accesstrue
nginx.config.http_cookie.superset.enabledEnable cookie mapping for Superset accesstrue
nginx.config.http_cookie.grafana.enabledEnable cookie mapping for Grafana accesstrue
nginx.config.http_cookie.kestra.enabledEnable cookie mapping for Kestra accesstrue
nginx.config.http_cookie.mageai.enabledEnable cookie mapping for Mage AI accesstrue

4. PostgreSQL Max Connections Configuration

Feature:

Added PostgreSQL max_connections configuration to address database connection limits in high-load scenarios.

Values added - ilum-aio

PostgreSQL configuration
NameDescriptionValue
postgresql.primary.extendedConfigurationExtended PostgreSQL configuration to set max_connections parametermax_connections = 1000

RELEASE 6.4.3

1. Added Mage to ilum-aio

Feature:

Added Mage OSS to ilum-aio as a new module. This will allow users to easily deploy Mage and use it next to Ilum.

Values added - ilum-aio

NameDescriptionValue
mageai.enabledFlag to enable Mage OSS deployment in ilum-aiofalse
mageai.fullnameOverrideOverrides the full name of the Mage deploymentilum-mageai
mageai.image.repositoryRepository of the source Mage imageilum/mageai
mageai.image.tagTag of the source Mage image0.9.76
mageai.rootPathThe root path for the Mage web serverexternal/mageai
mageai.service.typeType of Mage's kubernetes serviceClusterIP
mageai.redis.enabledEnables Redis for the Mage deploymentfalse
mageai.postgresql.enabledEnables external Postgres for Magetrue
mageai.postgresql.deployDeploys external Postgres for Magefalse
mageai.postgresql.fullnameOverrideThe name of the Postgres serviceilum-postgresql-hl
mageai.postgresql.auth.usernameUsername of the Postgres userilum
mageai.postgresql.auth.passwordPassword of the Postgres userCHANGEMEPLEASE
mageai.postgresql.auth.databaseThe database Mage should usemageai
mageai.persistence.enabledEnables PVC for the main data directorytrue

2. Updated Airflow’s chart and values to support Airflow 3.0

Feature:

Updated Airflow’s chart and values to support Airflow 3.0, which includes changes in the configuration and deployment of Airflow.

Values added - ilum-aio

NameDescriptionValue
airflow.airflowVersionSets chart compatibility for given Airflow version3.0.3
airflow.apiServer.*apiServer replaces webserver settingsSee values.yaml
airflow.config.core.auth_managerClass of auth manager used in Airflowairflow.providers.fab.auth_manager.fab_auth_manager.FabAuthManager
airflow.config.api.base_urlThe base path of the Airflow web apphttp://localhost:9777/external/airflow
airflow.config.api.enable_xcom_deserialize_supportEnables XCom deserialization in Airflow APITrue
airflow.config.logging.colored_console_logEnables colored console log in AirflowTrue
airflow.config.kubernetes_executor.delete_worker_podsEnables instant deletion of worker podsFalse
airflow.config.kubernetes_executor.delete_worker_pods_on_failureEnables instant deletion of failed worker podsFalse
airflow.cleanup.enabledEnables periodic deletion of worker podsTrue

Values changed - ilum-aio

NameOld valueNew Value
airflow.images.airflow.tag2.9.33.0.3
airflow.executorLocalKubernetesExecutorKubernetesExecutor
airflow.extraEnvSee values.yamlSee values.yaml
airflow.webserver.extraInitContainersSee values.yamlSee values.yaml

Values deleted - ilum-aio

NameReason
airflow.migrateDatabaseJob.useHelmHooksRevert to chart default

Values changed - ilum-ui

NameOld valueNew Value
runtimeVars.airflowUrlhttp://ilum-airflow-webserver:8080http://ilum-airflow-api-server:8080

⚠️⚠️⚠️ Warnings

Ilum’s changes, Airflow 3.0 and the new Airflow chart version bring significant changes to the Airflow configuration and deployment. Please review the new values and adjust your configuration accordingly.

If you are a user of Ilum’s OAuth2 provider, this update may require you to manually update some configuration, as Helm is likely to not be able to automatically migrate the values.

3. Added securityContext configuration for ilum charts

Feature:

Added comprehensive securityContext configuration for enhanced security across all ilum Helm charts. This includes both pod-level and container-level security contexts with non-root user execution, capability dropping, and seccomp profiles.

Values added - ilum-core

NameDescriptionValue
securityContext.pod.runAsNonRootRun container as non-root usertrue
securityContext.pod.runAsUserUser ID to run the container1001
securityContext.pod.runAsGroupGroup ID to run the container1001
securityContext.pod.fsGroupFile system group ID1001
securityContext.pod.seccompProfile.typeSeccomp profile typeUnconfined
securityContext.container.allowPrivilegeEscalationAllow privilege escalationfalse
securityContext.container.readOnlyRootFilesystemRead-only root filesystemfalse
securityContext.container.runAsNonRootRun container as non-root usertrue
securityContext.container.runAsUserUser ID to run the container1001
securityContext.container.runAsGroupGroup ID to run the container1001
securityContext.container.capabilities.dropCapabilities to drop["ALL"]
securityContext.container.seccompProfile.typeSeccomp profile typeUnconfined

Values added - ilum-ui

NameDescriptionValue
securityContext.pod.runAsNonRootRun pod as non-root usertrue
securityContext.pod.runAsUserUser ID to run the pod101
securityContext.pod.runAsGroupGroup ID to run the pod101
securityContext.pod.fsGroupFile system group ID101
securityContext.pod.seccompProfile.typeSeccomp profile typeUnconfined
securityContext.container.allowPrivilegeEscalationAllow privilege escalationfalse
securityContext.container.readOnlyRootFilesystemRead-only root filesystemfalse
securityContext.container.runAsNonRootRun container as non-root usertrue
securityContext.container.runAsUserUser ID to run the container101
securityContext.container.runAsGroupGroup ID to run the container101
securityContext.container.capabilities.dropCapabilities to drop["ALL"]
securityContext.container.seccompProfile.typeSeccomp profile typeUnconfined

Values added - ilum-jupyter

NameDescriptionValue
securityContext.container.allowPrivilegeEscalationAllow privilege escalationfalse
securityContext.container.readOnlyRootFilesystemRead-only root filesystemfalse
securityContext.container.runAsNonRootRun container as non-root usertrue
securityContext.container.runAsUserUser ID to run the container1000
securityContext.container.runAsGroupGroup ID to run the container100
securityContext.container.capabilities.dropCapabilities to drop["ALL"]
securityContext.container.seccompProfile.typeSeccomp profile typeUnconfined
securityContext.initContainer.allowPrivilegeEscalationAllow privilege escalation for init containerfalse
securityContext.initContainer.readOnlyRootFilesystemRead-only root filesystem for init containerfalse
securityContext.initContainer.runAsNonRootRun init container as non-root userfalse
securityContext.initContainer.runAsUserUser ID to run the init container0
securityContext.initContainer.runAsGroupGroup ID to run the init container0
securityContext.initContainer.capabilities.dropCapabilities to drop for init container["ALL"]
securityContext.initContainer.seccompProfile.typeSeccomp profile type for init containerUnconfined

Values added - ilum-livy-proxy

NameDescriptionValue
securityContext.pod.runAsNonRootRun pod as non-root usertrue
securityContext.pod.runAsUserUser ID to run the pod1001
securityContext.pod.runAsGroupGroup ID to run the pod1001
securityContext.pod.fsGroupFile system group ID1001
securityContext.pod.seccompProfile.typeSeccomp profile typeUnconfined
securityContext.container.allowPrivilegeEscalationAllow privilege escalationfalse
securityContext.container.readOnlyRootFilesystemRead-only root filesystemfalse
securityContext.container.runAsNonRootRun container as non-root usertrue
securityContext.container.runAsUserUser ID to run the container1001
securityContext.container.runAsGroupGroup ID to run the container1001
securityContext.container.seccompProfile.typeSeccomp profile typeUnconfined

Values added - ilum-aio

Added securityContext configuration for postgresExtensions
NameDescriptionValue
postgresExtensions.securityContext.pod.runAsNonRootRun pod as non-root usertrue
postgresExtensions.securityContext.pod.runAsUserUser ID to run the pod999
postgresExtensions.securityContext.pod.runAsGroupGroup ID to run the pod999
postgresExtensions.securityContext.pod.fsGroupFile system group ID999
postgresExtensions.securityContext.pod.seccompProfile.typeSeccomp profile typeUnconfined
postgresExtensions.securityContext.container.allowPrivilegeEscalationAllow privilege escalationfalse
postgresExtensions.securityContext.container.readOnlyRootFilesystemRead-only root filesystemfalse
postgresExtensions.securityContext.container.runAsNonRootRun container as non-root usertrue
postgresExtensions.securityContext.container.runAsUserUser ID to run the container999
postgresExtensions.securityContext.container.runAsGroupGroup ID to run the container999
postgresExtensions.securityContext.container.capabilities.dropCapabilities to drop["ALL"]
postgresExtensions.securityContext.container.seccompProfile.typeSeccomp profile typeUnconfined

RELEASE 6.4.2

1. changed openldap chart provider to jp-gouin's

Feature:

Changed openldap chart provider to jp-gouin's, which is more actively maintained and has better support for features like TLS. Because of that, the default configuration of openldap was changed to reflect the new provider's defaults.

Values changed - ilum-core

NameOld valueNew Value
security.ldap.userMapping.enabledsnemployeeType
security.ldap.userMapping.enabledValue~active
security.ldap.passwordadminNot@SecurePassw0rd

Values added - ilum-aio

Added new values for openldap configuration
NameDescriptionValue
global.ldapDomainDomain of the LDAP configurationilum.cloud
openldap.replicaCountReplica count of openLDAP1
openldap.replication.enabledEnable HA for openLDAPfalse
openldap.ltb-passwd.enabledEnable ltb-passwd servicefalse
openldap.phpldapadmin.enabledEnable PhpLdapAdminfalse

Values changed - ilum-aio

NameOld valueNew Value
openldap.env.LDAP_BACKENDhdbmdb
openldap.customLdifFilessee values.yamlsee values.yaml

Values deleted - ilum-aio

NameReason
openldap.env.LDAP_ORGANISATIONManaged by the chart
openldap.env.LDAP_DOMAINManaged by the chart
openldap.env.LDAP_TLSManaged by the chart
openldap.env.LDAP_TLS_ENFORCEManaged by the chart

RELEASE 6.4.1

1. Adapt hydra to https

Values added - ilum-aio

NameDescriptionValue
global.security.hydra.uiDomainDomain where ilum-ui can be accessed from browser``
global.security.hydra.uiProtocolProtocol used to access ilum-ui: http or httpshttp

Values deleted - ilum-aio

NameReason
global.security.hydra.uiUrlReplaced with uiDomain and uiProtocol

Values added - ilum-core

NameDescriptionValue
hydra.cookies.same_site_modeSameSite value for hydra cookies in set-cookie headerLax

2. Added openldap to helm chart and ilum-to-ldap synchronization

Values added - ilum-aio

Added openldap configuration values
NameDescriptionValue
openldap.enabledFlag used to enable openldapfalse
openldap.adminPasswordPassword of admin ldap useradmin
openldap.fullnameOverrideName of Openldap helm chart resourcesilum-openldap
openldap.persistence.enabledFlag to enable persistence by openldaptrue
openldap.persistence.sizeMemory used by openldap for storage1Gi
openldap.env.LDAP_ORGANIZATIONOrganization name of main ldap domainIlum
openldap.env.LDAP_DOMAINMain domain used in ldap by adminilum.cloud
openldap.env.LDAP_BACKENDType of ldap backendhdb
openldap.env.LDAP_TLSFlag used to enable TLS in ldapfalse
openldap.env.LDAP_TLS_ENFORCEFlag used to enforce TLS in ldapfalse
openldap.env.LDAP_REMOVE_CONFIG_AFTER_SETUPFlag used to update configtrue
openldap.customLdifFiles.schemas.ldifFile with custom schem applied at the startup<initial-schema.ldif>

Values added - ilum-core

Added configurations for synchronization of ldap with ilum
NameDescriptionValue
security.ldap.ilumToLdapSyncFlag used to enable ilum to ldap syncfalse
security.ldap.userMapping.ocOC values used during insertion of ilum users into ldap<default-oc-list>
security.ldap.groupMapping.ocOC values used during insertion of ilum groups into ldap<default-oc-list>

Values changed - ilum-core

NameOld valueNew Value
security.ldap.urls[][ "ldap://ilum-openldap:389" ]
security.ldap.base""dc=ilum,dc=cloud
security.ldap.username""cn=admin,dc=ilum,dc=cloud
security.ldap.password""admin
security.ldap.adminUsers[ "admin" ][ "admin", "ilumadmin" ]
security.ldap.userMapping.base""ou=people
security.ldap.userMapping.fullname""cn
security.ldap.userMapping.description""description
security.ldap.userMapping.email""mail
security.ldap.userMapping.enabled""sn
security.ldap.userMapping.base""ou=groups
security.ldap.userMapping.description""description

3. Restricted RBAC Mode for ilum-core service

Feature:

Introduced a new rbac.restricted.enabled flag in the ilum-core chart. When set to true, this option applies a more restrictive set of RBAC permissions for the service account. This enhances security by adhering to the principle of least privilege and is recommended for production or security-sensitive environments.

Values added - ilum-core

Added a flag to enable a more restrictive RBAC configuration.
NameDescriptionValue
rbac.restricted.enabledIf true, applies a more restrictive, non-cluster-wide set of RBAC permissions for Spark applications.false

4. Added enabled flag to Trino in ilum-sql

Feature:

Added enabled flag to Trino in ilum-sql, which allows users to disable Trino if they do not need it. This also will help ilum-ui with the configuration of Trino.

Values added - ilum-sql

NameDescriptionValue
config.trino.enabledFlag to enable Trino in ilum-sqlfalse

⚠️⚠️⚠️ Warnings

Trino was enabled by default, so if you wish to enable it after the version upgrade, you need to set ilum-sql.config.trino.enabled to true in your helm values.

RELEASE 6.4.0

1. Addition of OAuth Provider and its integration with Services

Feature:

Added Hydra deployment to helm chart and fields to configure it

Values added - ilum-core

NameDescriptionValue
global.security.hydra.enabledFlag to enable hydrafalse
global.security.hydra.uiUrlIlum UI url required to configure OpenID connect``
global.security.hydra.clientIdClient Id of OpenID client created in hydrailum-client
global.security.hydra.cliendSecretClient Secret of OpenId Client created in hydrasecret
hydra.dsnDSN for database used by hydrapostgres://ilum:CHANGEMEPLEASE@ilum-postgresql:5432/hydra?sslmode=disable
hydra.secretsSystemSecret used by hydra to securily store dataCHANGEMEPLEASE
hydra.recreateClientBoolean flag for OpenId client recreation during hydra startuptrue
hydra.resources.requestsMemory and CPU limits and requests used by hydra deploymentnull
hydra.imagePullPolicyHydra container image pull policyIfNotPresent
hydra.service.domainDomain used by hydra serviceilum-hydra
hydra.service.publicPortPort that exposes public api of hydra4444
hydra.service.adminPortPort that exposes admin api of hydra4445
hydra.service.typeHydra service typeClusterIP
hydra.service.publicNodePortHydra service node port assigned to public port``
hydra.service.publicNodePortHydra service node port assigned to admin port``
hydra.service.clusterIPHydra service cluster IP``
hydra.service.loadBalancerIPHydra service load balancer IP``
hydra.service.annotationsAnnotations used by hydra service{}
hydra.separateDeploymentFlag to launch hydra in a separate deployment or in ilum-coretrue

Values added - ilum-ui

NameDescriptionValue
runtimeVars.hydraUrlUrl of Hydra Public APIhttp://ilum-hydra:4444
runtimeVars.hydraPathilum-ui proxy-path to hydra public api/external/hydra

Feature

Added helm values to specify how roles and groups from ilum-core are going to be mapped to microservices of ilum

Values added - ilum-core

NameDescriptionValue
hydra.rewriteMappingBoolean flag for recreation of ilum-to-services roles config after ilum-core restarttrue
hydra.mapping.minioMinAccessRoleDefault role assigned to ilum users with access to minioreadonly
hydra.mapping.airflowMinAccessRoleDefault role assigned to ilum users with access to airflowViewer
hydra.mapping.supersetMinAccessRoleDefault role assigned to ilum users with access to supersetGamma
hydra.mapping.grafanaMinAccessRoleDefault role assigned to ilum users with access to grafanaViewer
hydra.mapping.giteaMinAccessRoleDefault role assigned to ilum users with access to gitea``
hydra.mapping.groupsToMinioMap of ilum groups to a list of minio policiesnull
hydra.mapping.groupsToSupersetMap of ilum groups to a list of superset rolesnull
hydra.mapping.groupsToAirflowMap of ilum groups to a list of airflow rolesnull
hydra.mapping.groupsToGrafanaMap of ilum groups to a list of grafana rolesnull
hydra.mapping.groupsToGiteaMap of ilum groups to a list of gitea rolesnull
hydra.mapping.groupsToMinio[*].ilumObjName of ilum group to be mapped``
hydra.mapping.groupsToMinio[*].serviceObjsList of minio policies that the ilum group is mapped to``
hydra.mapping.groupsToSuperset[*].ilumObjName of ilum group to be mapped``
hydra.mapping.groupsToSuperset[*].serviceObjsList of superset roles that the ilum group is mapped to``
hydra.mapping.groupsToAirflow[*].ilumObjName of ilum group to be mapped``
hydra.mapping.groupsToAirflow[*].serviceObjsList of airflow roles that the ilum group is mapped to``
hydra.mapping.groupsToGrafana[*].ilumObjName of ilum group to be mapped``
hydra.mapping.groupsToGrafana[*].serviceObjsList of grafana roles that the ilum group is mapped to``
hydra.mapping.groupsToGitea[*].ilumObjName of ilum group to be mapped``
hydra.mapping.groupsToGitea[*].serviceObjsList of gitea roles that the ilum group is mapped to``
hydra.mapping.rolesToGiteaMap of ilum roles to a list of gitea rolesnull
hydra.mapping.rolesToMinio[0].ilumObjName of ilum role to be mappedADMIN
hydra.mapping.rolesToMinio[0].serviceObjsList of minio policies that the ilum role is mapped to[ consoleAdmin ]
hydra.mapping.rolesToMinio[1].ilumObjName of ilum role to be mappedDATA_ENGINEER
hydra.mapping.rolesToMinio[1].serviceObjsList of minio policies that the ilum role is mapped to[ readonly, writeonly, diagnostics ]
hydra.mapping.rolesToSuperset[0].ilumObjName of ilum role to be mappedADMIN
hydra.mapping.rolesToSuperset[0].serviceObjsList of superset roles that the ilum role is mapped to[ Admin ]
hydra.mapping.rolesToSuperset[1].ilumObjName of ilum role to be mappedDATA_ENGINEER
hydra.mapping.rolesToSuperset[1].serviceObjsList of superset roles that the ilum role is mapped to[ Alpha ]
hydra.mapping.rolesToAirflow[0].ilumObjName of ilum role to be mappedADMIN
hydra.mapping.rolesToAirflow[0].serviceObjsList of airflow roles that the ilum role is mapped to[ Admin ]
hydra.mapping.rolesToAirflow[1].ilumObjName of ilum role to be mappedDATA_ENGINEER
hydra.mapping.rolesToAirflow[1].serviceObjsList of airflow roles that the ilum role is mapped to[ User ]
hydra.mapping.rolesToGrafana[0].ilumObjName of ilum role to be mappedADMIN
hydra.mapping.rolesToGrafana[0].serviceObjsList of grafana roles that the ilum role is mapped to[ Admin ]
hydra.mapping.rolesToGrafana[1].ilumObjName of ilum role to be mappedDATA_ENGINEER
hydra.mapping.rolesToGrafana[1].serviceObjsList of grafana roles that the ilum role is mapped to[ Editor ]
hydra.mapping.rolesToMinio[*].ilumObjName of ilum role to be mapped``
hydra.mapping.rolesToMinio[*].serviceObjsList of minio policies that the ilum role is mapped to``
hydra.mapping.rolesToSuperset[*].ilumObjName of ilum role to be mapped``
hydra.mapping.rolesToSuperset[*].serviceObjsList of superset roles that the ilum role is mapped to``
hydra.mapping.rolesToAirflow[*].ilumObjName of ilum role to be mapped``
hydra.mapping.rolesToAirflow[*].serviceObjsList of airflow roles that the ilum role is mapped to``
hydra.mapping.rolesToGrafana[*].ilumObjName of ilum role to be mapped``
hydra.mapping.rolesToGrafana[*].serviceObjsList of grafana roles that the ilum role is mapped to``
hydra.mapping.rolesToGitea[*].ilumObjName of ilum role to be mapped``
hydra.mapping.rolesToGitea[*].serviceObjsList of gitea roles that the ilum role is mapped to``

Feature

Integrated minio with Hydra OIDC in values.yaml by adding new environment variables with oidc client data taken from global.security.hydra

Values added - minio

| minio.extraEnvVars | | |

NameOld valueNew Value
minio.extraEnvVars......

Feature

Integrated airflow with Hydra OIDC in values.yaml

Values added - airflow

NameDescriptionValue
airflow.webserver.extraVolumes[0].nameName of additional airflow volume with oidc configoauth-secret-volume
airflow.webserver.extraVolumes[0].secret.secretNameAirflow secret with hydra oidc client configilum-hydra-client-secret
airflow.webserver.extraVolumeMounts[0].nameName of volume-mount of secret with oidc configoauth-secret-volume
airflow.webserver.extraVolumeMounts[0].mountPathPath for volume-mount of secret with oidc config/opt/airflow/client-secret
airflow.webserver.extraVolumeMounts[0].readOnlyreadonly flag of volume mount with oidc configtrue

Feature

Integrated grafana with Hydra OIDC in values.yaml

Values added - grafana

NameDescriptionValue
grafana.grafana.ini.auth.generic_oauth.enabledFlag to enable oauth in grafana, taken from global.security.hydra.enabled by defaultfalse
grafana.grafana.ini.auth.generic_oauth.nameName of oauth clientIlum
grafana.grafana.ini.auth.generic_oauth.allow_sign_upFlag to enable user creation when signing in with oauthtrue
grafana.grafana.ini.auth.generic_oauth.client_idId of oauth client, taken from global.security.hydra.clientId by defaultilum-client
grafana.grafana.ini.auth.generic_oauth.client_secretSecret of oauth client, taken from global.security.hydra.clientSecret by defaultsecret
grafana.grafana.ini.auth.generic_oauth.scopesScopes requested from oauthopenid profile email offline_access
grafana.grafana.ini.auth.generic_oauth.auth_urlUrl used to initiate oauth authentication, uses global.security.hydra.uiUrl as base by default/external/hydra/oauth2/auth
grafana.grafana.ini.auth.generic_oauth.token_urlUrl used for tokens exchange in oauth workflow, uses global.security.hydra.uiUrl as base by default/external/hydra/oauth2/token
grafana.grafana.ini.auth.generic_oauth.api_urlUrl used to access user info, uses global.security.hydra.uiUrl as base by default/external/hydra/userinfo
grafana.grafana.ini.auth.generic_oauth.login_attribute_pathId token claim used to distinguish different usersuserId
grafana.grafana.ini.auth.generic_oauth.email_attribute_nameId token claim with emailemail
grafana.grafana.ini.auth.generic_oauth.role_attribute_pathExpression used to map roles from id_token to grafana...
grafana.grafana.ini.auth.generic_oauth.role_attribute_strictFlag to require the role during sign uptrue

Feature

Integrated superset with Hydra OIDC in values.yaml

Values added - superset

NameDescriptionValue
superset.configOverrides.ilum_oauth_securityCode added to superset config in order to enable oidc...
superset.extraVolumes[0].nameName of extra volume with a secret for oidc connectionoauth-secret-volume
superset.extraVolumes[0].secret.secretNameName of secret used in extra volume for oidc connectionilum-hydra-client-secret
superset.extraVolumes[1].nameName of extra volume with superset plugin used to enable oidcoauth-plugin-volume
superset.extraVolumes[1].secret.secretNameSecret with superset plugin used to enable oidcilum-superset-oidc-plugin-secret
superset.extraVolumeMounts[0].nameName of volume mount with oidc secret dataoauth-secret-volume
superset.extraVolumeMounts[0].mountPathPath of volume mount with oidc secret data/app/pythonpath/oauth
superset.extraVolumeMounts[1].nameName of volume mount with a superset plugin as a python fileoauth-plugin-volume
superset.extraVolumeMounts[1].mountPathPath of volume mound with a superset plugin/app/pythonpath/security

2. Addition of examples for ilum-core and superset

Feature:

Added examples for Ilum modules. New Ilum users can use these examples to quickly understand how to use Ilum modules like ilum-sql, superset and others.

Values added - ilum-core

NameDescriptionValue
examples.jobEnables creating single job exampletrue
examples.scheduleEnables creating schedule exampletrue
examples.sqlNotebookEnables creating sql notebook exampletrue
examples.sqlQueryEnables creating sql query exampletrue
examples.databaseEnables creating database exampletrue

Values added - ilum-aio

NameDescriptionValue
ilum-core.examples.jobEnables creating single job exampletrue
ilum-core.examples.scheduleEnables creating schedule exampletrue
ilum-core.examples.sqlNotebookEnables creating sql notebook exampletrue
ilum-core.examples.sqlQueryEnables creating sql query exampletrue
ilum-core.examples.databaseEnables creating database exampletrue
superset.extraEnv.IMPORT_DASHBOARDEnables creating superset dashboard exampletrue
superset.extraVolumes[2].nameVolume name for dashboard importexample-dashboard
superset.extraVolumes[2].configMap.nameConfigMap that contains base64-encoded dashboardilum-superset-example-dashboard
superset.extraVolumeMounts[2].nameMount name for example dashboard configexample-dashboard
superset.extraVolumeMounts[2].mountPathPath in container to mount the dashboard config/config
superset.extraVolumeMounts[2].readOnlyMount config as read-onlytrue
superset.init.initscriptCustom init script to conditionally import dashboardSee script in ilum-aio values file

3. Internal users upgrade credentials flag

Values added - ilum-core

NameDescriptionValue
ilum-core.security.internal.upgradeCredentialsEnables overriding user password with helm configurationfalse

4. Tighter integration of Marquez with Ilum

Feature:

Enhanced Marquez integration with ilum-core, which means no direct communication between ilum-frontend and Marquez is needed anymore. This way, having a customized Marquez build is not necessary anymore.

Values changed - ilum-core

NameOld valueNew Value
job.openLineage.transport.endpoint/external/lineage/api/v1/lineage/api/v1/lineage

5. Changed superset load example variable name

Values deleted - ilum-aio

NameReason
superset.extraEnv.IMPORT_DASHBOARDChanged to other variable name

Values added - ilum-aio

NameDescriptionValue
superset.init.loadExamplesEnables creating superset dashboard exampletrue

RELEASE 6.3.2

1. Addition of frequently used values to ilum-sql

Feature:

Added frequently used values to ilum-sql chart, so that their configuration is easier.

Values added - ilum-sql

NameDescriptionValue
config.kyuubi.logLevelBase log-level of the log4j frameworkINFO
config.kyuubi.idleEngineTimeoutAuto-shutdown time of Kyuubi engines30M
config.kyuubi.idleSessionTimeoutAuto-shutdown time of Kyuubi sessions30M
config.kyuubi.engineAliveProbeWhether to create a probe, which will check engine livenesstrue
config.kyuubi.cleanupTerminatedSparkDriverPodsDetermines which of the terminated Spark engine pods will get deleted. Available: NONE, COMPLETED, ALLALL

Values changed - ilum-aio

NameOld valueNew Value
ilum-sql.config.kyuubi.defaultssee values.yaml~

⚠️⚠️⚠️ Warnings

Because these values were already present in the ilum-aio chart, the change will not be noticeable for users who have changed the value of ilum-sql.config.kyuubi.defaults.

2. Support of Trino in ilum-sql

Feature:

Introduced support for Trino as an SQL engine in ilum-sql chart.

Values added - ilum-aio

NameDescriptionValue
trino.enabledEnables built-in Trinofalse
trino.nameOverrideSets the name overrideilum-trino
trino.coordinatorNameOverrideSets the name override for the coordinatorilum-trino-coordinator
trino.workerNameOverrideSets the name override for the worker nodesilum-trino-worker
trino.server.workersSets the number of workers1
trino.catalogs.ilum-deltaConfigures the 'ilum-delta' catalogSee values.yaml
ilum-sql.config.trino.catalogThe catalog of choice for Trinoilum-delta

Values added - ilum-sql

NameDescriptionValue
config.trino.urlUrl pointing to Trino coordinatorhttp://ilum-trino:8080
config.trino.catalogThe catalog of choice for Trinosystem
config.trino.defaultsAdditional settings of Trino engines. All properties must be prefixed with trino.~

3. Enhanced Oauth2

Feature

Added users, groups and roles mapping during authentication from OAuth2 Autherization server to Ilum Core. Added ability to assign Admin role to oauth2 users.

Values added - ilum-core

NameDescriptionValue
security.oauth2.mapping.idJWT claim that should be mapped to user`s id""
security.oauth2.mapping.nameJWT claim that should be mapped to user`s namesub
security.oauth2.mapping.emailJWT claim that should be mapped to user`s emailemail
security.oauth2.mapping.fullnameJWT claim that should be mapped to user`s fullnamefullname
security.oauth2.mapping.descriptionJWT claim that should be mapped to user`s description""
security.oauth2.mapping.departmentJWT claim that should be mapped to user`s department""
security.oauth2.mapping.groupsJWT claim with a list of groups that user is a part of represented by strings"groups"
security.oauth2.mapping.rolesJWT claim with a list of roles that user uses represented by strings"roles"
security.oauth2.mapping.enabledJWT claim that should be mapped to user`s state""
security.oauth2.mapping.enabledTrueValue of JWT claim with the name of mapping.enabled that stands for ENABLED""
security.oauth2.mapping.singleGroupJWT claim that contains a string with name of group that the user is part of""
security.oauth2.mapping.singleRoleJWT claim that contains a string with name of role that the user has""

4. Addition of kubernetes s3 region to ilum-core and ilum-aio

Feature:

Added the ability to set the S3 region in ilum-core.

Values added - ilum-core

NameDescriptionValue
kubernetes.s3.regiondefault kubernetes cluster S3 storage region to store spark resourcesus-east-1

Values added - ilum-aio

NameDescriptionValue
ilum-core.kubernetes.s3.regiondefault kubernetes cluster S3 storage region to store spark resourcesus-east-1
ilum-core.kubernetes.defaultCluster.config.spark.hadoop.fs.s3a.bucket.ilum-data.regiondefault kubernetes cluster S3 storage region to store spark resourcesus-east-1

5. Protocol in superset

Feature:

Added the ability to set the protocol in superset.

Values added - superset

NameDescriptionValue
protocolsuperset protocolhttp

6. Addition of hive metastore status probe to ilum-core helm chart

Feature:

Added possibility to enable status probe for hive metastore.

Values added - ilum-core

NameDescriptionValue
hiveMetastore.statusProbe.enabledHive metastore status probe enabled flagfalse
hiveMetastore.statusProbe.imageHive metastore status probe imagecurlimages/curl:8.5.0
hiveMetastore.statusProbe.hostHive metastore status probe hostilum-hive-metastore
hiveMetastore.statusProbe.portHive metastore status probe port9083

RELEASE 6.3.1

1. Added extra buckets to storage config

Feature

Added ability to include extra buckets to ilum cluster spark storage configuration.

Values added - ilum-core

NameDescriptionValue
kubernetes.s3.extraBucketsilum-core default kubernetes cluster S3 storage extra buckets to include[]
kubernetes.gcs.extraBucketsilum-core default kubernetes cluster GCS storage extra buckets to include[]
kubernetes.wasbs.extraContainersilum-core default kubernetes cluster WASBS storage extra containers to include[]
kubernetes.hdfs.extraCatalogsilum-core default kubernetes cluster HDFS storage extra catalogs to include[]

2. Enhanced LDAP

Added the ability to map users, groups, and roles — along with their properties and relationships — from an LDAP server to Ilum Core based on mapping configurations in Helm. Enabled the option to assign Admin role to LDAP users.

Values added - ilum-core

NameDescriptionValue
security.ldap.userMapping.baseLDAP base of user entries""
security.ldap.userMapping.filterLDAP filter used for users search"uid={0}"
security.ldap.userMapping.usernameName of LDAP attribute that should be mapped to user`s usernameuid
security.ldap.userMapping.passwordName of LDAP attribute that should be mapped to user`s passworduserPassword
security.ldap.userMapping.descriptionName of LDAP attribute that should be mapped to user`s description""
security.ldap.userMapping.fullnameName of LDAP attribute that should be mapped to user`s fullname""
security.ldap.userMapping.departmentName of LDAP attribute that should be mapped to user`s department""
security.ldap.userMapping.emailName of LDAP attribute that should be mapped to user`s email""
security.ldap.userMapping.enabledName of LDAP attribute that should be mapped to user`s state""
security.ldap.userMapping.enabledValueValue of attribute with the name of userMapping.enabled that stands for ENABLED""
security.ldap.groupMapping.baseLDAP base for group entries""
security.ldap.groupMapping.filterLDAP filter used for groups search(member={0})
security.ldap.groupMapping.nameName of LDAP attribute that should be mapped to group`s namecn
security.ldap.groupMapping.descriptionName of LDAP attribute that should be mapped to group`s description""
security.ldap.groupMapping.memberAttributeName of LDAP attribute that lists users having the groupuid
security.ldap.groupMapping.rolesLDAP attribute that lists the roles that the group includes""
security.ldap.groupMapping.roleFilterAttributeLDAP attribute of roles that represents a role in groupMapping.roles attribute""
security.ldap.groupMapping.enabledName of LDAP attribute that should be mapped to group`s state""
security.ldap.groupMapping.enabledTrueValue of attribute from groupMapping.enabled that stands for ENABLED""
security.ldap.roleMapping.baseLDAP base for role entries""
security.ldap.roleMapping.filterLDAP filter used for roles search""
security.ldap.roleMapping.memberAttributeName of LDAP attribute that lists users having the role""
security.ldap.roleMapping.nameName of LDAP attribute that should be mapped to role`s name""
security.ldap.roleMapping.descriptionName of LDAP attribute that should be mapped to role`s description""
security.ldap.roleMapping.enabledName of LDAP attribute that should be mapped to role`s state""
security.ldap.roleMapping.enabledTrueValue of attribute from roleMapping.enabled that stands for ENABLED""

Values deleted - ilum-core

NameReason
security.ldap.userSearchReplaced with security.ldap.userMapping
security.ldap.groupSearchReplaced with security.ldap.groupMapping

Names changed - ilum-core

Old NameNew Name
security.internal.users[*].passwordsecurity.internal.users[*].initialPassword

3. sparkmagic default config

Values changed - ilum-jupyter configuration parameters change because of the introduction of the spark session form.

NameOld valueNew Value
sparkmagic.config.sessionConfigs.conf'{ "pyRequirements": "pandas", "cluster": "default", "autoPause": "false", "spark.example.config": "You can change the default configuration in ilum-jupyter-config k8s configmap" }''{}'

Values deleted - ilum-jupyter

NameReason
sparkmagic.config.sessionConfigs.executorCoresNot needed anymore because of the new spark session form

Values deleted - ilum-jupyter

NameReason
sparkmagic.config.sessionConfigs.driverMemoryNot needed anymore because of the new spark session form

RELEASE 6.3.0

1. Changed image tag version of kyuubi

Values changed - sparkmagic configuration parameters

NameOld valueNew Value
sparkmagic.config.sessionConfigs.conf'{ "pyRequirements": "pandas", "spark.example.config": "You can change the default configuration in ilum-jupyter-config k8s configmap" }''{ "pyRequirements": "pandas", "cluster": "default", "autoPause": "false", "spark.example.config": "You can change the default configuration in ilum-jupyter-config k8s configmap" }'

2. Added property to set kafka address for ilum-core

Feature

Added ability to set kafka address for ilum-core pod, separate from global kafka address configuration for both spark jobs and ilum-core pod set via kafka.address property.

Values added - ilum-core

NameDescriptionValue
kafka.ilum.addressilum-core kafka address only for ilum-core pod, overrides kafka.addressnot defined

3. Changed ilum job healthcheck tolerance time

Values changed - ilum job healthcheck configuration parameters

NameOld valueNew Value
job.healthcheck.tolerance1203600

4. Introducing embedded git repo

Feature

Added Gitea as a module providing build in git server for ilum platform.

Values added - gitea

NameDescriptionValue
gitea.enabledEnable or disable Gitea deploymenttrue
gitea.image.rootlessRun Gitea in rootless modefalse
gitea.gitea.config.database.DB_TYPEDatabase type used for Giteapostgres
gitea.gitea.config.database.HOSTDatabase host and port for Giteailum-postgresql-hl:5432
gitea.gitea.config.database.NAMEDatabase name for Giteagitea
gitea.gitea.config.database.USERDatabase username for Giteailum
gitea.gitea.config.database.PASSWDDatabase password for Gitea (Change required)CHANGEMEPLEASE
gitea.gitea.admin.existingSecretGitea secret to store init credentialsilum-git-credentials
gitea.gitea.admin.emailGitea admin emaililum@ilum
gitea.gitea.admin.passwordModePassword mode for admin accountinitialOnlyNoReset
gitea.gitea.additionalConfigFromEnvs[0].nameEnable push-create userGITEA__REPOSITORY__ENABLE_PUSH_CREATE_USER
gitea.gitea.additionalConfigFromEnvs[0].valueValue for enabling push-create usertrue
gitea.gitea.additionalConfigFromEnvs[1].nameEnable push-create organizationGITEA__REPOSITORY__ENABLE_PUSH_CREATE_ORG
gitea.gitea.additionalConfigFromEnvs[1].valueValue for enabling push-create organizationtrue
gitea.gitea.additionalConfigFromEnvs[2].nameDefault repository branchGITEA__REPOSITORY__DEFAULT_BRANCH
gitea.gitea.additionalConfigFromEnvs[2].valueValue for default repository branchmaster
gitea.gitea.additionalConfigFromEnvs[3].nameRoot URL of the Gitea serverGITEA__SERVER__ROOT_URL
gitea.gitea.additionalConfigFromEnvs[3].valueValue for Gitea server root URLhttp://git.example.com/external/gitea/
gitea.gitea.additionalConfigFromEnvs[4].nameStatic URL prefixGITEA__SERVER__STATIC_URL_PREFIX
gitea.gitea.additionalConfigFromEnvs[4].valueValue for static URL prefix/external/gitea/
gitea.redis-cluster.enabledEnable or disable Redis clusterfalse
gitea.redis.enabledEnable or disable Redisfalse
gitea.postgresql.enabledEnable or disable standalone PostgreSQLfalse
gitea.postgresql-ha.enabledEnable or disable PostgreSQL HAfalse

Values added - ilum-jupyter

NameDescriptionValue
ilum-jupyter.git.enabledEnable or disable Git integrationfalse
ilum-jupyter.git.usernameGit username for authenticationilum
ilum-jupyter.git.passwordGit password for authenticationilum
ilum-jupyter.git.emailGit email addressilum@ilum
ilum-jupyter.git.repositoryGit repository namejupyter
ilum-jupyter.git.addressGit server addressilum-gitea-http:3000
ilum-jupyter.git.init.imageGit initialization imagebitnami/git:2.48.1

Values added - ilum-airflow

NameDescriptionValue
airflow.dags.gitSync.enabledEnable or disable Git synchronization for DAGstrue
airflow.dags.gitSync.repoGit repository URL for DAGshttp://ilum-gitea-http:3000/ilum/airflow.git
airflow.dags.gitSync.branchGit branch to sync frommaster
airflow.dags.gitSync.refGit reference to syncHEAD
airflow.dags.gitSync.depthGit clone depth1
airflow.dags.gitSync.maxFailuresMaximum allowed synchronization failures0
airflow.dags.gitSync.subPathSubpath within the repository to sync""
airflow.dags.gitSync.credentialsSecretSecret used for Git authenticationilum-git-credentials

5. Ilum SQL configuration naming changes

Change the naming of Ilum Sql Configuration to better reflect the current usage of Kyuubi

Names changed - ilum-core

Old NameNew Name
kyuubi.*sql.*

Names changed - ilum-aio

Old NameNew Name
ilum-kyuubi.*ilum-sql.*

⚠️⚠️⚠️ Warnings

Due to the changes in naming and in the inner workings of the SQL engine launching, and restrictions on what can be done via a helm upgrade, it is required to manually delete the old stateful set (e.g. kubectl delete sts ilum-sql) before upgrading to this version. This will ensure that during the update, a new stateful set is created with the correct configuration. The breaking changes are related to the labels and volume mounts that are used by the ilum-sql stateful set.

6. Add configurations for Ilum Submit for Spark Sql engines

Ilum Submit enhances the process of launching Spark SQL engines via both the Ilum Web Application and the JDBC endpoint by automatically applying the configurations of the selected cluster. This improvement eliminates the need to manually provide Kyuubi's Spark configuration to Ilum Core.

Valued deleted - ilum-core

NameReason
sql.sparkConfigUnnecessary after the change

Values added - ilum-kyuubi

NameDescriptionValue
ilumSubmit.enabledFlag to enable ilum submit servicefalse
ilumSubmit.ilum.hostHost of Ilum REST serviceilum-core
ilumSubmit.ilum.portPort of Ilum REST service9888

Values added - ilum-aio

NameDescriptionValue
ilum-sql.ilumSubmit.enabledFlag to enable SQL engine creation through Ilumtrue

⚠️⚠️⚠️ Warnings

Since Kyuubi's Spark config is not needed in Ilum Core anymore, the default spark config should be supplied directly to ilum-sql.config.spark.defaults instead of the global value.

Feature

Security‑related configuration (including internal user credentials, LDAP, OAuth2, JWT, and authorities settings) has been moved from the config map to a dedicated Kubernetes Secret. This improves the security of sensitive data by isolating it from non‑sensitive configuration.

Values added - ilum-core

NameDescriptionValue
security.secret.nameName of the secret that holds security‑related configuration. Use this to override the default secret name.ilum-security

8. Changed ilum-ui service type

Because of the problems with kubectl port-forward we are exposing a NodePort by default.

Values changed - ilum-ui healthcheck configuration parameters

NameOld valueNew Value
service.typeClusterIPNodePort
service.nodePort``31777

RELEASE 6.2.1

1. Change the value of Kyuubi's url

Feature

Change the value of Kyuubi's url in ilum-core. The default value should work now out of the box.

Values changed - ilum-core

NameOld valueNew Value
kyuubi.hostilum-sql-restilum-sql-headless

RELEASE 6.2.1-RC1

1. Spark job's memory settings configuration in ilum-core

Feature

Added spark job's memory settings configuration in ilum-core. When default cluster in ilum-core is being created, it will have memory settings parameters set to those values.

Values added - ilum-core

NameDescriptionValue
job.memorysettings.executorsspark jobs executor count2
job.memorysettings.executorMemoryspark jobs executor memory allocation1g
job.memorysettings.driverMemoryspark jobs driver memory allocation1g
job.memorysettings.executorCoresspark jobs executor core count1
job.memorysettings.driverCoresspark jobs driver core count1
job.memorysettings.dynamicAllocationEnabledspark jobs dynamic allocation enabled flagfalse
job.memorysettings.minExecutorsspark jobs minimum number of executors0
job.memorysettings.initialExecutorsspark jobs initial number of executors0
job.memorysettings.maxExecutorsspark jobs maximum number of executors20

2. Spark history server retention parameters addition

Feature

Added spark history server retention parameters to ilum-core. These parameters allow the user to configure the retention of spark history server logs.

Values added - ilum-core

NameDescriptionValue
historyServer.parameters.spark.history.fs.cleaner.enabledhistory server cleaner enabled flagtrue
historyServer.parameters.spark.history.fs.cleaner.intervalhistory server cleaner interval1d
historyServer.parameters.spark.history.fs.cleaner.maxAgehistory server logs max age7d

3. Split Kyuubi's url into host and port

Feature

Split Kyuubi's url into host and port in ilum-core. This change was necessary for us to be able to create custom engines.

Values added - ilum-core

NameDescriptionValue
kyuubi.hostKyuubi hostilum-sql-rest
kyuubi.portKyuubi port10099

Values deleted - ilum-core

NameReason
kyuubi.urlUnnecessary after the change

4. Extra entries in helm_ui nginx server config map

Feature

Added enabled flags for history server, minio, ilum-jupyter, airflow, mlflow and lineage to ilum-ui. These flags allow the user to enable or disable the access to these services through ilum-ui. These values will be used in nginx server config map.

Values added - ilum-ui chart

NameDescriptionValue
nginx.config.ilum-jupyter.enabledilum-ui nginx config ilum-jupyter enabled flagfalse
nginx.config.airflow.enabledilum-ui nginx config airflow enabled flagfalse
nginx.config.minio.enabledilum-ui nginx config minio enabled flagfalse
nginx.config.historyServer.enabledilum-ui nginx config historyServer enabled flagfalse
nginx.config.mlflow.enabledilum-ui nginx config mlflow enabled flagfalse
nginx.config.lineage.enabledilum-ui nginx config lineage enabled flagfalse

5. Superset in ilum-aio chart

Feature

Superset in ilum AIO chart. Superset is fast, lightweight, intuitive, and loaded with options that make it easy for users of all skill sets to explore and visualize their data, from simple line charts to highly detailed geospatial charts. Superset is one of modules integrated with Ilum platform.

Values added - ilum-ui

log aggregation config
NameDescriptionValue
runtimeVars.supersetUrlsuperset service urlhttp://ilum-superset:8088/
nginx.config.superset.enabledilum-ui nginx config superset enabled flagfalse

4. Ilum default kubernetes cluster config from helm values

Feature

From now on, the default ilum cluster parameters will be set based on the helm values.

Values added - ilum-core chart

NameDescriptionValue
kubernetes.defaultCluster.configilum-core default kubernetes cluster configurationconfig:
  spark.driver.extraJavaOptions: "-Divy.cache.dir=/tmp -Divy.home=/tmp"
  spark.kubernetes.container.image: "ilum/spark:3.5.2-delta"
  spark.databricks.delta.catalog.update.enabled: "true"

RELEASE 6.2.0

1. Changed image tag version of kyuubi

Values changed - ilum-kyuubi chart

NameOld valueNew Value
image.tag1.9.2-spark1.10.0-spark

2. Changed kyuubi spark configuration in ilum-kyuubi chart

Added spark.driver.memory=2g in global.kyuubi.sparkConfig

RELEASE 6.2.0-RC2

1. Minio status probe addition

Feature

Added status probe in ilum-core that checks whether minio storage is ready

Values added - ilum-core

NameDescriptionValue
minio.statusProbe.enabledminio status probe enabled flagtrue
minio.statusProbe.imageminio status probe imagecurlimages/curl:8.5.0
minio.statusProbe.baseUrlminio base url"http://ilum-minio:9000"

2. Kyuubi configuration in ilum-core

Feature

Added Kyuubi configuration in ilum-core helm chart. Kyuubi will allow the user to execute SQL queries on many different data sources using ILUM UI.

Values added - ilum-core

NameDescriptionValue
kyuubi.enabledKyuubi enabled flagtrue
kyuubi.urlUrl of Kyuubi's rest servicehttp://ilum-sql-rest:10099

⚠️⚠️⚠️ Warnings

In order to properly manage SQL engines, we need to pass Kyuubi's spark configuration to ilum-core. This is done by configuring Kyuubi's spark in global.kyuubi.sparkConfig and allows the user to write one configuration which can be passed to both Kyuubi and ilum-core.

3. MongoDb uri configuration in ilum-core

Feature

Change the way mongoDb uri is passed to ilum-core. Now it is passed as a single string, which enables the user to provide more granular configuration such as authSource.

Values added - ilum-core

NameDescriptionValue
mongo.uriMongoDb connection stringmongodb://mongo:27017/ilum-default?replicaSet=rs0

Values deleted - ilum-core

NameReason
mongo.instancesUnnecessary after the change
mongo.replicaSetNameUnnecessary after the change

⚠️⚠️⚠️ Warnings

The mongo.uri, if set incorrectly, will cause the application to not work properly. Make sure to provide the correct connection string.

Previously the format was: mongodb://{ mongo.instances }/ilum-{ release_namespace }?replicaSet={ mongo.replicaSetName } By default in the ilum-aio chart these values were:

  • mongo.instances - ilum-mongodb-0.ilum-mongodb-headless:27017,ilum-mongodb-1.ilum-mongodb-headless:27017
  • mongo.replicaSetName - rs0
  • release_namespace - default

4. Autopausing configuration in ilum-core

Feature

Added autopausing in ilum-core, which periodically checks if any groups are idle for the specified time and pauses the group. Each group has to have autopausing exclicitly turned on for this to take place.

Values added - ilum-core

NameDescriptionValue
job.autoPause.enabledFeature flag to enable auto pausingtrue
job.autoPause.periodInterval in seconds to check the idleness groups180
job.autoPause.idleTimeTime in seconds that the group needs to be idle to be auto paused3600

5. Graphite exporter in ilum-aio chart

Feature

Graphite exporter in ilum AIO chart and Graphite configuration in ilum-core chart. Graphite exporter is a Prometheus exporter for metrics exported in the Graphite plaintext protocol.

Values added - graphite-exporter

Newly added whole chart, check its values on the chart's page

6. Graphite configuration in ilum-core

Feature

Added Graphite configuration in ilum-core helm chart. Graphite will allow Spark jobs to send their metrics to graphite sink, which will be scraped by Prometheus.

Values added - ilum-core

NameDescriptionValue
job.graphite.enabledGraphite enabled flagfalse
job.graphite.hostGraphite hostilum-graphite-graphite-tcp
job.graphite.portGraphite port9109
job.graphite.periodInterval between sending job metrics10
job.graphite.unitsTime unitseconds

RELEASE 6.1.4

1. Jupyter default sparkmagic configuration change

Feature

Changed method of passing spark default configs to jupyter notebook, now it is passed as json string

Values added - ilum-jupyter

sparkmagic configuration parameters
NameDescriptionValue
sparkmagic.config.sessionConfigs.confsparkmagic session spark configuration'{ "pyRequirements": "pandas", "spark.jars.packages": "io.delta:delta-core_2.12:2.4.0", "spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension", "spark.sql.catalog.spark_catalog": "org.apache.spark.sql.delta.catalog.DeltaCatalog"}'
sparkmagic.config.sessionConfigsDefaults.confsparkmagic session defaults spark configuration'{ "pyRequirements": "pandas", "spark.jars.packages": "io.delta:delta-core_2.12:2.4.0", "spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension", "spark.sql.catalog.spark_catalog": "org.apache.spark.sql.delta.catalog.DeltaCatalog"}'

2. Kyuubi in ilum-aio chart

Feature

Kyuubi in ilum AIO chart. Kyuubi is a distributed multi-tenant gateway providing SQL query services for data warehouses and lakehouses. It provides both JDBC and ODBC interfaces, and a REST API for clients to interact with.

Values added - ilum-kyuubi

Newly added whole chart, check its values on the chart's page

RELEASE 6.1.3

1. Jupyter configuration and persistent storage

Feature

Added extended configuration of jupyter notebook helm chart through helm values. Moreover added persitent storage to jupyter pod. All data saved in work directory will now be available after jupyter restart/update.

Values added - ilum-jupyter

pvc parameters
NameDescriptionValue
pvc.annotationspersistent volume claim annotations{}
pvc.selectorpersistent volume claim selector{}
pvc.accessModespersistent volume claim accessModesReadWriteOnce
pvc.storagepersistent volume claim storage requests4Gi
pvc.storageClassNamepersistent volume claim storageClassName``
sparkmagic configuration parameters
NameDescriptionValue
sparkmagic.config.kernelPythonCredentials.usernamesparkmagic python kernel username""
sparkmagic.config.kernelPythonCredentials.passwordsparkmagic python kernel password""
sparkmagic.config.kernelPythonCredentials.authsparkmagic python kernel auth mode"None"
sparkmagic.config.kernelScalaCredentials.usernamesparkmagic python kernel username""
sparkmagic.config.kernelScalaCredentials.passwordsparkmagic scala kernel password""
sparkmagic.config.kernelScalaCredentials.authsparkmagic scala kernel auth mode"None"
sparkmagic.config.kernelRCredentials.usernamesparkmagic r kernel username""
sparkmagic.config.kernelRCredentials.passwordsparkmagic r kernel password""
sparkmagic.config.waitForIdleTimeoutSecondssparkmagic timeout waiting for idle state15
sparkmagic.config.livySessionStartupTimeoutSecondssparkmagic timeout waiting for the session to start300
sparkmagic.config.ignoreSslErrorssparkmagic ignore ssl errors flagfalse
sparkmagic.config.sessionConfigs.confsparkmagic session spark configuration[pyRequirements: pandas, spark.jars.packages: io.delta:delta-core_2.12:2.4.0, spark.sql.extensions: io.delta.sql.DeltaSparkSessionExtension,spark.sql.catalog.spark_catalog: org.apache.spark.sql.delta.catalog.DeltaCatalog]
sparkmagic.config.sessionConfigs.driverMemorysparkmagic session driver memory1000M
sparkmagic.config.sessionConfigs.executorCoressparkmagic session executor cores2
sparkmagic.config.sessionConfigsDefaults.confsparkmagic session defaults spark configuration[pyRequirements: pandas, spark.jars.packages: io.delta:delta-core_2.12:2.4.0, spark.sql.extensions: io.delta.sql.DeltaSparkSessionExtension,spark.sql.catalog.spark_catalog: org.apache.spark.sql.delta.catalog.DeltaCatalog]
sparkmagic.config.sessionConfigsDefaults.driverMemorysparkmagic session defaults driver memory1000M
sparkmagic.config.sessionConfigsDefaults.executorCoressparkmagic session defaults executor cores2
sparkmagic.config.useAutoVizsparkmagic use auto viz flagtrue
sparkmagic.config.coerceDataframesparkmagic coerce dataframe flagtrue
sparkmagic.config.maxResultsSqlsparkmagic max sql result2500
sparkmagic.config.pysparkDataframeEncodingsparkmagic pyspark dataframe encodingutf-8
sparkmagic.config.heartbeatRefreshSecondssparkmagic heartbeat refresh seconds30
sparkmagic.config.livyServerHeartbeatTimeoutSecondssparkmagic livy server heartbeat timeout seconds0
sparkmagic.config.heartbeatRetrySecondssparkmagic heartbeat retry seconds10
sparkmagic.config.serverExtensionDefaultKernelNamesparkmagic server extension default kernel namepysparkkernel
sparkmagic.config.retryPolicysparkmagic retry policyconfigurable
sparkmagic.config.retrySecondsToSleepListsparkmagic retry seconds to sleep list[0.2, 0.5, 1, 3, 5]
sparkmagic.config.configurableRetryPolicyMaxRetriessparkmagic retry policy max retries8

RELEASE 6.1.2

1. Hive metastore in ilum-aio chart

Feature

Hive metastore in ilum AIO chart. HMS is a central repository of metadata for Hive tables and partitions in a relational database, and provides clients (including Hive, Impala and Spark) access to this information using the metastore service API. With hive metastore enabled in ilum AIO helm stack spark jobs run by ilum can be configured to autmatically access it.

Values added - ilum-hive-metastore

Newly added whole chart, check its values on chart page

Values added - ilum-core

NameDescriptionValue
hiveMetastore.enabledpassing hive metastore config to ilum spark jobs flagfalse
hiveMetastore.addresshive metastore addressthrift://ilum-hive-metastore:9083
hiveMetastore.warehouseDirhive metastore warehouse directorys3a://ilum-data/

2. Postgres extensions added

Feature

Few of ilum AIO subchars use postgresql, to make it easier to manage deployment of them we have added postgres extension resource to create postgresql databases for ilum sucharts.

Values added - ilum-aio

postgresql extensions parameters
NameDescriptionValue
postgresExtensions.enabledpostgres extensions enabled flagtrue
postgresExtensions.imageimage to run extensions inbitnami/postgresql:16
postgresExtensions.pullPolicyimage pull policyIfNotPresent
postgresExtensions.imagePullSecretsimage pull secrets[]
postgresExtensions.hostpostgresql database hostilum-postgresql-0.ilum-postgresql-hl
postgresExtensions.portpostgresql database port5432
postgresExtensions.databasesToCreatecomma separated list of databases to createmarquez,airflow,metastore
postgresExtensions.auth.usernamepostgresql account usernameilum
postgresExtensions.auth.passwordpostgresql account passwordCHANGEMEPLEASE
postgresExtensions.nodeSelectorpostgresql extensions pods node selector{}
postgresExtensions.tolerationspostgresql extensions pods tolerations[]

3. Loki and promtail in ilum-aio chart

Feature

Loki and promtail in ilum AIO chart. Loki is a horizontally scalable, highly available, multi-tenant log aggregation system inspired by Prometheus. Promtail is an agent which ships the contents of local logs to a Grafana Loki instance. Ilum will now use loki to aggregate logs from spark job pods to be able to clean cluster resources after jobs are done. Loki and promtail are preconfigured to scrap logs only from spark pods run by ilum in order to fetch job logs after their finish.

Values added - ilum-core

log aggregation config
NameDescriptionValue
global.logAggregation.enabledilum log aggregation flag, if enabled Ilum will fetch logs of finished kubernetes spark pods from lokifalse
global.logAggregation.loki.urlloki gateway address to access logshttp://ilum-loki-gateway

Values added - ilum-aio

log aggregation - loki config
NameDescriptionValue
loki.nameOverridesubchart name overrideilum-loki
loki.monitoring.selfMonitoring.enabledself monitoring enabled flagfalse
loki.monitoring.selfMonitoring.grafanaAgent.installOperatorself monitoring grafana agent operator install flagfalse
loki.monitoring.selfMonitoring.lokiCanary.enabledself monitoring canary enabled flagfalse
loki.test.enabledtests enabled flagfalse
loki.loki.auth_enabledauthentication enabled flagfalse
loki.loki.storage.bucketNames.chunksstorage chunks bucketilum-files
loki.loki.storage.bucketNames.rulerstorage ruler bucketilum-files
loki.loki.storage.bucketNames.adminstorage admin bucketilum-files
loki.loki.storage.typestorage types3
loki.loki.s3.endpoints3 storage endpointhttp://ilum-minio:9000
loki.loki.s3.regions3 storage endpointus-east-1
loki.loki.s3.secretAccessKeys3 storage secret access keyminioadmin
loki.loki.s3.accessKeyIds3 storage access key idminioadmin
loki.loki.s3.s3ForcePathStyles3 storage path style access flagtrue
loki.loki.s3.insecures3 storage insecure flagtrue
loki.loki.compactor.retention_enabledlogs retention enabled flagtrue
loki.loki.compactor.deletion_modedeletion modefilter-and-delete
loki.loki.compactor.shared_storeshared stores3
loki.loki.limits_config.allow_deletesallow logs deletion flagtrue
log aggregation - loki config
NameDescriptionValue
promtail.config.clients[0].urlfirst client urlhttp://ilum-loki-write:3100/loki/api/v1/push
promtail.snippets.pipelineStages[0].match.selectorpipeline stage to drop non ilum logs selector{ilum_logAggregation!="true"}
promtail.snippets.pipelineStages[0].match.actionpipeline stage to drop non ilum logs actiondrop
promtail.snippets.pipelineStages[0].match.drop_counter_reasonpipeline stage to drop non ilum logs drop_counter_reasonnon_ilum_log
promtail.snippets.extraRelabelConfigs[0].actionrelabel config to keep ilum pod labels actionlabelmap
promtail.snippets.extraRelabelConfigs[0].regexrelabel config to keep ilum pod labels regex__meta_kubernetes_pod_label_ilum(.*)
promtail.snippets.extraRelabelConfigs[0].replacementrelabel config to keep ilum pod labels replacementilum${1}
promtail.snippets.extraRelabelConfigs[1].actionrelabel config to keep spark pod labels actionlabelmap
promtail.snippets.extraRelabelConfigs[1].regexrelabel config to keep spark pod labels regex__meta_kubernetes_pod_label_spark(.*)
promtail.snippets.extraRelabelConfigs[1].replacementrelabel config to keep spark pod labels replacementspark${1}

RELEASE 6.1.1

1. Added health checks for ilum interactive jobs

Feature

To prevent situations with unexpected crushes of ilum groups we added healthchecks to make sure they work as they should.

Values added - ilum-core

ilum-job parameters
NameDescriptionValue
job.healthcheck.enabledspark interactive jobs healthcheck enabled flagtrue
job.healthcheck.intervalspark interactive jobs healthcheck interval in seconds300
job.healthcheck.tolerancespark interactive jobs healthcheck response time tolerance in seconds120

2. Parameterized replica scale for ilum scalable services

Feature

The configuration of the number of replicas for ilum scalable services was extracted to helm values.

Values added - ilum-core

ilum-core common parameters
NameDescriptionValue
replicaCountnumber of ilum-core replicas1

Values added - ilum-ui

ilum-ui common parameters
NameDescriptionValue
replicaCountnumber of ilum-ui replicas1

RELEASE 6.1.0

1. Deleted unneeded parameters from ilum cluster wasbs storage

Feature

WASBS storage containers no longer needs to have sas token porvided in helm values as it turned out to be unnecessary

Values deleted - ilum-core

wasbs storage parameters
NameReason
kubernetes.wasbs.sparkContainer.nameMoved to kubernetes.wasbs.sparkContainer value
kubernetes.wasbs.sparkContainer.sasTokenTurned out to be unnecessary
kubernetes.wasbs.dataContainer.nameMoved to kubernetes.wasbs.dataContainer value
kubernetes.wasbs.dataContainer.sasTokenTurned out to be unnecessary

Values added - ilum-core

wasbs storage parameters
NameDescriptionValue
kubernetes.wasbs.sparkContainerdefault kubernetes cluster WASBS storage container name to store spark resourcesilum-files
kubernetes.wasbs.dataContainerdefault kubernetes cluster WASBS storage container name to store ilum tablesilum-tables

2. Added init containers to check service availability

Feature

To make Ilum deployment more gracefully, from now on Ilum containers have containers waiting for the availability of the services they depend on.

Values added - ilum-core

NameDescriptionValue
mongo.statusProbe.enabledmongo status probe enabled flagtrue
mongo.statusProbe.imageinit container that waits for mongodb to be available imagemongo:7.0.5
kafka.statusProbe.enabledkafka status probe enabled flagtrue
kafka.statusProbe.imageinit container that waits for kafka to be available imagebitnami/kafka:3.4.1
historyServer.statusProbe.enabledilum history server ilum-core status probe enabled flagtrue
historyServer.statusProbe.imageilum history server init container that waits for ilum-core to be available imagecurlimages/curl:8.5.0

Values added - ilum-livy-proxy

NameDescriptionValue
statusProbe.enabledilum-core status probe enabled flagtrue
statusProbe.imageinit container that waits for ilum-core to be available imagecurlimages/curl:8.5.0

Values added - ilum-ui

NameDescriptionValue
statusProbe.enabledilum-core status probe enabled flagtrue
statusProbe.imageinit container that waits for ilum-core to be available imagecurlimages/curl:8.5.0

3. Parameterized kafka producers in ilum-core chart

Feature

In kafka communication mode ilum interactive jobs responses to interactive job instances using kafka producers. With newly added helm values kafka producer can be adapted to match user needs.

Values added - ilum-core

kafka parameters
NameDescriptionValue
kafka.maxPollRecordskafka max.poll.records parameter for ilum jobs kafka consumer, it determines how much requests ilum-job kafka consumer will fetch with each poll500
kafka.maxPollIntervalkafka max.poll.interval.ms parameter for ilum jobs kafka consumer, it determines the maximum delay between invocations of poll, which in ilum-job context means time limit for processing requests fetched in poll60000

RELEASE 6.1.0-RC1

1. added support for service annotations

Feature

Ilum helm charts services annotations may now be configured through helm values

Values added - ilum-core

service parameters
NameDescriptionValue
service.annotationsservice annotations{}
grpc.service.annotationsgrpc service annotations{}
historyServer.service.annotationshistory server service annotations{}

Values added - ilum-jupyter

service parameters
NameDescriptionValue
service.annotationsservice annotations{}

Values added - ilum-livy-proxy

service parameters
NameDescriptionValue
service.annotationsservice annotations{}

Values added - ilum-ui

service parameters
NameDescriptionValue
service.annotationsservice annotations{}

Values added - ilum-zeppelin

service parameters
NameDescriptionValue
service.annotationsservice annotations{}

2. Pulled out security oauth2 parameters to global values

Feature

Ilum security oauth2 configuration is now being set through global values

Values added - ilum-aio

security parameters
NameDescriptionValue
global.security.oauth2.clientIdoauth2 client ID``
global.security.oauth2.issuerUrioauth2 URI that can either be an OpenID Connect discovery endpoint or an OAuth 2.0 Authorization Server Metadata endpoint defined by RFC 8414``
global.security.oauth2.audiencesoauth2 audiences``
global.security.oauth2.clientSecretoauth2 client secret``

Values deleted - ilum-core

security parameters
NameReasonValue
security.oauth2.clientIdoauth2 security parameters are now configured through global values``
security.oauth2.issuerUrioauth2 security parameters are now configured through global values``

3. Runtime environment variables for frontend

Feature

Configuration for frontend environment variables throuhg helm ui values.

Values added - ilum-ui

runtime variables
NameDescriptionValue
runtimeVars.defaultConfigMap.enableddefault config map for frontend runtime environment variablestrue
runtimeVars.debugdebug logging flagfalse
runtimeVars.backenUrlilum-core backend urlhttp://ilum-core:9888
runtimeVars.historyServerUrlurl of history server uihttp://ilum-history-server:9666
runtimeVars.jupyterUrlurl of jupyter uihttp://ilum-jupyter:8888
runtimeVars.airflowUrlurl of airflow uihttp://ilum-webserver:8080
runtimeVars.minioUrlurl of minio uihttp://ilum-minio:9001
runtimeVars.mlflowUrlurl of mlflow uihttp://mlflow:5000
runtimeVars.historyServerPathilum-ui proxy path to history server ui/external/history-server/
runtimeVars.jupyterPathilum-ui proxy path to jupyter ui/external/jupyter/lab/tree/work/IlumIntro.ipynb
runtimeVars.airflowPathilum-ui proxy path to airflow ui/external/airflow/
runtimeVars.dataPathilum-ui proxy path to minio ui/external/minio/
runtimeVars.mlflowPathilum-ui proxy path to mlflow ui/external/mlflow/

Values deleted - ilum-ui

NameReason
debugmoved to runtimeVars section
backenUrlmoved to runtimeVars section
historyServerUrlmoved to runtimeVars section
jupyterUrlmoved to runtimeVars section
airflowUrlmoved to runtimeVars section

4. Kube-prometheus-stack in ilum-aio chart

Feature

Kube prometheus stack in ilum AIO chart. Preconfigured to automatically work wiht ilum deployment in order to collect metrics of ilum pods and spark jobs run by ilum. Ilum provides prometheus service monitors to autoamtically scrape metrics from spark driver pods run by ilum and ilum backend services. Additionally ilum_aio chart provides built-in grafana dashboards that can be found in Ilum folder.

Values added - ilum-aio

kube-prometheus-stack variables - for extended configuration check kube-prometheus stack helm chart
NameDescriptionValue
kube-prometheus-stack.enabledkube-prometheus-stack enabled flagfalse
kube-prometheus-stack.releaseLabelkube-prometheus-stack flag to watch resource only from ilum_aio releasetrue
kube-prometheus-stack.kubeStateMetrics.enabledkube-prometheus-stack Component scraping kube state metrics enabled flagfalse
kube-prometheus-stack.nodeExporter.enabledkube-prometheus-stack node exporter daemon set deployment flagfalse
kube-prometheus-stack.alertmanager.enabledkube-prometheus-stack alert manager flagfalse
kube-prometheus-stack.grafana.sidecar.dashboards.folderAnnotationkube-prometheus-stack, If specified, the sidecar will look for annotation with this name to create folder and put graph heregrafana_folder
kube-prometheus-stack.grafana.sidecar.dashboards.provider.foldersFromFilesStructurekube-prometheus-stack, allow Grafana to replicate dashboard structure from filesystemtrue

Values added - ilum-core

NameDescriptionValue
job.prometheus.enabledprometheus enabled flag, If true spark jobs run by Ilum will share metrics in prometheus formattrue

5. Marquez OpenLineage in ilum-aio chart

Feature

Marquez OpenLineage in ilum AIO chart. Marquez enables consuming, storing, and visualizing OpenLineage metadata from across an organization, serving use cases including data governance, data quality monitoring, and performance analytics. With marquez enabled in ilum AIO helm stack spark job run by Ilum will share lineage information with marquez backend. Marquez web interface visualize data lienage information collected from spark jobs and it is accesible through ilum UI as iframe.

Values added - ilum-aio

NameDescriptionValue
global.lineage.enabledmarquez enabled flagfalse

Values added - ilum-core

NameDescriptionValue
job.openLineage.transport.typemarquez communication typehttp
job.openLineage.transport.serverUrlmarquez backend urlhttp://ilum-marquez:9555/
job.openLineage.transport.endpointmarquez backend endpoint/external/lineage/api/v1/lineage

Values added - ilum-marquez

Newly added whole chart, check its values on chart page

Values added - ilum-ui

NameDescriptionValue
runtimeVars.lineageUrlurl to provide marquez openlineage UI iframehttp://ilum-marquez-web:9444
runtimeVars.lineagePathilum-ui proxy path to marquez openlineage UI/external/lineage/

RELEASE 6.0.3

1. Parameterized kafka producers max.request.size parameter in ilum-core chart

Feature

In kafka communication mode ilum interactive jobs responses to interactive job instances using kafka producers. With newly added helm value max.request.size kafka producer parameter can be adapted to match responses size needs.

Values added - ilum-core

kafka parameters
NameDescriptionValue
kafka.requestSizekafka max.request.size parameter for ilum jobs kafka producers20000000

RELEASE 6.0.2

1. Support for hdfs, gcs and azure blob storage in ilum-core chart

Feature

Ilum cluster no longer has to be attached to s3 storage, from now default cluster can be configured to use hdfs, gcs or azure blob as storage as well. It can be achieved using newly added values in ilum-core helm chart.

Values deleted - ilum-core

NameReason
kubernetes.s3.bucketFrom now on two separated buckets must be set with new values: kubernetes.s3.sparkBucket, kubernetes.s3.dataBucket

Values added - ilum-core

kubernetes storage parameters
NameDescriptionValue
kubernetes.upgradeClusterOnStartupdefault kubernetes cluster upgrade from values in config map flagfalse
kubernetes.storage.typedefault kubernetes cluster storage type, available options: s3, gcs, wasbs, hdfss3
s3 kubernetes storage parameters
NameDescriptionValue
kubernetes.s3.hostdefault kubernetes cluster S3 storage host to store spark resourcess3
kubernetes.s3.portdefault kubernetes cluster S3 storage port to store spark resources7000
kubernetes.s3.sparkBucketdefault kubernetes cluster S3 storage bucket to store spark resourcesilum-files
kubernetes.s3.dataBucketdefault kubernetes cluster S3 storage bucket to store ilum tablesilum-tables
kubernetes.s3.accessKeydefault kubernetes cluster S3 storage access key to store spark resources""
kubernetes.s3.secretKeydefault kubernetes cluster S3 storage secret key to store spark resources""
gcs kubernetes storage parameters
NameDescriptionValue
kubernetes.gcs.clientEmaildefault kubernetes cluster GCS storage client email""
kubernetes.gcs.sparkBucketdefault kubernetes cluster GCS storage bucket to store spark resources"ilum-files"
kubernetes.gcs.dataBucketdefault kubernetes cluster GCS storage bucket to store ilum tables"ilum-tables"
kubernetes.gcs.privateKeydefault kubernetes cluster GCS storage private key to store spark resources""
kubernetes.gcs.privateKeyIddefault kubernetes cluster GCS storage private key id to store spark resources""
wasbs kubernetes storage parameters
NameDescriptionValue
kubernetes.wasbs.accountNamedefault kubernetes cluster WASBS storage account name""
kubernetes.wasbs.accessKeydefault kubernetes cluster WASBS storage access key to store spark resources""
kubernetes.wasbs.sparkContainer.namedefault kubernetes cluster WASBS storage container name to store spark resources"ilum-files"
kubernetes.wasbs.sparkContainer.sasTokendefault kubernetes cluster WASBS storage container sas token to store spark resources""
kubernetes.wasbs.dataContainer.namedefault kubernetes cluster WASBS storage container name to store ilum tables"ilum-tables"
kubernetes.wasbs.dataContainer.sasTokendefault kubernetes cluster WASBS storage container sas token to store ilum tables""
hdfs kubernetes storage parameters
NameDescriptionValue
kubernetes.hdfs.hadoopUsernamedefault kubernetes cluster HDFS storage hadoop username""
kubernetes.hdfs.configdefault kubernetes cluster HDFS storage dict of config files with name as key and base64 encoded content as value""
kubernetes.hdfs.sparkCatalogdefault kubernetes cluster HDFS storage catalog to store spark resources"ilum-files"
kubernetes.hdfs.dataCatalogdefault kubernetes cluster HDFS storage catalog to store ilum-tables"ilum-tables"
kubernetes.hdfs.keyTabdefault kubernetes cluster HDFS storage keytab file base64 encoded content""
kubernetes.hdfs.principaldefault kubernetes cluster HDFS storage principal name""
kubernetes.hdfs.krb5default kubernetes cluster HDFS storage krb5 file base64 encoded content""
kubernetes.hdfs.trustStoredefault kubernetes cluster HDFS storage trustStore file base64 encoded content""
kubernetes.hdfs.logDirectorydefault kubernetes cluster HDFS storage directory absolute path to store eventLog for history server""

Important! Make sure S3/GCS buckets or WASBS containers are already created and reachable!

2. Added spark history server to ilum-core helm chart

Feature

Spark history server can be deployed from now on along with ilum-core. History server config is being passed to every spark job ilum runs. History server UI can now be accesesed by ilum UI. If enabled it will use default kubernetes cluster storage configured with kubernetes.[STORAGE_TYPE].[PARAMETER] values as eventLog storage.

Values added - ilum-core

history server parameters
NameDescriptionValue
historyServer.enabledspark history server flagtrue
historyServer.imagespark history server imageilum/spark-launcher:spark-3.5.3
historyServer.addressspark history server addresshttp://ilum-history-server:9666
historyServer.pullPolicyspark history server image pull policyIfNotPresent
historyServer.imagePullSecretsspark history server image pull secrets[]
historyServer.parametersspark history server custom spark parameters[]
historyServer.resourcesspark history server pod resources
limits:
memory: "500Mi"
requests:
memory: "300Mi"
historyServer.service.typespark history server service typeClusterIP
historyServer.service.portspark history server service port9666
historyServer.service.nodePortspark history server service nodePort""
historyServer.service.clusterIPspark history server service clusterIP""
historyServer.service.loadBalancerIPspark history server service loadbalancerIP""
historyServer.ingress.enabledspark history server ingress flagfalse
historyServer.ingress.versionspark history server ingress version"v1"
historyServer.ingress.classNamespark history server ingress className""
historyServer.ingress.hostspark history server ingress host"host"
historyServer.ingress.pathspark history server ingress path"/(.*)"
historyServer.ingress.pathTypespark history server ingress pathTypePrefix
historyServer.ingress.annotationsspark history server annotationsnginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/proxy-body-size: "600m"
nginx.org/client-max-body-size: "600m"

Warnings

  1. Make sure HDFS logDirectory (helm value kubernetes.hdfs.logDirectory) is absolute path of configured sparkCatalog with /ilum/logs suffix! Eg for kubernetes.hdfs.sparkCatalog=spark-catalog put hdfs://name-node/user/username/spark-catalog/ilum/logs

3. Job retention in ilum-core chart

Feature

Ilum jobs will be deleted after the configured retention period expires

Values added - ilum-core

job retention parameters
NameDescriptionValue
job.retain.hoursspark jobs retention hours limit168