You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -41,13 +41,7 @@ This module provides a production-ready EKS cluster with integrated platform ser
41
41
-**Terranetes**: Terraform-as-a-Service platform
42
42
-**AWS ACK IAM**: AWS Controllers for Kubernetes
43
43
-**CloudWatch Observability**: Monitoring and logging
44
-
45
-
### 🏗️ **Networking**
46
-
47
-
- Optional VPC creation with configurable CIDR blocks
48
-
- Transit Gateway integration for multi-VPC connectivity
49
-
- NAT Gateway support (single AZ or all AZs)
50
-
- Subnet tagging for Kubernetes service discovery
44
+
-**Kubecost**: Cost monitoring and optimization with AWS CUR integration
51
45
52
46
## Usage
53
47
@@ -112,36 +106,6 @@ module "eks" {
112
106
}
113
107
```
114
108
115
-
### EKS Cluster with Custom Networking
116
-
117
-
```hcl
118
-
module "eks" {
119
-
source = "appvia/eks/aws"
120
-
version = "1.0.0"
121
-
122
-
cluster_name = "custom-network-eks"
123
-
tags = {
124
-
Environment = "Production"
125
-
Product = "EKS"
126
-
Owner = "Engineering"
127
-
}
128
-
129
-
# Custom VPC configuration
130
-
vpc_cidr = "10.100.0.0/21"
131
-
availability_zones = 3
132
-
nat_gateway_mode = "all_azs"
133
-
private_subnet_netmask = 24
134
-
public_subnet_netmask = 24
135
-
136
-
# Transit Gateway integration
137
-
transit_gateway_id = "tgw-1234567890"
138
-
transit_gateway_routes = {
139
-
private = "10.0.0.0/8"
140
-
database = "10.1.0.0/16"
141
-
}
142
-
}
143
-
```
144
-
145
109
### EKS Cluster with Pod Identity
146
110
147
111
```hcl
@@ -208,6 +172,86 @@ module "eks" {
208
172
}
209
173
```
210
174
175
+
## Networking Options
176
+
177
+
### VPC & Networking
178
+
179
+
The module assumes the account alread has an existing VPC to provision the cluster within. We need the VPC ID and the subnet IDs for the private subnets where the cluster should be located.
See the [examples](./examples/) directory for complete usage examples:
@@ -414,6 +485,7 @@ See the [examples](./examples/) directory for complete usage examples:
414
485
-[Platform Services](./examples/platform/) - EKS with integrated platform services
415
486
-[Custom Networking](./examples/networking/) - EKS with custom VPC and transit gateway
416
487
-[Pod Identity](./examples/pod-identity/) - EKS with custom pod identities
488
+
-[Kubecost Cost Monitoring](./examples/kubecost/) - EKS with Kubecost cost monitoring and AWS integration
417
489
418
490
## Requirements
419
491
@@ -474,6 +546,8 @@ The `terraform-docs` utility is used to generate this README. Follow the below s
474
546
| <aname="input_kms_key_administrators"></a> [kms\_key\_administrators](#input\_kms\_key\_administrators)| A list of IAM ARNs for EKS key administrators. If no value is provided, the current caller identity is used to ensure at least one key admin is available. |`list(string)`|`[]`| no |
475
547
| <aname="input_kms_key_service_users"></a> [kms\_key\_service\_users](#input\_kms\_key\_service\_users)| A list of IAM ARNs for EKS key service users. |`list(string)`|`[]`| no |
476
548
| <aname="input_kms_key_users"></a> [kms\_key\_users](#input\_kms\_key\_users)| A list of IAM ARNs for EKS key users. |`list(string)`|`[]`| no |
549
+
| <a name="input_kubecosts"></a> [kubecosts](#input\_kubecosts) | The Kubecost configuration | <pre>object({<br/> ## Indicates if we should enable the Kubecost platform<br/> enable = optional(bool, false)<br/> ## The namespace to deploy the Kubecost platform to<br/> namespace = optional(string, "kubecost")<br/> ## The service account to deploy the Kubecost platform to<br/> service_account = optional(string, "kubecost")<br/> ## Fedarate storage configuration<br/> federated_storage = optional(object({<br/> ## Indicates if we should create the federated bucket<br/> create_bucket = optional(bool, false)<br/> ## KMS key ARN to use for the federated bucket<br/> kms_key_arn = optional(string, null)<br/> ## The ARN of the federated bucket to use for the Kubecost platform<br/> federated_bucket_arn = optional(string, null)<br/> ## List of principals to allowed to write to the federated bucket<br/> allowed_principals = optional(list(string), [])<br/> }), {})<br/> ## Cloud Costs feature <br/> cloud_costs = optional(object({<br/> ## Indicates if we should enable cloud costs via Athena<br/> enable = optional(bool, false)<br/> ## The ARN of the S3 bucket for Cost and Usage Report (CUR) data<br/> cur_bucket_arn = optional(string, null)<br/> ## The ARN of the S3 bucket for Athena query results<br/> athena_bucket_arn = optional(string, null)<br/> ## The name of the Athena database for CUR data<br/> athena_database_name = optional(string, null)<br/> ## The ARN of the Athena table for CUR data<br/> athena_table_name = optional(string, null)<br/> }), {})<br/> })</pre> | `null` | no |
550
+
| <aname="input_kubecosts_agent"></a> [kubecosts\_agent](#input\_kubecosts\_agent)| The Kubecost Agent configuration | <pre>object({<br/> ## Indicates if we should enable the Kubecost Agent platform<br/> enable = optional(bool, false)<br/> ## The namespace to deploy the Kubecost Agent platform to<br/> namespace = optional(string, "kubecost")<br/> ## The service account to deploy the Kubecost Agent platform to<br/> service_account = optional(string, "kubecost-agent")<br/> ## The ARN of the federated bucket to use for the Kubecost Agent platform<br/> federated_bucket_arn = string<br/> })</pre> |`null`| no |
477
551
| <aname="input_kubernetes_version"></a> [kubernetes\_version](#input\_kubernetes\_version)| Kubernetes version for the EKS cluster |`string`|`"1.34"`| no |
478
552
| <aname="input_node_pools"></a> [node\_pools](#input\_node\_pools)| Collection of nodepools to create via auto-mote karpenter |`list(string)`| <pre>[<br/> "system"<br/>]</pre> | no |
479
553
| <aname="input_node_security_group_additional_rules"></a> [node\_security\_group\_additional\_rules](#input\_node\_security\_group\_additional\_rules)| List of additional security group rules to add to the node security group created. Set `source_cluster_security_group = true` inside rules to set the `cluster_security_group` as source. |`any`|`{}`| no |
0 commit comments