main.tf 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. resource "google_service_account" "default" {
  2. project = var.project_id
  3. account_id = var.GCP_GSA_NAME
  4. }
  5. resource "google_project_iam_member" "secretadmin" {
  6. project = var.project_id
  7. role = "roles/secretmanager.admin"
  8. member = "serviceAccount:${google_service_account.default.email}"
  9. }
  10. resource "google_project_iam_member" "service_account_token_creator" {
  11. project = var.project_id
  12. role = "roles/iam.serviceAccountTokenCreator"
  13. member = "serviceAccount:${google_service_account.default.email}"
  14. }
  15. resource "google_service_account_iam_member" "pod_identity" {
  16. role = "roles/iam.workloadIdentityUser"
  17. member = "serviceAccount:${var.project_id}.svc.id.goog[default/${var.GCP_KSA_NAME}]"
  18. service_account_id = google_service_account.default.name
  19. }
  20. resource "google_service_account_iam_member" "pod_identity_e2e" {
  21. role = "roles/iam.workloadIdentityUser"
  22. member = "serviceAccount:${var.project_id}.svc.id.goog[default/external-secrets-e2e]"
  23. service_account_id = google_service_account.default.name
  24. }
  25. resource "google_container_cluster" "primary" {
  26. project = var.project_id
  27. name = "${var.env}-cluster"
  28. location = var.zone
  29. remove_default_node_pool = true
  30. initial_node_count = var.initial_node_count
  31. network = var.network
  32. subnetwork = var.subnetwork
  33. deletion_protection = false
  34. ip_allocation_policy {}
  35. workload_identity_config {
  36. workload_pool = "${var.project_id}.svc.id.goog"
  37. }
  38. resource_labels = {
  39. "example" = "value"
  40. }
  41. }
  42. resource "google_container_node_pool" "nodes" {
  43. project = var.project_id
  44. name = "${google_container_cluster.primary.name}-node-pool"
  45. location = google_container_cluster.primary.location
  46. cluster = google_container_cluster.primary.name
  47. node_count = var.node_count
  48. node_config {
  49. preemptible = var.preemptible
  50. machine_type = "n1-standard-2"
  51. service_account = google_service_account.default.email
  52. oauth_scopes = [
  53. "https://www.googleapis.com/auth/cloud-platform"
  54. ]
  55. }
  56. }
  57. provider "kubernetes" {
  58. host = "https://${google_container_cluster.primary.endpoint}"
  59. token = data.google_client_config.default.access_token
  60. cluster_ca_certificate = base64decode(google_container_cluster.primary.master_auth.0.cluster_ca_certificate)
  61. }
  62. data "google_client_config" "default" {}
  63. resource "kubernetes_service_account" "test" {
  64. metadata {
  65. name = var.GCP_KSA_NAME
  66. annotations = {
  67. "iam.gke.io/gcp-service-account" : "${var.GCP_GSA_NAME}@${var.project_id}.iam.gserviceaccount.com"
  68. }
  69. }
  70. }