Перейти к содержанию

Установка и настройка

Helm chart

Внимание

Версии 0.x.x несовместимы с версией Helm chart >= 1.0.0. Перед обновление обязательно сделайте резерную копию данных. Для обновления до версии 1.0.0 необходимо:

# Удалить существующий релиз (сохранив Persistent Volumes!)
helm -n my-namespace uninstall teamstorm
Если вы используйте redis, minio, rabbitmq из helm чарта, то необходимо изменить владельца в pv. Включите смену владельца в values.yml:

redis:
  enabled: true
  migrateUser: true

minio:
  enabled: true
  migrateUser: true

rabbitmq:
  enabled: true
  migrateUser: true
После обновления установите migrateUser: false.

# Установить новую версию
helm upgrade --install -n my-namespace --wait --create-namespace teamstorm helm-chart-dir

Helm chart выпускается для каждой версии TeamStorm teamstorm_helm_v3.x.y.tgz. В файле Chart.yaml указывается версия helm chart version и версия TeamStorm appVersion.

Все изменения добавляются в файл CHANGELOG.md. В журнале указывается изменения для каждой версии релиза:

  • Общие изменения в релизе;
  • Изменения по каждому сервису;

Установка

Распакуйте каталог teamstorm из архива teamstorm_helm_v3.x.y.tgz

tar -xzvf teamstorm_helm_v3.x.y.tgz
cd ./teamstorm

Внимание

Docker образы предоставляются в архиве с релизом teamstorm_v3.x.y.tgz Перед установкой необходимо загрузить их на каждую ноду kubernetes

# Если используется containerd
ctr -n=k8s.io images import images.tar
# Если используется docker
docker load -i images.tar
или загрузите образы в docker registry.

В values.yml заданы параметры по умолчанию. Создайте свой файл с параметрами values_teamstorm.yml и добавьте минимальный набор параметров для установки.

# При использовании ingress-nginx
ingress:
  enabled: true
  # Укажите ingressClassName
  className: nginx
  # Для https укажите сертификат, если нужен только 80 порт, то tls не указывается.
  tls:
  - secretName: tls-secret
    hosts:
      - teamstorm.example.com

# В глобальных настройках обязательно указывается
global:
  # Если docker образы были загружены в docker registry то укажите его
  image:
    repository: "docker.example.com/teamstorm"
  # URL TeamStorm
  url: "https://teamstorm.example.com"
  hostname: "teamstorm.example.com"

# Для настройки размера дисков указывается size и storageClass (если не задан по умолчанию в kubernetes).
minio:
  persistence:
    storageClass: "storage class"
    size: 10Gi

postgres:
  persistence:
    storageClass: "storage class"
    size: 5Gi

rabbitmq:
  persistence:
    storageClass: "storage class"
    size: 1Gi

redis:
  persistence:
    storageClass: "storage class"
    size: 1Gi

Теперь можно установить teamstorm указав свой values.yml, пространство имен my-namespace, релиз teamstorm и путь к helm chart helm-chart-dir.

helm upgrade --install -f values_teamstorm.yml -n my-namespace --wait --create-namespace teamstorm helm-chart-dir

Дополнительные настройки

Настройка выделения ресурсов для сервисов

Для каждого сервиса указана переменная resources с ресурсами по умолчанию. Для того чтобы включить ограничение ресурсов, необходимо убрать комментарий с настройками выделения ресурсов для каждого сервиса.

resources:
  requests:
    cpu: 50m
    memory: 128Mi
  limits:
    cpu: 150m
    memory: 256Mi

Настройка секретов

Для каждого сервиса учетные данные указаны по умолчанию. Их можно переопределить, указав свои данные в переменной global.<service> или подключить существующие секреты. Для использования существующих секретов необходимо:

  • Указать имя секрета в параметре existingSecret.
  • Убедиться, что в секрете присутствуют ключи, указанные в примере values.yaml.

