Skip to content

Commit 52f7a30

Browse files
authored
Merge pull request #13 from comet-ml/eks-storage
Configure ephemeral storage for EKS worker nodes
2 parents 5fff3c0 + 9ab6225 commit 52f7a30

File tree

7 files changed

+34
-7
lines changed

7 files changed

+34
-7
lines changed

README.md

+7-5
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Terraform module for deploying infrastructure components to run CometML.
1111

1212
**Infrastructure Deployment:**
1313
- Follow the steps below to deploy directly from the GitHub repository.
14-
- Clone the repository to your local machine: `git clone https://github.com/comet-ml/dply-terraform-aws.git`
14+
- Clone the repository to your local machine: `git clone https://github.com/comet-ml/terraform_aws_comet.git`
1515
- Move into the deployment directory: `cd terraform-aws-comet`
1616
- Initialize the directory: `terraform init`
1717
- Within terraform.tfvars, set your module toggles to enable the desired infrastructure components and set any related inputs
@@ -36,7 +36,7 @@ terraform {
3636
|------|---------|
3737
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
3838
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | ~> 5.1 |
39-
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~>2.10 |
39+
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 2.10 |
4040
| <a name="requirement_kubernetes"></a> [kubernetes](#requirement\_kubernetes) | ~> 2.21 |
4141

4242
## Providers
@@ -79,12 +79,14 @@ terraform {
7979
| <a name="input_comet_vpc_id"></a> [comet\_vpc\_id](#input\_comet\_vpc\_id) | ID of an existing VPC to provision resources in | `string` | `null` | no |
8080
| <a name="input_eks_aws_cloudwatch_metrics"></a> [eks\_aws\_cloudwatch\_metrics](#input\_eks\_aws\_cloudwatch\_metrics) | Enables AWS Cloudwatch Metrics in the EKS cluster | `bool` | `true` | no |
8181
| <a name="input_eks_aws_load_balancer_controller"></a> [eks\_aws\_load\_balancer\_controller](#input\_eks\_aws\_load\_balancer\_controller) | Enables the AWS Load Balancer Controller in the EKS cluster | `bool` | `true` | no |
82-
| <a name="input_eks_cert_manager"></a> [eks\_cert\_manager](#input\_eks\_cert\_manager) | Enables cert-manager in the EKS cluster | `bool` | `true` | no |
82+
| <a name="input_eks_cert_manager"></a> [eks\_cert\_manager](#input\_eks\_cert\_manager) | Enables cert-manager in the EKS cluster | `bool` | `false` | no |
8383
| <a name="input_eks_cluster_name"></a> [eks\_cluster\_name](#input\_eks\_cluster\_name) | Name for EKS cluster | `string` | `"comet-eks"` | no |
84-
| <a name="input_eks_cluster_version"></a> [eks\_cluster\_version](#input\_eks\_cluster\_version) | Kubernetes version of the EKS cluster | `string` | `"1.26"` | no |
85-
| <a name="input_eks_external_dns"></a> [eks\_external\_dns](#input\_eks\_external\_dns) | Enables ExternalDNS in the EKS cluster | `bool` | `true` | no |
84+
| <a name="input_eks_cluster_version"></a> [eks\_cluster\_version](#input\_eks\_cluster\_version) | Kubernetes version of the EKS cluster | `string` | `"1.27"` | no |
85+
| <a name="input_eks_external_dns"></a> [eks\_external\_dns](#input\_eks\_external\_dns) | Enables ExternalDNS in the EKS cluster | `bool` | `false` | no |
86+
| <a name="input_eks_external_dns_r53_zones"></a> [eks\_external\_dns\_r53\_zones](#input\_eks\_external\_dns\_r53\_zones) | Route 53 zones for external-dns to have access to | `list(string)` | <pre>[<br> "arn:aws:route53:::hostedzone/XYZ"<br>]</pre> | no |
8687
| <a name="input_eks_mng_ami_type"></a> [eks\_mng\_ami\_type](#input\_eks\_mng\_ami\_type) | AMI family to use for the EKS nodes | `string` | `"AL2_x86_64"` | no |
8788
| <a name="input_eks_mng_desired_size"></a> [eks\_mng\_desired\_size](#input\_eks\_mng\_desired\_size) | Desired number of nodes in EKS cluster | `number` | `3` | no |
89+
| <a name="input_eks_mng_disk_size"></a> [eks\_mng\_disk\_size](#input\_eks\_mng\_disk\_size) | Size of the storage disks for nodes in EKS cluster | `number` | `500` | no |
8890
| <a name="input_eks_mng_max_size"></a> [eks\_mng\_max\_size](#input\_eks\_mng\_max\_size) | Maximum number of nodes in EKS cluster | `number` | `6` | no |
8991
| <a name="input_eks_mng_name"></a> [eks\_mng\_name](#input\_eks\_mng\_name) | Name for the EKS managed nodegroup | `string` | `"mng"` | no |
9092
| <a name="input_eks_node_types"></a> [eks\_node\_types](#input\_eks\_node\_types) | Node instance types for EKS managed node group | `list(string)` | <pre>[<br> "m5.4xlarge"<br>]</pre> | no |

main.tf

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ module "comet_eks" {
6565
eks_node_types = var.eks_node_types
6666
eks_mng_desired_size = var.eks_mng_desired_size
6767
eks_mng_max_size = var.eks_mng_max_size
68+
eks_mng_disk_size = var.eks_mng_disk_size
6869
eks_aws_load_balancer_controller = var.eks_aws_load_balancer_controller
6970
eks_cert_manager = var.eks_cert_manager
7071
eks_aws_cloudwatch_metrics = var.eks_aws_cloudwatch_metrics

modules/comet_eks/README.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
| Name | Source | Version |
1717
|------|--------|---------|
1818
| <a name="module_eks"></a> [eks](#module\_eks) | terraform-aws-modules/eks/aws | ~> 19.9 |
19-
| <a name="module_eks_blueprints_addons"></a> [eks\_blueprints\_addons](#module\_eks\_blueprints\_addons) | aws-ia/eks-blueprints-addons/aws | 0.2.0 |
19+
| <a name="module_eks_blueprints_addons"></a> [eks\_blueprints\_addons](#module\_eks\_blueprints\_addons) | aws-ia/eks-blueprints-addons/aws | 1.9.1 |
2020
| <a name="module_irsa-ebs-csi"></a> [irsa-ebs-csi](#module\_irsa-ebs-csi) | terraform-aws-modules/iam/aws//modules/iam-assumable-role-with-oidc | 4.7.0 |
2121

2222
## Resources
@@ -36,8 +36,10 @@
3636
| <a name="input_eks_cluster_name"></a> [eks\_cluster\_name](#input\_eks\_cluster\_name) | Name for the EKS cluster | `string` | n/a | yes |
3737
| <a name="input_eks_cluster_version"></a> [eks\_cluster\_version](#input\_eks\_cluster\_version) | Kubernetes version for the EKS cluster | `string` | n/a | yes |
3838
| <a name="input_eks_external_dns"></a> [eks\_external\_dns](#input\_eks\_external\_dns) | Enables ExternalDNS in the EKS cluster | `bool` | n/a | yes |
39+
| <a name="input_eks_external_dns_r53_zones"></a> [eks\_external\_dns\_r53\_zones](#input\_eks\_external\_dns\_r53\_zones) | Route 53 zones for external-dns to have access to | `list(string)` | n/a | yes |
3940
| <a name="input_eks_mng_ami_type"></a> [eks\_mng\_ami\_type](#input\_eks\_mng\_ami\_type) | AMI family to use for the EKS nodes | `string` | n/a | yes |
4041
| <a name="input_eks_mng_desired_size"></a> [eks\_mng\_desired\_size](#input\_eks\_mng\_desired\_size) | Desired number of nodes in EKS cluster | `number` | n/a | yes |
42+
| <a name="input_eks_mng_disk_size"></a> [eks\_mng\_disk\_size](#input\_eks\_mng\_disk\_size) | Size of the storage disks for nodes in EKS cluster | `number` | n/a | yes |
4143
| <a name="input_eks_mng_max_size"></a> [eks\_mng\_max\_size](#input\_eks\_mng\_max\_size) | Maximum number of nodes in EKS cluster | `number` | n/a | yes |
4244
| <a name="input_eks_mng_name"></a> [eks\_mng\_name](#input\_eks\_mng\_name) | Name for the EKS managed nodegroup | `string` | n/a | yes |
4345
| <a name="input_eks_node_types"></a> [eks\_node\_types](#input\_eks\_node\_types) | Node instance types for EKS managed node group | `list(string)` | n/a | yes |

modules/comet_eks/main.tf

+11
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,17 @@ module "eks" {
2929
min_size = var.eks_mng_desired_size
3030
max_size = var.eks_mng_max_size
3131
desired_size = var.eks_mng_desired_size
32+
block_device_mappings = {
33+
xvda = {
34+
device_name = "/dev/xvda"
35+
ebs = {
36+
volume_size = var.eks_mng_disk_size
37+
volume_type = "gp3"
38+
encrypted = false
39+
delete_on_termination = true
40+
}
41+
}
42+
}
3243

3344
iam_role_additional_policies = var.s3_enabled ? { comet_s3_access = var.comet_ec2_s3_iam_policy } : {}
3445
}

modules/comet_eks/variables.tf

+5
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ variable "eks_mng_max_size" {
4848
type = number
4949
}
5050

51+
variable "eks_mng_disk_size" {
52+
description = "Size of the storage disks for nodes in EKS cluster"
53+
type = number
54+
}
55+
5156
variable "eks_aws_load_balancer_controller" {
5257
description = "Enables the AWS Load Balancer Controller in the EKS cluster"
5358
type = bool

variables.tf

+6
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,12 @@ variable "eks_mng_max_size" {
169169
default = 6
170170
}
171171

172+
variable "eks_mng_disk_size" {
173+
description = "Size of the storage disks for nodes in EKS cluster"
174+
type = number
175+
default = 500
176+
}
177+
172178
variable "eks_aws_load_balancer_controller" {
173179
description = "Enables the AWS Load Balancer Controller in the EKS cluster"
174180
type = bool

versions.tf

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ terraform {
1212
}
1313
helm = {
1414
source = "hashicorp/helm"
15-
version = "~>2.10"
15+
version = "~> 2.10"
1616
}
1717
}
1818
}

0 commit comments

Comments
 (0)