Развернуть с помощью 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
Основные переменные
Ниже перечислены параметры, которые обычно нужно трогать в первую очередь.
Практические сценарии
Минимальная установка для теста
Можно обойтись вообще без 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