Skip to content

Commit 6eb710a

Browse files
author
Luke Reed
authored
Add parameters for enabling GKE usage metering (#34)
1 parent c9d3e8c commit 6eb710a

File tree

6 files changed

+51
-0
lines changed

6 files changed

+51
-0
lines changed

vpc-native-beta/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,5 @@ See the file [example-usage](./example-usage) for an example of how to use this
3333
| `enable_workload_identity` | A boolean to enable workload identity | `false` |
3434
| `enable_shielded_nodes` | A boolean to enable cluster-wide shielded nodes | `false` |
3535
| `enable_node_local_dns_cache` | A boolean to enable NodeLocal DNSCache | `true` |
36+
| `metering_bigquery_dataset` | BigQuery dataset name to send GKE metering data to. Setting a value here implicitly enables GKE Usage Metering. | `""` |
37+
| `enable_network_egress_metering` | Boolean to turn on Network Egress Metering. Only useful if metering_bigquery_dataset variable is set. | `false` |

vpc-native-beta/inputs.tf

+12
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,15 @@ variable "enable_node_local_dns_cache" {
9696
description = "A boolean to enable NodeLocal DNSCache"
9797
default = true
9898
}
99+
100+
variable "metering_bigquery_dataset" {
101+
type = string
102+
description = "BigQuery dataset name to send GKE metering data to. Setting a value here implicitly enables GKE Usage Metering."
103+
default = ""
104+
}
105+
106+
variable "enable_network_egress_metering" {
107+
type = bool
108+
description = "Boolean to turn on Network Egress Metering. Only useful if metering_bigquery_dataset variable is set."
109+
default = false
110+
}

vpc-native-beta/main.tf

+11
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
locals {
22
cluster_workload_identity_namespace = var.enable_workload_identity ? ["${var.project}.svc.id.goog"] : []
3+
metering_bigquery_dataset = length(var.metering_bigquery_dataset) > 0 ? [var.metering_bigquery_dataset] : []
34
}
45

56
resource "google_container_cluster" "cluster" {
@@ -59,6 +60,16 @@ resource "google_container_cluster" "cluster" {
5960
}
6061
}
6162

63+
dynamic "resource_usage_export_config" {
64+
for_each = local.metering_bigquery_dataset
65+
content {
66+
enable_network_egress_metering = var.enable_network_egress_metering
67+
bigquery_destination {
68+
dataset_id = var.metering_bigquery_dataset
69+
}
70+
}
71+
}
72+
6273
network_policy {
6374
enabled = true
6475
}

vpc-native/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,5 @@ See the file [example-usage](./example-usage) for an example of how to use this
3232
| `vpa_enabled` | A boolean to enable VPA for the cluster | `false` |
3333
| `enable_workload_identity` | A boolean to enable workload identity | `false` |
3434
| `enable_shielded_nodes` | A boolean to enable cluster-wide shielded nodes | `false` |
35+
| `metering_bigquery_dataset` | BigQuery dataset name to send GKE metering data to. Setting a value here implicitly enables GKE Usage Metering. | `""` |
36+
| `enable_network_egress_metering` | Boolean to turn on Network Egress Metering. Only useful if metering_bigquery_dataset variable is set. | `false` |

vpc-native/inputs.tf

+12
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,15 @@ variable "enable_shielded_nodes" {
9090
description = "A boolean to enable cluster-wide shielded nodes"
9191
default = false
9292
}
93+
94+
variable "metering_bigquery_dataset" {
95+
type = string
96+
description = "BigQuery dataset name to send GKE metering data to. Setting a value here implicitly enables GKE Usage Metering."
97+
default = ""
98+
}
99+
100+
variable "enable_network_egress_metering" {
101+
type = bool
102+
description = "Boolean to turn on Network Egress Metering. Only useful if metering_bigquery_dataset variable is set."
103+
default = false
104+
}

vpc-native/main.tf

+12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
locals {
22
cluster_workload_identity_namespace = var.enable_workload_identity ? ["${var.project}.svc.id.goog"] : []
3+
metering_bigquery_dataset = length(var.metering_bigquery_dataset) > 0 ? [var.metering_bigquery_dataset] : []
34
}
45

56
resource "google_container_cluster" "cluster" {
@@ -55,6 +56,17 @@ resource "google_container_cluster" "cluster" {
5556
}
5657
}
5758

59+
60+
dynamic "resource_usage_export_config" {
61+
for_each = local.metering_bigquery_dataset
62+
content {
63+
enable_network_egress_metering = var.enable_network_egress_metering
64+
bigquery_destination {
65+
dataset_id = var.metering_bigquery_dataset
66+
}
67+
}
68+
}
69+
5870
network_policy {
5971
enabled = true
6072
}

0 commit comments

Comments
 (0)