Приоритет загрузки учетных данных:

  • Если указан existingSecret, данные будут браться из него.
  • Если existingSecret не задан, используются значения из values.yaml.

Пример: Допустим, существует секрет с именем my-secret, содержащий пароль для rabbitmq с ключом rmqPassword. Секрет задан в параметре global.rabbitmq.existingSecret В этом случае приложение будет использовать пароль из my-secret для доступа к rabbitmq.

Добавление CA сертификатов

Для добавления CA сертификатов необходимо указать переменную global.cert.ca или существующий секрет со списком сертификатов global.cert.existingSecretCA.

global:
  certs:
    ca:
      - name: ca.crt
        cert: |
          -----BEGIN CERTIFICATE-----
          MIIDWTCCAkGgAwIBAgIUWUGdGGsp/Au80+nYqQ2PNNbuOfswDQYJKoZIhvcNAQEL
          BQAwPDETMBEGA1UEAwwKTXkgUm9vdCBDQTEYMBYGA1UECgwPTXkgT3JnYW5pemF0
          aW9uMQswCQYDVQQGEwJVUzAeFw0yNTA2MjQxMzM1MDJaFw0zNTA2MjIxMzM1MDJa
          MDwxEzARBgNVBAMMCk15IFJvb3QgQ0ExGDAWBgNVBAoMD015IE9yZ2FuaXphdGlv
          bjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1
          HpRQN72sRFJtnE/XedAKnjwXfl1wBXXP9jlxWnFdRiqM6YGtt8Df4EzBmfzuhlfK
          8kYMQkCFZPUcsKs+7/DJFTczLm9APY004lSptcXpcDEtIW7w8bOcCFp+of4F4DAJ
          GgYB3DNqucYkrZZHfmvoEeDnpBmR2uriJ4fmK1kSpcnLVqobc+CFP/d4hf3hV0Nn
          v3wKcJt1YeQ09/1RzoR/b9PYME9E5c5bY4q/k5yl7+JXv6LlO5mV7NTP6PP109ql
          eXXjCLOIg2vzuNMt0mbK2uzyO/1Y0k0r60rX9ZDFNDnD1jzqbpsMBcS4o/RxZYHm
          VPcEWGAM6cCg9mCMYonxAgMBAAGjUzBRMB0GA1UdDgQWBBTgv3IIwoTAWOj8x2BT
          ERXee9zsoDAfBgNVHSMEGDAWgBTgv3IIwoTAWOj8x2BTERXee9zsoDAPBgNVHRMB
          Af8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAS44wcHHy2aJkQRiox2Ej1xEKZ
          hn0GSIkMW6NOlztivsntfFJ7G2YJeY8QIC+bqxya9+yanoqF/IVnnqz5opht54qE
          gnPUuBmE7FM0OTNauQtjoFftfN2J9qTJmaaL1xUiex0ltJIYCw6XH0vKsd4spRWw
          pu/NEL9XSazr/52360BORT0bhM37YB7MXUbnY9CeYYaSBtYtlCTCqE0AvTpD/ZS7
          1xHu+ojTEmfVI13/Gbq5mi/eIfZrNF2x9LPwT5v5hSiBkWqrvjK5rLqbcnXOL/B1
          lGnNDsHvPTaKswVRLOtJOMjxkW+8KkPZOmIeLwtqK9W0ljeND3Igg/NlXJoU
          -----END CERTIFICATE-----

Включение метрик prometheus

Для включения метрик prometheus используется servicemonitor.

metrics:
  enabled: true
  serviceMonitor:
    enabled: true

Дополнительные настройки сервисов

Настройки деплоя сервисов задаются в параметрах, соответствующих их именам. Дополнительно можно настроить переменные окружения или подключение файлов через монтирование.

frontend:
  extraEnv:
    - name: FOO
      value: "bar"
  extraEnvFrom:
    - secretRef:
        name: frontend-env
  volumes:
    - name: certs
      secret:
        secretName: "ssl"
  volumeMounts:
    - mountPath: /certs/
      name: certs