123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- toDo:
- 1. Jobs/cronJobs (ok)
- 2. Ingress (ok)
- 3. Services (ok)
- 4. Авто пул-секрет, конфигмапа и секрет (+автонейминг)
- 5. Автоскейлинг - генерация (ok))
- 6. Custom-secret (type: secret )
- Фичи:
- 1. Глобал - задать реджистри (ок)
- 2. Аннотации глобал + локал (ок)
- 4. Авто пул-секрет, конфигмапа и секрет (+автонейминг)
- 5. Автоскейлинг - генерация
- [!] Ко вниманию:
- 1) Исхожу из того что все значения env должны быть в кавычках
- 2) Исхожу из того что imagePullSecrets - в единственном экземпляре
- 3) Исхожу из того что темплейты в проект будем подтягивать сабмодулями
- гита, валуесы под проект заполнять непосредственно в самом проекте
- (все настройки в одном файле (в пайплайне можно составлять 1 из нескольких и тд))
- 4) extraEnvs - идут в дополнение к конфигмапе или секрету
- в иных случаях следует использовать обычные envs, при наличии
- которых конфигмапы, секреты и extraEnvs игнорируются.
- 5) Исхожу из того что что чеки в _helpers правильно устанавливают
- наличие или отстутсвие глобальных переменных
- 6) Общее для джоб, деплойментов можно передать как:
- (Также попадают в некоторые секреты и конфигмапы)
- items:
- - type: global
- annotations:
- foo: ""
- bar: ""
- containers:
- - envs:
- - name:
- value:
- - name:
- value:
- extraEnvs:
- - name:
- value:
- initContainers:
- - envs:
- - name:
- value:
- extraEnvs:
- - name:
- value:
- 7) Исхожу из того что авто-tls будет общим на чарт,
- в противном случае используйте именнованные
- Пример запуска:
- helm upgrade --install name ./helm \
- --kubeconfig= \
- --namespace= \
- Генерация по умолчанию:
- Шаблон:
- items:
- - annotations:
- # checksum/config:
- # checksum/image:
- autoscaling:
- enabled:
- minReplicas: #default 1
- maxReplicas: #default 10
- targetCPUUtilizationPercentage: #default 50
- targetMemoryUtilizationPercentage: #default 30
- replicas:
- restartPolicy:
- ####################################################################################
- # Можем указать имеющийся (enabled+name), #
- # создать новый (enabled+data или enabled+data+name), #
- # использовать старый (ищем {{.Chart.Name}}-dockerconfig-порядковыйНомер) (enabled)#
- # или не использовать вовсе (enabled: folse) #
- # Ожидаем дату вида: #
- # data: #
- # login: #
- # password: #
- # registry: #
- # Или целевое значение #
- # data: #
- # dockerconfigjson: #
- # Также в дате можно передать тип (default kubernetes.io/dockerconfigjson) #
- # data: #
- # type #
- ####################################################################################
- imagePullSecrets:
- enabled:
- data:
- name:
- #########################################################
- # Принемает "job", "deployment", "secret"(?), "service",#
- # "ingress", "configmap", "global", "cronjob" #
- #########################################################
- type:
- ######################################################
- # Где надо, там используется. Пример: "0 23 * * *" #
- ######################################################
- schedule:
- successfulJobsHistoryLimit:
- failedJobsHistoryLimit:
- concurrencyPolicy: #default Forbid
- # Нужен для ingress
- ######################################################
- # Если тип не ингресс с аннотациями #
- # И глобальные аннотации не проброшенны #
- # annotations: #
- # kubernetes.io/ingress.class: "nginx" #
- # nginx.ingress.kubernetes.io/proxy-body-size: 50m #
- ######################################################
- rules: # Нужен для ingress
- - host: # auto = url
- http:
- paths:
- - path: # default "/"
- pathType: # default ImplementationSpecific
- backend:
- serviceName: # auto default .Chart.Name-service
- servicePort: # auto default 300{index}
- #################################################################
- # если data+enabled = новый секрет tls. name - задаст имя, #
- # по умолчанию {{ .Chart.Name-secret-tls}}, enabled+name задать #
- # существующий. в data ищем crt и key, опционально #
- # annotations и type. Если не находим crt и key #
- # вставляем data как есть, тип при этом kubernetes.io/tls. #
- # Если находим crt и key - они кодируются base64 сами #
- #################################################################
- tls: #для ingress (в тч для авто)
- annotations:
- enabled:
- data:
- name:
- #################################################################
- # С type service переносит значения в сервис как есть #
- # Возможна путанница с ports в блоках ниже, но #
- # для читабильности, считаю нужным оставить так #
- #################################################################
- services:
- - type: # default ClusterIP
- ports:
- selector: # required
- volumes:
- strategy:
- containers:
- - command:
- args:
- name:
- livenessProbe:
- readinessProbe:
- ######################################################################
- # Можем указать имеющуюся(enabled+name), создать новую(enabled+data),#
- # использовать старую(ищем {{.Chart.Name}}-config)(enabled) #
- # или не использовать вовсе #
- ######################################################################
- configMap:
- enabled:
- name:
- data:
- ######################################################################
- # Использовать если нет ни конфигмапы ни секрета #
- # Или нужно переопределить их #
- ######################################################################
- envs:
- # - name:
- # value:
- ############################################################################
- # Использовать когда заданы конфигмапа и/или секрет для проброса переменных#
- # в дополнение к ним #
- ############################################################################
- extraEnvs:
- # - name:
- # value:
- ######################################################################
- # Тут ожидается containerPort и path для авто-сервиса, #
- # можно передать и pathType #
- ######################################################################
- ports:
- ######################################################################
- # А тут ресурсы #
- ######################################################################
- resources:
- ######################################################################
- # Реджистри откуда тянем имеджи #
- ######################################################################
- registry:
- ######################################################################
- # Можем указать имеющуюся(enabled+name), создать новую(enabled+data),#
- # использовать старую(ищем {{.Chart.Name}}-secret)(enabled) #
- # или не использовать вовсе #
- ######################################################################
- secret:
- enabled:
- name:
- data:
- image:
- imageTag:
- imagePullPolicy:
- volumeMounts:
- #################################################################
- # Используй url для авто-ингресса + авто-сервиса #
- # Для них также обязателен containers.ports.containerPort, #
- # Он же будет равен targetPort для сервиса. #
- # При автогенирации "path" берём из ports контейнера. #
- # (Обрабатывается при гинерации отдельно. По умолчанию в ports #
- # даёт анвалидейт.) По умолчанию равен "/". #
- # #
- # Совмещение type "ingress" и url не тестировалось. #
- #################################################################
- #Пример автогенирации: #
- #- host: exsmple.example #
- # http: #
- # paths: #
- # - backend: #
- # serviceName: example-service #
- # servicePort: 3001 #
- # path: / #
- # pathType: ImplementationSpecific #
- # #
- #################################################################
- url: #для auto ingress (см выше дефаулты для auto)
- initContainers:
- - args:
- command:
- configMap:
- enabled:
- name:
- data:
- envs:
- extraEnvs:
- image:
- imageTag:
- imagePullPolicy:
- name:
- resources:
- registry:
- secret:
- enabled:
- name:
- data:
- volumeMounts:
|