Skip to content

Add IRSA authentication support - #189

Open
cdobbyn wants to merge 3 commits into
yandex-cloud:masterfrom
dobbo-ca:feat/irsa-authentication
Open

Add IRSA authentication support#189
cdobbyn wants to merge 3 commits into
yandex-cloud:masterfrom
dobbo-ca:feat/irsa-authentication

Conversation

@cdobbyn

@cdobbyn cdobbyn commented Mar 6, 2026

Copy link
Copy Markdown

Summary

  • Add support for IRSA (IAM Roles for Service Accounts) as an alternative to static accessKeyID/secretAccessKey credentials
  • S3 client uses credentials.NewIAM for automatic token refresh
  • All three mounters (geesefs, rclone, s3fs) pass AWS_ROLE_ARN/AWS_WEB_IDENTITY_TOKEN_FILE env vars so long-running mounts can refresh credentials independently
  • Helm chart and Kubernetes example manifests updated with new fields
  • Unit tests added for secret parsing and mounter auth env generation

Addresses #48 and #98

Usage

stringData:
  endpoint: https://s3.amazonaws.com
  region: us-east-1
  useIRSA: "true"

Test plan

  • Unit tests pass (go test ./pkg/s3/ ./pkg/mounter/)
  • Deploy on EKS with IRSA-annotated service account
  • Verify volume provisioning and mount/unmount with each mounter
  • Verify credential refresh after token rotation

cdobbyn added 3 commits March 6, 2026 10:49
Allow authentication via EKS projected service account tokens instead of
requiring static AccessKeyID/SecretAccessKey. When useIRSA is set in the
CSI secret, the driver uses IAM credential providers that automatically
refresh from the projected token file. All three mounters (geesefs,
rclone, s3fs) pass IRSA env vars so they can independently refresh
credentials for long-running mounts.
Tests cover secret parsing (static creds, IRSA, explicit role/token
path, insecure flag, default behavior), geesefs authEnvs() for both
static and IRSA modes, and mounter construction for all three mounter
types with IRSA config.
Add useIRSA, roleArn, and webIdentityTokenFile to the Helm values,
secret template, and the plain Kubernetes example secret.
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