02-worker.tf 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. locals {
  2. common_values_yaml = {
  3. server = {
  4. image = "${var.worker_docker_image}"
  5. envVars = {
  6. elastic = {
  7. authUser = "${var.elastic_user}"
  8. server = "${var.elastic_server}:9200"
  9. passEncr = "${yandex_kms_secret_ciphertext.encrypted_pass.ciphertext}"
  10. kibanaServer = "${var.elastic_server}"
  11. }
  12. sleepTime = "300"
  13. yandex = {
  14. cloud = {
  15. id = "${var.cloud_id}"
  16. }
  17. cluster = {
  18. id = "${data.yandex_kubernetes_cluster.my_cluster.id}"
  19. }
  20. folder = {
  21. id = "${var.folder_id}"
  22. }
  23. kms = {
  24. key = {
  25. id = "${yandex_kms_symmetric_key.kms-key.id}"
  26. }
  27. }
  28. s3 = {
  29. bucket = {
  30. name = "${var.log_bucket_name}"
  31. keyEncr = "${yandex_kms_secret_ciphertext.encrypted_s3_key.ciphertext}"
  32. secretEncr = "${yandex_kms_secret_ciphertext.encrypted_s3_secret.ciphertext}"
  33. }
  34. }
  35. serviceAccount = {
  36. id = "${yandex_iam_service_account.sa-writer.id}"
  37. authKey = {
  38. id = "${yandex_iam_service_account_key.sa-auth-key.id}"
  39. privPem = "${yandex_iam_service_account_key.sa-auth-key.private_key}"
  40. }
  41. }
  42. }
  43. }
  44. }
  45. }
  46. auditlog_values_yaml = {
  47. server = {
  48. replicas = "${var.auditlog_worker_replicas_count}"
  49. envVars = {
  50. logPrefix = {
  51. audit = "AUDIT/"
  52. }
  53. yandex = {
  54. messageQueue = {
  55. url = "${yandex_message_queue.log_queue_for_auditlog[0].id}"
  56. }
  57. }
  58. }
  59. }
  60. }
  61. falco_values_yaml = {
  62. server = {
  63. replicas = "${var.falco_worker_replicas_count}"
  64. envVars = {
  65. logPrefix = {
  66. falco = "FALCO/"
  67. }
  68. yandex = {
  69. messageQueue = {
  70. url = "${yandex_message_queue.log_queue_for_falco[0].id}"
  71. }
  72. }
  73. }
  74. }
  75. }
  76. kyverno_values_yaml = {
  77. server = {
  78. replicas = "${var.kyverno_worker_replicas_count}"
  79. envVars = {
  80. logPrefix = {
  81. kyverno = "KYVERNO/"
  82. }
  83. yandex = {
  84. messageQueue = {
  85. url = "${yandex_message_queue.log_queue_for_kyverno[0].id}"
  86. }
  87. }
  88. }
  89. }
  90. }
  91. }
  92. resource "yandex_kms_symmetric_key" "kms-key" {
  93. name = "kms-key-${random_string.project_suffix.result}"
  94. description = "Key for secrets encryption"
  95. default_algorithm = "AES_128"
  96. }
  97. resource "yandex_resourcemanager_folder_iam_binding" "binding" {
  98. folder_id = var.folder_id
  99. role = "kms.keys.encrypterDecrypter"
  100. members = [
  101. "serviceAccount:${yandex_iam_service_account.sa-writer.id}",
  102. ]
  103. }
  104. resource "yandex_kms_secret_ciphertext" "encrypted_pass" {
  105. key_id = yandex_kms_symmetric_key.kms-key.id
  106. plaintext = var.elastic_pw
  107. }
  108. resource "yandex_kms_secret_ciphertext" "encrypted_s3_key" {
  109. key_id = yandex_kms_symmetric_key.kms-key.id
  110. plaintext = yandex_iam_service_account_static_access_key.sa-writer-keys.access_key
  111. }
  112. resource "yandex_kms_secret_ciphertext" "encrypted_s3_secret" {
  113. key_id = yandex_kms_symmetric_key.kms-key.id
  114. plaintext = yandex_iam_service_account_static_access_key.sa-writer-keys.secret_key
  115. }
  116. resource "helm_release" "auditlog_worker" {
  117. name = var.auditlog_worker_chart_name
  118. namespace = var.auditlog_worker_namespace
  119. create_namespace = var.create_namespace
  120. chart = "${path.module}/chart"
  121. values = [file("${path.module}/chart/values.yaml"), yamlencode(local.common_values_yaml), yamlencode(local.auditlog_values_yaml), file("${path.module}/templates/auditlog-worker-limits.yaml"), var.value]
  122. dynamic "set" {
  123. for_each = var.set
  124. content {
  125. name = set.key
  126. value = set.value
  127. }
  128. }
  129. dynamic "set_sensitive" {
  130. for_each = var.set_sensitive
  131. content {
  132. name = set_sensitive.key
  133. value = set_sensitive.value
  134. }
  135. }
  136. }
  137. resource "helm_release" "falco_worker" {
  138. name = var.falco_worker_chart_name
  139. namespace = var.falco_worker_namespace
  140. create_namespace = var.create_namespace
  141. chart = "${path.module}/chart"
  142. values = [file("${path.module}/chart/values.yaml"), yamlencode(local.common_values_yaml), yamlencode(local.falco_values_yaml), file("${path.module}/templates/falco-worker-limits.yaml"), var.value]
  143. dynamic "set" {
  144. for_each = var.set
  145. content {
  146. name = set.key
  147. value = set.value
  148. }
  149. }
  150. dynamic "set_sensitive" {
  151. for_each = var.set_sensitive
  152. content {
  153. name = set_sensitive.key
  154. value = set_sensitive.value
  155. }
  156. }
  157. }
  158. resource "helm_release" "kyverno_worker" {
  159. count = var.kyverno_enabled ? 1 : 0
  160. name = var.kyverno_worker_chart_name
  161. namespace = var.kyverno_worker_namespace
  162. create_namespace = var.create_namespace
  163. chart = "${path.module}/chart"
  164. values = [file("${path.module}/chart/values.yaml"), yamlencode(local.common_values_yaml), yamlencode(local.kyverno_values_yaml), file("${path.module}/templates/kyverno-worker-limits.yaml"), var.value]
  165. dynamic "set" {
  166. for_each = var.set
  167. content {
  168. name = set.key
  169. value = set.value
  170. }
  171. }
  172. dynamic "set_sensitive" {
  173. for_each = var.set_sensitive
  174. content {
  175. name = set_sensitive.key
  176. value = set_sensitive.value
  177. }
  178. }
  179. }