IRSA Support
Several applications within UDS Core can be configured to utilize resources that are external to your Kubernetes cluster, such as object storage and databases. If you are running in AWS, you can leverage IRSA to provide applications within UDS Core with a secure means of accessing external resources.
The following applications in UDS Core that support IRSA are:
This guide will cover how to configure IRSA for each application.
Prerequisites
Configuring IRSA requires that you have configured an IAM OIDC provider for your cluster. Refer to the IRSA documentation for more information.
You must also create IAM Roles and Policies for each application. Refer to the IRSA documentation for more information.
Bundle Configuration
Configuring applications within UDS Core to use IRSA requires that you declare overrides in UDS Bundle configuration. Below are the necessary overrides for each application.
Loki
Loki can be configured to use IRSA by setting the following overrides in your uds-bundle.yaml
:
packages: - name: core repository: oci://ghcr.io/defenseunicorns/packages/uds/core ref: x.x.x overrides: loki: loki: # Override default values set in uds-core-loki package values: - path: loki.storage.s3.endpoint value: "" - path: loki.storage.s3.secretAccessKey value: "" - path: loki.storage.s3.accessKeyId value: "" # Declare new variable for IRSA Role ARN variables: - name: LOKI_IRSA_ROLE_ARN description: "ARN of Loki IAM Role to annotate Loki ServiceAccount with." # Maps to Loki's helm values for ServiceAccount annotations: # See https://github.com/grafana/loki/blob/0dc9d677b6ed5c4440346ab54e9776185900be38/production/helm/loki/values.yaml#L733 path: serviceAccount.annotations.eks\.amazonaws\.com/role-arn
Next, in your uds-config.yaml
, supply a value for LOKI_IRSA_ROLE_ARN
:
variables: core: loki_irsa_role_arn: "<iam-role-arn>"
Velero
Velero can be configured to use IRSA by setting the following overrides in your uds-bundle.yaml
:
packages: - name: core repository: oci://ghcr.io/defenseunicorns/packages/uds/core ref: x.x.x overrides: velero: velero: # Override default values set in uds-core-velero package values: - path: credentials.useSecret value: false # Declare new variable for IRSA Role ARN variables: - name: VELERO_IRSA_ROLE_ARN description: "IRSA ARN annotation to use for Velero" # Maps to Velero's helm values for ServiceAccount annotations: # See https://github.com/vmware-tanzu/helm-charts/blob/fcc60b0ca3886eb760151c69c166108a807efdef/charts/velero/values.yaml#L491 path: serviceAccount.server.annotations.irsa/role-arn
Next, in your uds-config.yaml
, supply a value for VELERO_IRSA_ROLE_ARN
:
variables: core: velero_irsa_role_arn: "<iam-role-arn>"