Awesome
Terraform Module: :rocket: Data & AI/ML Kubernetes Add-ons :gear:
This Terraform module contains commonly used Data & AI/ML related Kubernetes add-ons that are typically included in Data on EKS blueprints. The purpose of this module is to provide users with the flexibility to select and customize the add-ons they require while leveraging the Data on EKS blueprints.
:warning: Important Note
Users can consume this Terraform module in their projects to deploy any of the available addons. We will continue to maintain and update the existing Data/ML add-ons. However, we kindly request that you refrain from submitting Pull Requests (PRs) to add new addons at the moment, unless there is a supported blueprint available in the Data on EKS repository. The Apache and CNCF communities offer numerous open-source Data and ML add-ons, and while we appreciate their value, supporting all of them poses challenges.
Your understanding and cooperation are highly appreciated. :pray:
Usage
Create Addon with the following example using Terraform registry. Checkout the complete example under test
folder.
module "eks_data_addons" {
source = "aws-ia/eks-data-addons/aws"
version = "~> 1.0" # ensure to update this to the latest/desired version
oidc_provider_arn = module.eks.oidc_provider_arn
# Example to deploy AWS Neuron Device Plugin for Trainium and Inferentia instances
enable_aws_efa_k8s_device_plugin = true
# Example to deploy EFA K8s Device Plugin for GPU/Neuron instances
enable_aws_efa_k8s_device_plugin = true
# Example to deploy NVIDIA GPU Operator
enable_nvidia_gpu_operator = true
# Example to deploy Spark Operator Helm Chart
enable_spark_opertor = true
# Example to deploy Flink Operator Helm Chart
enable_flink_operator = true
# Example to deploy Apache YuniKorn Helm Chart
enable_yunikorn = true
# Example that uses ECR authentication for a particular registry ID
enable_emr_spark_operator = var.enable_emr_spark_operator
emr_spark_operator_helm_config = {
repository_username = data.aws_ecr_authorization_token.token.user_name
repository_password = data.aws_ecr_authorization_token.token.password
}
# Example to deploy Helm chart that uses IAM Role for ServiceAccounts. You can disable `create_irsa` and bring your own IAM role.
enable_spark_history_server = var.enable_emr_spark_operator
spark_history_server_helm_config = {
create_irsa = true
values = [
templatefile("${path.module}/test/helm-values/spark-history-server-values.yaml", {
s3_bucket_name = module.s3_bucket.s3_bucket_id
s3_bucket_prefix = aws_s3_object.this.key
})
]
}
}
Support & Feedback
<!-- BEGIN_TF_DOCS -->[!IMPORTANT] EKS Blueprints for Terraform is maintained by AWS Solution Architects. It is not part of an AWS service and support is provided as a best-effort by the EKS Blueprints community. To provide feedback, please use the issues templates provided. If you are interested in contributing to EKS Blueprints, see the Contribution guide.
Requirements
Name | Version |
---|---|
<a name="requirement_terraform"></a> terraform | >= 1.0.0 |
<a name="requirement_aws"></a> aws | >= 3.72 |
<a name="requirement_helm"></a> helm | >= 2.4.1 |
Providers
Name | Version |
---|---|
<a name="provider_aws"></a> aws | >= 3.72 |
<a name="provider_helm"></a> helm | >= 2.4.1 |
Modules
Name | Source | Version |
---|---|---|
<a name="module_spark_history_server_irsa"></a> spark_history_server_irsa | ./irsa | n/a |
Resources
Name | Type |
---|---|
helm_release.airflow | resource |
helm_release.aws_efa_k8s_device_plugin | resource |
helm_release.aws_neuron_device_plugin | resource |
helm_release.cnpg_operator | resource |
helm_release.dask_operator | resource |
helm_release.daskhub | resource |
helm_release.emr_flink_operator | resource |
helm_release.emr_spark_operator | resource |
helm_release.flink_operator | resource |
helm_release.jupyterhub | resource |
helm_release.karpenter_resources | resource |
helm_release.kubecost | resource |
helm_release.kuberay_operator | resource |
helm_release.mlflow_tracking | resource |
helm_release.nvidia_device_plugin | resource |
helm_release.nvidia_gpu_operator | resource |
helm_release.nvidia_triton_server | resource |
helm_release.pinot | resource |
helm_release.qdrant | resource |
helm_release.spark_history_server | resource |
helm_release.spark_operator | resource |
helm_release.strimzi_kafka_operator | resource |
helm_release.superset | resource |
helm_release.trino | resource |
helm_release.volcano | resource |
helm_release.yunikorn | resource |
aws_partition.current | data source |
aws_region.current | data source |
Inputs
Name | Description | Type | Default | Required |
---|---|---|---|---|
<a name="input_airflow_helm_config"></a> airflow_helm_config | Airflow Helm Chart config | any | {} | no |
<a name="input_aws_efa_k8s_device_plugin_helm_config"></a> aws_efa_k8s_device_plugin_helm_config | EFA K8s Plugin add-on Helm Chart config | any | {} | no |
<a name="input_aws_neuron_device_plugin_helm_config"></a> aws_neuron_device_plugin_helm_config | AWS Neuron Device Plugin Helm Chart config | any | {} | no |
<a name="input_cnpg_operator_helm_config"></a> cnpg_operator_helm_config | CloudNative PG Operator Helm Chart config | any | {} | no |
<a name="input_dask_operator_helm_config"></a> dask_operator_helm_config | Dask Operator add-on configurations | any | {} | no |
<a name="input_daskhub_helm_config"></a> daskhub_helm_config | DaskHub add-on configurations | any | {} | no |
<a name="input_emr_flink_operator_helm_config"></a> emr_flink_operator_helm_config | Helm configuration for Flink Operator with EMR Runtime | any | {} | no |
<a name="input_emr_spark_operator_helm_config"></a> emr_spark_operator_helm_config | Helm configuration for Spark Operator with EMR Runtime | any | {} | no |
<a name="input_enable_airflow"></a> enable_airflow | Enable Airflow add-on | bool | false | no |
<a name="input_enable_aws_efa_k8s_device_plugin"></a> enable_aws_efa_k8s_device_plugin | Enable EFA K8s Plugin add-on | bool | false | no |
<a name="input_enable_aws_neuron_device_plugin"></a> enable_aws_neuron_device_plugin | Enable AWS Neuron Device Plugin add-on | bool | false | no |
<a name="input_enable_cnpg_operator"></a> enable_cnpg_operator | Enable CloudNative PG Operator add-on | bool | false | no |
<a name="input_enable_dask_operator"></a> enable_dask_operator | Enable Dask Operator add-on | bool | false | no |
<a name="input_enable_daskhub"></a> enable_daskhub | Enable DaskHub | bool | false | no |
<a name="input_enable_emr_flink_operator"></a> enable_emr_flink_operator | Enable the Flink Operator to run Flink application with EMR Runtime | bool | false | no |
<a name="input_enable_emr_spark_operator"></a> enable_emr_spark_operator | Enable the Spark Operator to submit jobs with EMR Runtime | bool | false | no |
<a name="input_enable_flink_operator"></a> enable_flink_operator | Enable Flink Operator add-on | bool | false | no |
<a name="input_enable_jupyterhub"></a> enable_jupyterhub | Enable Jupyterhub Add-On | bool | false | no |
<a name="input_enable_karpenter_resources"></a> enable_karpenter_resources | Enable Karpenter Resources (NodePool and EC2NodeClass) | bool | false | no |
<a name="input_enable_kubecost"></a> enable_kubecost | Enable Kubecost add-on | bool | false | no |
<a name="input_enable_kuberay_operator"></a> enable_kuberay_operator | Enable Kuberay Operator add-on | bool | false | no |
<a name="input_enable_mlflow_tracking"></a> enable_mlflow_tracking | Enable MLflow Tracking add-on | bool | false | no |
<a name="input_enable_nvidia_device_plugin"></a> enable_nvidia_device_plugin | Enable NVIDIA Device Plugin add-on | bool | false | no |
<a name="input_enable_nvidia_gpu_operator"></a> enable_nvidia_gpu_operator | Enable NVIDIA GPU Operator add-on | bool | false | no |
<a name="input_enable_nvidia_triton_server"></a> enable_nvidia_triton_server | Enable NVIDIA Triton Server add-on | bool | false | no |
<a name="input_enable_pinot"></a> enable_pinot | Enable Apache Pinot Add-On | bool | false | no |
<a name="input_enable_qdrant"></a> enable_qdrant | Enable Qdrant Vector Database add-on | bool | false | no |
<a name="input_enable_spark_history_server"></a> enable_spark_history_server | Enable Spark History Server add-on | bool | false | no |
<a name="input_enable_spark_operator"></a> enable_spark_operator | Enable Spark on K8s Operator add-on | bool | false | no |
<a name="input_enable_strimzi_kafka_operator"></a> enable_strimzi_kafka_operator | Enable the Strimzi Kafka Operator | bool | false | no |
<a name="input_enable_superset"></a> enable_superset | Enable Apache Supeset add-on | bool | false | no |
<a name="input_enable_trino"></a> enable_trino | Enable Trino add-on | bool | false | no |
<a name="input_enable_volcano"></a> enable_volcano | Enable volcano scheduler add-on | bool | false | no |
<a name="input_enable_yunikorn"></a> enable_yunikorn | Enable Apache YuniKorn K8s scheduler add-on | bool | false | no |
<a name="input_flink_operator_helm_config"></a> flink_operator_helm_config | Flink Operator Helm Chart config | any | {} | no |
<a name="input_jupyterhub_helm_config"></a> jupyterhub_helm_config | Helm configuration for JupyterHub | any | {} | no |
<a name="input_karpenter_resources_helm_config"></a> karpenter_resources_helm_config | Karpenter Resources Helm Chart config | any | {} | no |
<a name="input_kubecost_helm_config"></a> kubecost_helm_config | Kubecost Helm Chart config | any | {} | no |
<a name="input_kuberay_operator_helm_config"></a> kuberay_operator_helm_config | Helm configuration for Kuberay Operator | any | {} | no |
<a name="input_mlflow_tracking_helm_config"></a> mlflow_tracking_helm_config | MLflow Tracking add-on Helm Chart config | any | {} | no |
<a name="input_nvidia_device_plugin_helm_config"></a> nvidia_device_plugin_helm_config | NVIDIA Device Plugin Helm Chart config | any | {} | no |
<a name="input_nvidia_gpu_operator_helm_config"></a> nvidia_gpu_operator_helm_config | Helm configuration for NVIDIA GPU Operator | any | {} | no |
<a name="input_nvidia_triton_server_helm_config"></a> nvidia_triton_server_helm_config | Helm configuration for NVIDIA Triton Server | any | {} | no |
<a name="input_oidc_provider_arn"></a> oidc_provider_arn | The ARN of the cluster OIDC Provider | string | n/a | yes |
<a name="input_pinot_helm_config"></a> pinot_helm_config | Apache Pinot Helm Chart config | any | {} | no |
<a name="input_qdrant_helm_config"></a> qdrant_helm_config | Helm configuration for Qdrant | any | {} | no |
<a name="input_spark_history_server_helm_config"></a> spark_history_server_helm_config | Helm configuration for Spark History Server | any | {} | no |
<a name="input_spark_operator_helm_config"></a> spark_operator_helm_config | Helm configuration for Spark K8s Operator | any | {} | no |
<a name="input_strimzi_kafka_operator_helm_config"></a> strimzi_kafka_operator_helm_config | Helm configuration for Strimzi Kafka Operator | any | {} | no |
<a name="input_superset_helm_config"></a> superset_helm_config | Apache Supeset Helm Chart config | any | {} | no |
<a name="input_trino_helm_config"></a> trino_helm_config | Trino Helm Chart config | any | {} | no |
<a name="input_volcano_helm_config"></a> volcano_helm_config | Volcano scheduler add-on configurations | any | {} | no |
<a name="input_yunikorn_helm_config"></a> yunikorn_helm_config | Helm configuration for Apache YuniKorn | any | {} | no |
Outputs
Name | Description |
---|---|
<a name="output_airflow"></a> airflow | Airflow Helm Chart metadata |
<a name="output_aws_efa_k8s_device_plugin"></a> aws_efa_k8s_device_plugin | AWS EFA K8s Plugin Helm Chart metadata |
<a name="output_aws_neuron_device_plugin"></a> aws_neuron_device_plugin | AWS Neuron Device Plugin Helm Chart metadata |
<a name="output_dask_hub"></a> dask_hub | Dask Hub Helm Chart metadata |
<a name="output_dask_operator"></a> dask_operator | Dask Operator Helm Chart metadata |
<a name="output_emr_spark_operator"></a> emr_spark_operator | EMR Spark Operator Helm Chart metadata |
<a name="output_flink_operator"></a> flink_operator | Flink Operator Helm Chart metadata |
<a name="output_jupyterhub"></a> jupyterhub | Jupyterhub Helm Chart metadata |
<a name="output_kubecost"></a> kubecost | Kubecost Helm Chart metadata |
<a name="output_kuberay_operator"></a> kuberay_operator | Kuberay Operator Helm Chart metadata |
<a name="output_nvidia_gpu_operator"></a> nvidia_gpu_operator | Nvidia GPU Operator Helm Chart metadata |
<a name="output_pinot"></a> pinot | Apache Pinot Helm Chart metadata |
<a name="output_spark_history_server"></a> spark_history_server | Spark History Server Helm Chart metadata |
<a name="output_spark_operator"></a> spark_operator | Spark Operator Helm Chart metadata |
<a name="output_strimzi_kafka_operator"></a> strimzi_kafka_operator | Strimzi Kafka Operator Helm Chart metadata |
<a name="output_volcano"></a> volcano | Volcano Batch Scheduler Helm Chart metadata |
<a name="output_yunikorn"></a> yunikorn | Yunikorn Helm Chart metadata |