main.tf 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. data "azurerm_client_config" "current" {}
  2. data "azurerm_subscription" "primary" {}
  3. resource "azurerm_resource_group" "current" {
  4. name = var.resource_group_name
  5. location = var.resource_group_location
  6. }
  7. module "test_sp" {
  8. source = "./service-principal"
  9. application_display_name = var.application_display_name
  10. application_owners = [data.azurerm_client_config.current.object_id]
  11. issuer = module.test_aks.cluster_issuer_url
  12. subject = "system:serviceaccount:${var.sa_namespace}:${var.sa_name}"
  13. depends_on = [
  14. azurerm_resource_group.current
  15. ]
  16. }
  17. module "e2e_sp" {
  18. source = "./service-principal"
  19. application_display_name = var.application_display_name
  20. application_owners = [data.azurerm_client_config.current.object_id]
  21. issuer = module.test_aks.cluster_issuer_url
  22. subject = "system:serviceaccount:default:external-secrets-e2e"
  23. }
  24. module "test_key_vault" {
  25. source = "./key-vault"
  26. key_vault_display_name = var.key_vault_display_name
  27. resource_group_location = var.resource_group_location
  28. resource_group_name = var.resource_group_name
  29. tenant_id = data.azurerm_client_config.current.tenant_id
  30. client_object_id = data.azurerm_client_config.current.object_id
  31. eso_sp_object_id = module.test_sp.sp_object_id
  32. eso_e2e_sp_object_id = module.e2e_sp.sp_object_id
  33. depends_on = [
  34. azurerm_resource_group.current
  35. ]
  36. }
  37. module "test_workload_identity" {
  38. source = "./workload-identity"
  39. tenant_id = data.azurerm_client_config.current.tenant_id
  40. tags = var.cluster_tags
  41. }
  42. module "test_aks" {
  43. source = "./aks"
  44. cluster_name = var.cluster_name
  45. resource_group_name = var.resource_group_name
  46. resource_group_location = var.resource_group_location
  47. default_node_pool_node_count = var.default_node_pool_node_count
  48. default_node_pool_vm_size = var.default_node_pool_vm_size
  49. cluster_tags = var.cluster_tags
  50. depends_on = [
  51. azurerm_resource_group.current
  52. ]
  53. }
  54. resource "azurerm_role_assignment" "current" {
  55. scope = data.azurerm_subscription.primary.id
  56. role_definition_name = "Owner"
  57. principal_id = module.test_sp.sp_id
  58. depends_on = [
  59. azurerm_resource_group.current
  60. ]
  61. }
  62. resource "kubernetes_namespace" "eso" {
  63. metadata {
  64. name = "external-secrets-operator"
  65. }
  66. }
  67. // the `e2e` pod itself runs with workload identity and
  68. // does not rely on client credentials.
  69. resource "kubernetes_service_account" "e2e" {
  70. metadata {
  71. name = "external-secrets-e2e"
  72. namespace = "default"
  73. annotations = {
  74. "azure.workload.identity/client-id" = module.e2e_sp.application_id
  75. "azure.workload.identity/tenant-id" = data.azurerm_client_config.current.tenant_id
  76. }
  77. labels = {
  78. "azure.workload.identity/use" = "true"
  79. }
  80. }
  81. depends_on = [module.test_aks, kubernetes_namespace.eso]
  82. }
  83. resource "kubernetes_service_account" "current" {
  84. metadata {
  85. name = "external-secrets-operator"
  86. namespace = "external-secrets-operator"
  87. annotations = {
  88. "azure.workload.identity/client-id" = module.test_sp.application_id
  89. "azure.workload.identity/tenant-id" = data.azurerm_client_config.current.tenant_id
  90. }
  91. labels = {
  92. "azure.workload.identity/use" = "true"
  93. }
  94. }
  95. depends_on = [module.test_aks, kubernetes_namespace.eso]
  96. }