Skip to content

Commit c90f7d3

Browse files
author
Jake Neyer
authored
Add GCS bucket resource to GKE terraform module (#97)
1 parent e9001c9 commit c90f7d3

File tree

8 files changed

+77
-28
lines changed

8 files changed

+77
-28
lines changed

terraform/examples/gke-complete/app/main.tf

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
locals {
2-
project_id = "project"
3-
region = "us-east1"
4-
url = "polytomic.example.com"
5-
polytomic_deployment = "deployment"
6-
polytomic_deployment_key = "key"
7-
polytomic_image = "us.gcr.io/polytomic-container-distro/polytomic-onprem"
8-
polytomic_image_tag = "latest"
9-
polytomic_root_user = "user@example.com"
10-
polytomic_bucket = "polytomic-bucket"
11-
2+
project_id = "project"
3+
region = "us-east1"
4+
url = "polytomic.example.com"
5+
polytomic_deployment = "deployment"
6+
polytomic_deployment_key = "key"
7+
polytomic_image = "us.gcr.io/polytomic-container-distro/polytomic-onprem"
8+
polytomic_image_tag = "latest"
9+
polytomic_root_user = "user@example.com"
10+
polytomic_bucket = "polytomic-bucket"
11+
polytomic_google_client_id = "google-client-id"
12+
polytomic_google_client_secret = "google-client-secret"
1213
}
1314

1415

@@ -49,21 +50,23 @@ data "google_container_cluster" "my_cluster" {
4950
module "gke_helm" {
5051
source = "github.com/polytomic/on-premises/terraform/modules/gke-helm"
5152

52-
polytomic_cert_name = google_compute_managed_ssl_certificate.cert.name
53-
polytomic_ip_name = data.terraform_remote_state.gke.outputs.load_balancer_name
54-
polytomic_url = local.url
55-
polytomic_deployment = local.polytomic_deployment
56-
polytomic_deployment_key = local.polytomic_deployment_key
57-
polytomic_image = local.polytomic_image
58-
polytomic_image_tag = local.polytomic_image_tag
59-
polytomic_root_user = local.polytomic_root_user
60-
redis_host = data.terraform_remote_state.gke.outputs.redis_host
61-
redis_port = data.terraform_remote_state.gke.outputs.redis_port
62-
redis_password = data.terraform_remote_state.gke.outputs.redis_auth_string
63-
postgres_host = data.terraform_remote_state.gke.outputs.postgres_ip
64-
postgres_password = data.terraform_remote_state.gke.outputs.postgres_password
65-
polytomic_bucket = local.polytomic_bucket
66-
polytomic_service_account = data.terraform_remote_state.gke.outputs.workload_identity_user_sa
53+
polytomic_cert_name = google_compute_managed_ssl_certificate.cert.name
54+
polytomic_ip_name = data.terraform_remote_state.gke.outputs.load_balancer_name
55+
polytomic_url = local.url
56+
polytomic_deployment = local.polytomic_deployment
57+
polytomic_deployment_key = local.polytomic_deployment_key
58+
polytomic_image = local.polytomic_image
59+
polytomic_image_tag = local.polytomic_image_tag
60+
polytomic_root_user = local.polytomic_root_user
61+
redis_host = data.terraform_remote_state.gke.outputs.redis_host
62+
redis_port = data.terraform_remote_state.gke.outputs.redis_port
63+
redis_password = data.terraform_remote_state.gke.outputs.redis_auth_string
64+
postgres_host = data.terraform_remote_state.gke.outputs.postgres_ip
65+
postgres_password = data.terraform_remote_state.gke.outputs.postgres_password
66+
polytomic_bucket = data.terraform_remote_state.gke.outputs.bucket
67+
polytomic_service_account = data.terraform_remote_state.gke.outputs.workload_identity_user_sa
68+
polytomic_google_client_id = local.polytomic_google_client_id
69+
polytomic_google_client_secret = local.polytomic_google_client_secret
6770
}
6871

6972
resource "google_compute_managed_ssl_certificate" "cert" {

terraform/examples/gke-complete/cluster/main.tf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,6 @@ module "gke" {
2121
project_id = local.project_id
2222
region = local.region
2323
cluster_service_account = module.gke_cluster_service_account.email
24-
24+
bucket_name = local.polytomic_bucket
25+
workload_identity_sa = module.gke_cluster_service_account.workload_identity_user_sa_email
2526
}

terraform/examples/gke-complete/cluster/outputs.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,8 @@ output "postgres_host" {
5353
output "postgres_ip" {
5454
value = module.gke.postgres_ip
5555
}
56+
57+
58+
output "bucket" {
59+
value = module.gke.bucket
60+
}

terraform/modules/gke-helm/main.tf

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,9 @@ image:
2727
repository: ${var.polytomic_image}
2828
tag: ${var.polytomic_image_tag}
2929
30-
serviceAccount.Annotations:
31-
iam.gke.io/gcp-service-account: ${var.polytomic_service_account}
30+
serviceAccount:
31+
annotations:
32+
iam.gke.io/gcp-service-account: ${var.polytomic_service_account}
3233
3334
polytomic:
3435
deployment:
@@ -40,6 +41,8 @@ polytomic:
4041
auth:
4142
methods:
4243
- google
44+
- microsoft
45+
- sso
4346
root_user: ${var.polytomic_root_user}
4447
url: https://${var.polytomic_url}
4548
single_player: false
@@ -60,6 +63,7 @@ polytomic:
6063
s3:
6164
operational_bucket: gs://${var.polytomic_bucket}
6265
record_log_bucket: ${var.polytomic_bucket}
66+
region: ""
6367
gcs: true
6468
6569
jobs:
@@ -71,6 +75,9 @@ redis:
7175
postgresql:
7276
enabled: false
7377
78+
minio:
79+
enabled: false
80+
7481
EOF
7582
]
7683

terraform/modules/gke/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,16 @@ No requirements.
2525
| [google_compute_global_address.private_ip_address](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_global_address) | resource |
2626
| [google_compute_network_peering_routes_config.peering_routes](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_network_peering_routes_config) | resource |
2727
| [google_service_networking_connection.default](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/service_networking_connection) | resource |
28+
| [google_storage_bucket.polytomic](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/storage_bucket) | resource |
29+
| [google_storage_bucket_iam_member.polytomic](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/storage_bucket_iam_member) | resource |
2830
| [google_client_config.default](https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/client_config) | data source |
2931
| [google_compute_zones.available](https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/compute_zones) | data source |
3032

3133
## Inputs
3234

3335
| Name | Description | Type | Default | Required |
3436
|------|-------------|------|---------|:--------:|
37+
| <a name="input_bucket_name"></a> [bucket\_name](#input\_bucket\_name) | The name of the bucket to create | `string` | `"polytomic-bucket"` | no |
3538
| <a name="input_cluster_service_account"></a> [cluster\_service\_account](#input\_cluster\_service\_account) | The service account to use for the cluster | `any` | n/a | yes |
3639
| <a name="input_create_postgres"></a> [create\_postgres](#input\_create\_postgres) | Whether to create a postgres instance | `bool` | `true` | no |
3740
| <a name="input_create_redis"></a> [create\_redis](#input\_create\_redis) | Whether to create a redis instance | `bool` | `true` | no |
@@ -41,11 +44,13 @@ No requirements.
4144
| <a name="input_project_id"></a> [project\_id](#input\_project\_id) | The project ID to host the cluster in | `any` | n/a | yes |
4245
| <a name="input_redis_size"></a> [redis\_size](#input\_redis\_size) | The size of the redis instance in GB | `string` | `"1"` | no |
4346
| <a name="input_region"></a> [region](#input\_region) | The region to host the cluster in | `string` | `"us-east1"` | no |
47+
| <a name="input_workload_identity_sa"></a> [workload\_identity\_sa](#input\_workload\_identity\_sa) | The name of the workload identity user service account | `string` | `""` | no |
4448

4549
## Outputs
4650

4751
| Name | Description |
4852
|------|-------------|
53+
| <a name="output_bucket"></a> [bucket](#output\_bucket) | n/a |
4954
| <a name="output_cluster_name"></a> [cluster\_name](#output\_cluster\_name) | Cluster name |
5055
| <a name="output_lb_ip"></a> [lb\_ip](#output\_lb\_ip) | Load balancer IP |
5156
| <a name="output_lb_name"></a> [lb\_name](#output\_lb\_name) | Load balancer IP Name |

terraform/modules/gke/main.tf

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,3 +146,16 @@ resource "google_compute_network_peering_routes_config" "peering_routes" {
146146
import_custom_routes = true
147147
export_custom_routes = true
148148
}
149+
150+
resource "google_storage_bucket" "polytomic" {
151+
name = var.bucket_name
152+
location = var.region
153+
force_destroy = true
154+
}
155+
156+
157+
resource "google_storage_bucket_iam_member" "polytomic" {
158+
bucket = google_storage_bucket.polytomic.name
159+
role = "roles/storage.objectAdmin"
160+
member = "serviceAccount:${var.workload_identity_sa}"
161+
}

terraform/modules/gke/outputs.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,7 @@ output "postgres_host" {
4141
output "postgres_ip" {
4242
value = module.postgres[0].private_ip_address
4343
}
44+
45+
output "bucket" {
46+
value = google_storage_bucket.polytomic.name
47+
}

terraform/modules/gke/vars.tf

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,14 @@ variable "postgres_instance_tier" {
4242
description = "The tier of the postgres instance"
4343
default = "db-f1-micro"
4444
}
45+
46+
variable "bucket_name" {
47+
description = "The name of the bucket to create"
48+
default = "polytomic-bucket"
49+
}
50+
51+
52+
variable "workload_identity_sa" {
53+
description = "The name of the workload identity user service account"
54+
default = ""
55+
}

0 commit comments

Comments
 (0)