main.tf 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. ip_allocation_policy {}
  34. workload_identity_config {
  35. workload_pool = "${var.project_id}.svc.id.goog"
  36. }
  37. resource_labels = {
  38. "example" = "value"
  39. }
  40. }
  41. resource "google_container_node_pool" "nodes" {
  42. project = var.project_id
  43. name = "${google_container_cluster.primary.name}-node-pool"
  44. location = google_container_cluster.primary.location
  45. cluster = google_container_cluster.primary.name
  46. node_count = var.node_count
  47. node_config {
  48. preemptible = var.preemptible
  49. machine_type = "n1-standard-2"
  50. service_account = google_service_account.default.email
  51. oauth_scopes = [
  52. "https://www.googleapis.com/auth/cloud-platform"
  53. ]
  54. }
  55. }
  56. provider "kubernetes" {
  57. host = "https://${google_container_cluster.primary.endpoint}"
  58. token = data.google_client_config.default.access_token
  59. cluster_ca_certificate = base64decode(google_container_cluster.primary.master_auth.0.cluster_ca_certificate)
  60. }
  61. data "google_client_config" "default" {}
  62. resource "kubernetes_service_account" "test" {
  63. metadata {
  64. name = var.GCP_KSA_NAME
  65. annotations = {
  66. "iam.gke.io/gcp-service-account" : "${var.GCP_GSA_NAME}@${var.project_id}.iam.gserviceaccount.com"
  67. }
  68. }
  69. }