spec_v1_0.py 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. """Helm module schema version 1.0 - Original specification."""
  2. from collections import OrderedDict
  3. spec = OrderedDict(
  4. {
  5. "general": {
  6. "title": "General",
  7. "vars": {
  8. "release_name": {
  9. "description": "Helm release name",
  10. "type": "str",
  11. },
  12. "namespace": {
  13. "description": "Kubernetes namespace for the Helm release",
  14. "type": "str",
  15. "default": "default",
  16. },
  17. },
  18. },
  19. "networking": {
  20. "title": "Networking",
  21. "vars": {
  22. "network_mode": {
  23. "description": "Kubernetes service type",
  24. "type": "enum",
  25. "options": ["ClusterIP", "NodePort", "LoadBalancer"],
  26. "default": "ClusterIP",
  27. },
  28. },
  29. },
  30. "traefik": {
  31. "title": "Traefik Ingress",
  32. "toggle": "traefik_enabled",
  33. "needs": "network_mode=ClusterIP",
  34. "description": "Traefik routes external traffic to your service.",
  35. "vars": {
  36. "traefik_enabled": {
  37. "description": "Enable Traefik Ingress/IngressRoute",
  38. "type": "bool",
  39. "default": False,
  40. },
  41. "traefik_host": {
  42. "description": "Hostname for Traefik ingress",
  43. "type": "hostname",
  44. },
  45. },
  46. },
  47. "traefik_tls": {
  48. "title": "Traefik TLS/SSL",
  49. "toggle": "traefik_tls_enabled",
  50. "needs": "traefik_enabled=true;network_mode=ClusterIP",
  51. "description": "Enable HTTPS/TLS for Traefik with certificate management.",
  52. "vars": {
  53. "traefik_tls_enabled": {
  54. "description": "Enable HTTPS/TLS",
  55. "type": "bool",
  56. "default": True,
  57. },
  58. "traefik_tls_secret": {
  59. "description": "TLS secret name",
  60. "type": "str",
  61. "default": "traefik-tls",
  62. },
  63. "traefik_tls_certmanager": {
  64. "description": "Use cert-manager for automatic certificate provisioning",
  65. "type": "bool",
  66. "default": False,
  67. },
  68. "traefik_tls_certmanager_issuer": {
  69. "description": "Cert-manager ClusterIssuer name",
  70. "type": "str",
  71. "default": "letsencrypt-prod",
  72. "needs": "traefik_tls_certmanager=true",
  73. },
  74. },
  75. },
  76. "volumes": {
  77. "title": "Volumes",
  78. "vars": {
  79. "volumes_mode": {
  80. "description": "Persistent volume mode",
  81. "type": "enum",
  82. "options": ["default", "existing-pvc"],
  83. "default": "default",
  84. },
  85. "volumes_pvc_name": {
  86. "description": "Name of existing PVC",
  87. "type": "str",
  88. "needs": "volumes_mode=existing-pvc",
  89. },
  90. },
  91. },
  92. "database": {
  93. "title": "Database",
  94. "toggle": "database_enabled",
  95. "vars": {
  96. "database_enabled": {
  97. "description": "Enable database configuration",
  98. "type": "bool",
  99. "default": False,
  100. },
  101. "database_type": {
  102. "description": "Database type",
  103. "type": "enum",
  104. "options": ["postgres", "mysql", "mariadb"],
  105. "default": "postgres",
  106. },
  107. "database_host": {
  108. "description": "Database host",
  109. "type": "hostname",
  110. },
  111. "database_port": {
  112. "description": "Database port",
  113. "type": "int",
  114. },
  115. "database_name": {
  116. "description": "Database name",
  117. "type": "str",
  118. },
  119. "database_user": {
  120. "description": "Database user",
  121. "type": "str",
  122. },
  123. "database_password": {
  124. "description": "Database password",
  125. "type": "str",
  126. "sensitive": True,
  127. "autogenerated": True,
  128. },
  129. },
  130. },
  131. "email": {
  132. "title": "Email Server",
  133. "toggle": "email_enabled",
  134. "description": "Configure email server for notifications and user management.",
  135. "vars": {
  136. "email_enabled": {
  137. "description": "Enable email server configuration",
  138. "type": "bool",
  139. "default": False,
  140. },
  141. "email_host": {
  142. "description": "SMTP server hostname",
  143. "type": "hostname",
  144. },
  145. "email_port": {
  146. "description": "SMTP server port",
  147. "type": "int",
  148. "default": 587,
  149. },
  150. "email_username": {
  151. "description": "SMTP username",
  152. "type": "str",
  153. },
  154. "email_password": {
  155. "description": "SMTP password",
  156. "type": "str",
  157. "sensitive": True,
  158. },
  159. "email_from": {
  160. "description": "From email address",
  161. "type": "email",
  162. },
  163. "email_use_tls": {
  164. "description": "Use TLS encryption",
  165. "type": "bool",
  166. "default": True,
  167. },
  168. "email_use_ssl": {
  169. "description": "Use SSL encryption",
  170. "type": "bool",
  171. "default": False,
  172. },
  173. },
  174. },
  175. }
  176. )