Skip to content

feat: add support for HTTPS and port interpolation on Druid ingestions#234

Open
Rasnar wants to merge 1 commit intodatainfrahq:masterfrom
Rasnar:master
Open

feat: add support for HTTPS and port interpolation on Druid ingestions#234
Rasnar wants to merge 1 commit intodatainfrahq:masterfrom
Rasnar:master

Conversation

@Rasnar
Copy link
Copy Markdown

@Rasnar Rasnar commented Jul 30, 2025

Description

This commit introduces support for HTTPS in the Druid ingestion part of the operator. Previously, the port and protocol used were not configurable, limiting its flexibility. This update enables extrapolating these parameters from cluster-level ConfigMaps.

Key changes made in the patch:

  • Addition of context parameter to GetRouterSvcUrl for improved context management.
  • Creation of functions to parse properties and infer router connection settings from Druid configuration (runtime configs global + overrides for router).

This PR has:

  • been tested on a real K8S cluster to ensure creation of a brand new Druid cluster works.
  • been tested for backward compatibility on a real K8S cluster by applying the changes introduced here on an existing Druid cluster. If there are any backward incompatible changes, then they have been noted in the PR description.
  • added comments explaining the "why" and the intent of the code wherever it would not be obvious for an unfamiliar reader.
  • added documentation for new or modified features or behaviors.

Key changed/added files in this PR
  • controllers/druid/dynamic_config.go
  • controllers/ingestion/reconciler.go
  • pkg/druidapi/druidapi.go
  • pkg/druidapi/druidapi_test.go

@Rasnar Rasnar marked this pull request as draft July 30, 2025 06:58
@Rasnar Rasnar marked this pull request as ready for review July 30, 2025 09:17
@Rasnar
Copy link
Copy Markdown
Author

Rasnar commented Jul 30, 2025

I'm mostly interested in gathering some feedback on this, because currently this information is only specified in the runtimes configs (plain text/tls protocol+port).

If we don't want to parse this config, then we could instead read the Druid ressource linked to the CRD:
https://github.com/datainfrahq/druid-operator/blob/master/config/crd/bases/druid.apache.org_druids.yaml#L3458
here we could just read the druid.port for router, and also then add a new druid.apiProtocol or something like this to know which protocol is used to communicate. This would move the parsing of the config out of the druidapi part.
This would require a new CRD version though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant