Skip to content

Comments

fix(documentStore): allow IRSA AWS usage#5026

Open
leiicamundi wants to merge 5 commits intomainfrom
fix/irsa-document-store
Open

fix(documentStore): allow IRSA AWS usage#5026
leiicamundi wants to merge 5 commits intomainfrom
fix/irsa-document-store

Conversation

@leiicamundi
Copy link
Contributor

Which problem does the PR fix?

Customer wants to use AWS Document Store with IRSA (IAM Roles for Service Accounts), but the Helm chart currently forces credential injection via secrets, which blocks IRSA from working.

Related:

Root cause: When global.documentStore.type.aws.enabled is true, the chart always injects AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables. The AWS SDK credential chain prioritizes these env vars over IRSA, so even empty values prevent IRSA from being used.

What's in this PR?

Added a new configuration option global.documentStore.type.aws.useCredentialsInSecret:

  • true (default): Credentials are injected via secrets (existing behavior, backward compatible)
  • false: No credentials are injected, allowing IRSA to work via the AWS SDK credential chain

Usage

To use Document Store with IRSA:

global:
  documentStore:
    activeStoreId: "aws"
    type:
      aws:
        enabled: true
        useCredentialsInSecret: false  # ← Enables IRSA mode
        bucket: "my-document-bucket"
        region: "us-east-1"

# Annotate the service account with the IAM role
orchestration:
  serviceAccount:
    annotations:
      eks.amazonaws.com/role-arn: arn:aws:iam::ACCOUNT_ID:role/document-store-role

Charts modified

  • camunda-platform-8.8
  • camunda-platform-8.9

Files changed per chart

File Change
values.yaml Added global.documentStore.type.aws.useCredentialsInSecret option
templates/orchestration/statefulset.yaml Updated condition to check useCredentialsInSecret
templates/orchestration/importer-deployment.yaml Updated condition (8.8 only)
templates/console/deployment.yaml Updated condition
templates/connectors/deployment.yaml Updated condition
templates/identity/deployment.yaml Updated condition
templates/optimize/deployment.yaml Updated condition
templates/web-modeler/deployment-webapp.yaml Updated condition
templates/web-modeler/deployment-restapi.yaml Updated condition
test/unit/common/documentstore_irsa_test.go Added unit tests for IRSA support

Template condition change

Before:

{{- if .Values.global.documentStore.type.aws.enabled }}
- name: AWS_ACCESS_KEY_ID
  ...
{{- end }}

After:

{{- if and .Values.global.documentStore.type.aws.enabled .Values.global.documentStore.type.aws.useCredentialsInSecret }}
- name: AWS_ACCESS_KEY_ID
  ...
{{- end }}

Backward Compatibility

Fully backward compatible - The default value is true, which preserves the existing behavior. Users who don't set this option will see no change.

Checklist

Please make sure to follow our Contributing Guide.

Before opening the PR:

  • In the repo's root dir, run make go.update-golden-only.
  • There is no other open pull request for the same update/change.
  • Tests for charts are added (if needed).
  • In-repo documentation are updated (if needed).

After opening the PR:

  • Did you sign our CLA (Contributor License Agreement)? It will show once you open the PR.
  • Did all checks/tests pass in the PR?

@leiicamundi leiicamundi requested a review from a team as a code owner January 16, 2026 09:53
@leiicamundi leiicamundi requested review from eamonnmoloney and removed request for a team January 16, 2026 09:53
@leiicamundi leiicamundi self-assigned this Jan 16, 2026
@leiicamundi leiicamundi added kind/bug Something isn't working as intended support Marks an issue as related to a customer support request (don't edit the lable) and removed version/8.8 Camunda applications/cycle version version/8.9 Camunda applications/cycle version component/web-modeler component/identity component/optimize component/connectors component/console component/orchestration labels Jan 16, 2026
Copy link
Contributor

@eamonnmoloney eamonnmoloney left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good. Can the field be more explicit like, enableIRSA or something like that... right now its not clear what is getting disable when the flag is false

Also, will this be ported to 8.6/7 and 9?

@leiicamundi
Copy link
Contributor Author

Also, will this be ported to 8.6/7 and 9?

Not sure it's worth for 8.6, 8.7 I can have a look

Can the field be more explicit like, enableIRSA or something like that... right now its not clear what is getting disable when the flag is false

I'll improve the documentation of it

@leiicamundi
Copy link
Contributor Author

@eamonnmoloney For 8.6 there is no document store feature, so I implemented it to 8.7, 8.8 and 8.9 only.
Regarding the documentation, I tried to improve it

Copy link
Contributor

@eamonnmoloney eamonnmoloney left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are good changes. Before merging this, make sure to test they work against the QA documentStore test runs

@leiicamundi
Copy link
Contributor Author

QA integration will be tracked by https://github.com/camunda/product-hub/issues/3388
Can we merge it and test it later? I don't have the capacity to do it now @eamonnmoloney

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

Labels

component/connectors component/console component/identity component/operate component/optimize component/orchestration component/tasklist component/web-modeler component/zeebe kind/bug Something isn't working as intended support Marks an issue as related to a customer support request (don't edit the lable) version/8.7 Camunda applications/cycle version version/8.8 Camunda applications/cycle version version/8.9 Camunda applications/cycle version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants