Doc.txt 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. toDo:
  2. 1. Jobs/cronJobs (ok)
  3. 2. Ingress (ok)
  4. 3. Services (ok)
  5. 4. Авто пул-секрет, конфигмапа и секрет (+автонейминг)
  6. 5. Автоскейлинг - генерация (ok))
  7. 6. Custom-secret (type: secret )
  8. Фичи:
  9. 1. Глобал - задать реджистри (ок)
  10. 2. Аннотации глобал + локал (ок)
  11. 4. Авто пул-секрет, конфигмапа и секрет (+автонейминг)
  12. 5. Автоскейлинг - генерация
  13. [!] Ко вниманию:
  14. 1) Исхожу из того что все значения env должны быть в кавычках
  15. 2) Исхожу из того что imagePullSecrets - в единственном экземпляре
  16. 3) Исхожу из того что темплейты в проект будем подтягивать сабмодулями
  17. гита, валуесы под проект заполнять непосредственно в самом проекте
  18. (все настройки в одном файле (в пайплайне можно составлять 1 из нескольких и тд))
  19. 4) extraEnvs - идут в дополнение к конфигмапе или секрету
  20. в иных случаях следует использовать обычные envs, при наличии
  21. которых конфигмапы, секреты и extraEnvs игнорируются.
  22. 5) Исхожу из того что что чеки в _helpers правильно устанавливают
  23. наличие или отстутсвие глобальных переменных
  24. 6) Общее для джоб, деплойментов можно передать как:
  25. (Также попадают в некоторые секреты и конфигмапы)
  26. items:
  27. - type: global
  28. annotations:
  29. foo: ""
  30. bar: ""
  31. containers:
  32. - envs:
  33. - name:
  34. value:
  35. - name:
  36. value:
  37. extraEnvs:
  38. - name:
  39. value:
  40. initContainers:
  41. - envs:
  42. - name:
  43. value:
  44. extraEnvs:
  45. - name:
  46. value:
  47. 7) Исхожу из того что авто-tls будет общим на чарт,
  48. в противном случае используйте именнованные
  49. Пример запуска:
  50. helm upgrade --install name ./helm \
  51. --kubeconfig= \
  52. --namespace= \
  53. Генерация по умолчанию:
  54. Шаблон:
  55. items:
  56. - annotations:
  57. # checksum/config:
  58. # checksum/image:
  59. autoscaling:
  60. enabled:
  61. minReplicas: #default 1
  62. maxReplicas: #default 10
  63. targetCPUUtilizationPercentage: #default 50
  64. targetMemoryUtilizationPercentage: #default 30
  65. replicas:
  66. restartPolicy:
  67. ####################################################################################
  68. # Можем указать имеющийся (enabled+name), #
  69. # создать новый (enabled+data или enabled+data+name), #
  70. # использовать старый (ищем {{.Chart.Name}}-dockerconfig-порядковыйНомер) (enabled)#
  71. # или не использовать вовсе (enabled: folse) #
  72. # Ожидаем дату вида: #
  73. # data: #
  74. # login: #
  75. # password: #
  76. # registry: #
  77. # Или целевое значение #
  78. # data: #
  79. # dockerconfigjson: #
  80. # Также в дате можно передать тип (default kubernetes.io/dockerconfigjson) #
  81. # data: #
  82. # type #
  83. ####################################################################################
  84. imagePullSecrets:
  85. enabled:
  86. data:
  87. name:
  88. #########################################################
  89. # Принемает "job", "deployment", "secret"(?), "service",#
  90. # "ingress", "configmap", "global", "cronjob" #
  91. #########################################################
  92. type:
  93. ######################################################
  94. # Где надо, там используется. Пример: "0 23 * * *" #
  95. ######################################################
  96. schedule:
  97. successfulJobsHistoryLimit:
  98. failedJobsHistoryLimit:
  99. concurrencyPolicy: #default Forbid
  100. # Нужен для ingress
  101. ######################################################
  102. # Если тип не ингресс с аннотациями #
  103. # И глобальные аннотации не проброшенны #
  104. # annotations: #
  105. # kubernetes.io/ingress.class: "nginx" #
  106. # nginx.ingress.kubernetes.io/proxy-body-size: 50m #
  107. ######################################################
  108. rules: # Нужен для ingress
  109. - host: # auto = url
  110. http:
  111. paths:
  112. - path: # default "/"
  113. pathType: # default ImplementationSpecific
  114. backend:
  115. serviceName: # auto default .Chart.Name-service
  116. servicePort: # auto default 300{index}
  117. #################################################################
  118. # если data+enabled = новый секрет tls. name - задаст имя, #
  119. # по умолчанию {{ .Chart.Name-secret-tls}}, enabled+name задать #
  120. # существующий. в data ищем crt и key, опционально #
  121. # annotations и type. Если не находим crt и key #
  122. # вставляем data как есть, тип при этом kubernetes.io/tls. #
  123. # Если находим crt и key - они кодируются base64 сами #
  124. #################################################################
  125. tls: #для ingress (в тч для авто)
  126. annotations:
  127. enabled:
  128. data:
  129. name:
  130. #################################################################
  131. # С type service переносит значения в сервис как есть #
  132. # Возможна путанница с ports в блоках ниже, но #
  133. # для читабильности, считаю нужным оставить так #
  134. #################################################################
  135. services:
  136. - type: # default ClusterIP
  137. ports:
  138. selector: # required
  139. volumes:
  140. strategy:
  141. containers:
  142. - command:
  143. args:
  144. name:
  145. livenessProbe:
  146. readinessProbe:
  147. ######################################################################
  148. # Можем указать имеющуюся(enabled+name), создать новую(enabled+data),#
  149. # использовать старую(ищем {{.Chart.Name}}-config)(enabled) #
  150. # или не использовать вовсе #
  151. ######################################################################
  152. configMap:
  153. enabled:
  154. name:
  155. data:
  156. ######################################################################
  157. # Использовать если нет ни конфигмапы ни секрета #
  158. # Или нужно переопределить их #
  159. ######################################################################
  160. envs:
  161. # - name:
  162. # value:
  163. ############################################################################
  164. # Использовать когда заданы конфигмапа и/или секрет для проброса переменных#
  165. # в дополнение к ним #
  166. ############################################################################
  167. extraEnvs:
  168. # - name:
  169. # value:
  170. ######################################################################
  171. # Тут ожидается containerPort и path для авто-сервиса, #
  172. # можно передать и pathType #
  173. ######################################################################
  174. ports:
  175. ######################################################################
  176. # А тут ресурсы #
  177. ######################################################################
  178. resources:
  179. ######################################################################
  180. # Реджистри откуда тянем имеджи #
  181. ######################################################################
  182. registry:
  183. ######################################################################
  184. # Можем указать имеющуюся(enabled+name), создать новую(enabled+data),#
  185. # использовать старую(ищем {{.Chart.Name}}-secret)(enabled) #
  186. # или не использовать вовсе #
  187. ######################################################################
  188. secret:
  189. enabled:
  190. name:
  191. data:
  192. image:
  193. imageTag:
  194. imagePullPolicy:
  195. volumeMounts:
  196. #################################################################
  197. # Используй url для авто-ингресса + авто-сервиса #
  198. # Для них также обязателен containers.ports.containerPort, #
  199. # Он же будет равен targetPort для сервиса. #
  200. # При автогенирации "path" берём из ports контейнера. #
  201. # (Обрабатывается при гинерации отдельно. По умолчанию в ports #
  202. # даёт анвалидейт.) По умолчанию равен "/". #
  203. # #
  204. # Совмещение type "ingress" и url не тестировалось. #
  205. #################################################################
  206. #Пример автогенирации: #
  207. #- host: exsmple.example #
  208. # http: #
  209. # paths: #
  210. # - backend: #
  211. # serviceName: example-service #
  212. # servicePort: 3001 #
  213. # path: / #
  214. # pathType: ImplementationSpecific #
  215. # #
  216. #################################################################
  217. url: #для auto ingress (см выше дефаулты для auto)
  218. initContainers:
  219. - args:
  220. command:
  221. configMap:
  222. enabled:
  223. name:
  224. data:
  225. envs:
  226. extraEnvs:
  227. image:
  228. imageTag:
  229. imagePullPolicy:
  230. name:
  231. resources:
  232. registry:
  233. secret:
  234. enabled:
  235. name:
  236. data:
  237. volumeMounts: