Развернуть с помощью Helm
Gramax Open Source Helm Chart
Helm-чарт для развёртывания Gramax DocPortal в Kubernetes.
Чарт поднимает:
Deploymentс контейнеромdocker.io/gramax/docportalServiceдля доступа к приложениюSecretдля пароля администратора и токена auto-pull, если не используются внешние секретыPersistentVolumeClaimдля каталога/app/data, если включено persistenceIngress, если он включён в valuesHorizontalPodAutoscaler, если включён autoscaling
Что важно знать заранее
В чарте нет отдельного
values.yaml, пример конфигурации лежит в .По умолчанию приложение запускается на порту
80.Данные приложения сохраняются в
/app/data.Для production лучше передавать пароль администратора и токен auto-pull через существующие Kubernetes secrets, а не хранить их открытым текстом в values-файле.
Быстрый старт
1. Добавить Helm-репозиторий
helm repo add gramax https://s3.ics-it.ru/public/docreader/helm/ helm repo update
Проверить, что Helm видит чарт:
helm search repo gramax/gramax-open-source-server-in-k8s --versions
2. Скачать чарт на компьютер
helm pull gramax/gramax-open-source-server-in-k8s --untar
После распаковки Helm создаст каталог с именем чарта. Перейдите в него:
cd gramax-open-source-server-in-k8s
Дальше команды предполагают, что вы находитесь в каталоге скачанного чарта.
3. Создать namespace
kubectl create namespace gramax
4. Создать secret с паролем администратора
Рекомендуемый вариант:
kubectl -n gramax create secret generic gramax-auth \ --from-literal=admin-password='StrongPasswordHere'
Если нужен AUTO_PULL_TOKEN, можно либо создать отдельный secret, либо добавить ключ в этот же:
kubectl -n gramax create secret generic gramax-auth \ --from-literal=admin-password='StrongPasswordHere' \ --from-literal=auto-pull-token='YourAutoPullToken'
5. Подготовить values-файл
Пример минимального production-профиля:
replicaCount: 1 image: repository: docker.io/gramax/docportal tag: latest pullPolicy: IfNotPresent service: type: ClusterIP port: 80 admin: login: admin existingSecret: gramax-auth existingSecretKeys: password: admin-password autoPull: existingSecret: gramax-auth existingSecretKeys: token: auto-pull-token interval: "" ingress: enabled: true className: nginx annotations: {} hosts: - host: gramax.example.com paths: - path: / pathType: Prefix tls: [] persistence: enabled: true size: 10Gi storageClass: "" accessModes: - ReadWriteOnce resources: requests: cpu: 100m memory: 256Mi limits: cpu: 500m memory: 512Mi
Например, сохраните его как values.prod.yaml.
6. Установить или обновить релиз
helm upgrade --install gramax . \ --namespace gramax \ --create-namespace \ -f values.prod.yaml
7. Проверить состояние
kubectl -n gramax get pods,svc,ingress,pvc helm -n gramax status gramax
Основные переменные
Ниже перечислены параметры, которые обычно нужно трогать в первую очередь.
Параметр | По умолчанию | Что делает |
|
| Количество реплик |
| Docker-образ приложения. | |
|
| Тег образа. Для production лучше фиксировать конкретную версию. |
|
| Политика скачивания образа. |
|
| Тип Kubernetes Service: |
|
| Порт сервиса и контейнера. |
|
| Логин администратора, передаётся в |
|
| Пароль администратора, если не используется внешний secret. |
|
| Имя существующего secret с паролем администратора. |
|
| Ключ внутри secret, из которого читается пароль администратора. |
|
| Токен для |
|
| Значение для |
|
| Имя существующего secret с токеном auto-pull. |
|
| Ключ внутри secret с токеном auto-pull. |
|
| Включает создание Ingress. |
|
| Класс ingress-контроллера, например |
|
| Список hostname и путей, через которые будет доступно приложение. |
|
| TLS-секции для ingress. |
|
| Включает постоянное хранилище для |
|
| Размер PVC. |
|
| StorageClass для PVC. |
|
| Использование уже существующего PVC вместо создания нового. |
|
| Прямой |
|
| Requests и limits контейнера. |
|
| Включает HorizontalPodAutoscaler. |
|
| Минимум реплик для HPA. |
|
| Максимум реплик для HPA. |
|
| Целевая утилизация CPU для HPA. |
|
| Дополнительные переменные окружения. |
|
| Подключение переменных окружения из ConfigMap/Secret целиком. |
|
| Привязка pod к нодам по labels. |
|
| Tolerations для запуска на tainted nodes. |
|
| Affinity/anti-affinity правила. |
Практические сценарии
Минимальная установка для теста
Можно обойтись вообще без ingress и с паролем в values-файле:
admin: login: admin password: ChangeMe ingress: enabled: false
Установка:
helm upgrade --install gramax . -n gramax --create-namespace -f values.test.yaml
Установка с существующим PVC
Если PVC уже создан заранее:
persistence: enabled: true existingClaim: gramax-data
Установка без постоянного хранилища
Подходит только для временных стендов:
persistence: enabled: false
В этом режиме данные приложения будут потеряны после пересоздания pod.
Рекомендации для production
Используйте
admin.existingSecretвместоadmin.password.Фиксируйте
image.tag, а не оставляйтеlatest.Задавайте
resources.requestsиresources.limits.Включайте ingress только после настройки DNS и, при необходимости, TLS.
Не используйте
persistence.hostPath, если у вас не single-node кластер и не локальная разработка.Если включаете
autoscaling.enabled: true, помните, чтоreplicaCountв этом случае не используется.
Полезные команды
Показать итоговый манифест:
helm template gramax . -f values.prod.yaml
Проверить чарт:
helm lint . -f values.prod.yaml
Посмотреть значения релиза:
helm -n gramax get values gramax