Запуск в Kubernetes
Важная информация
Внимание!
- Начиная с версии 4.6.1 изменился репозиторий для подключения с helm !
- Начиная с версии 4.6.1 все предыдущие версии чарта помечены как deprecated и не рекомендуются к развертыванию!
- Начиная с версии 4.6.1 версия чарта и версия ПО GitFlic совпадают
- Новый чарт не совместим со старыми версиями чарта (версии до 4.6.1)!
Установка развертывания
Внимание!
- Для установки enterprise версии необходимо предварительно загрузить из личного кабинета образ gitflic-server-ee:<Актуальный тег> установить его в ваш реестр контейнеров и указывать его в качестве образа для ПО GitFlic
- По умолчанию используется storageClass.name=default.
- Будьте внимательны! В большинстве платформ контейнеризации параметр
reclaimPolicyпо умолчанию установлен вDelete!
С изменениями в версиях и возможностями Helm чарта можно ознакомиться в официальном репозитории
Быстрый запуск
helm install gitflic oci://registry.gitflic.ru/helm/project/gitflic/gitflic-server-helm/gitflic-server \
--namespace gitflic \
--create-namespace
В данном случае будет развернуто последнее доступное на текущий момент ПО GitFlic. Будет применена конфигурация хранилища (storageClass) установленная по умолчанию в кластере. Сертификаты будут сгенерированы автоматически. Конфигурация для ingress контролера не будет применена. Elasticsearch и его функционал не будут установлены и применены
Доступ к web интерфейсу
kubectl -n gitflic port-forward deployments/gitflic 8080:8080
Доступ к ssh серверу
kubectl -n gitflic port-forward deployments/gitflic 2255:2255
Изменение параметров приложения
Изменение baseUrl приложения
Параметр baseUrl служит для генерации ссылок внутри приложения и должен содержать в себе конечный домен или хост, по которому будет осуществляться доступ к приложению. Параметр должен быть сформирован с учетом протокола и порта. Данный параметр будет записан в configMap приложения. При изменении данного параметра, необходимо перезапустить приложение GitFlic что бы изменения вступили в силу!
Для изменения baseUrl создайте файл values.yaml или добавьте в уже существующий директивы:
# values.yaml
gitflic:
baseUrl: "https://example.my.domain:8080"
Как получить автоматически сгенерированные сертификаты и ключи
kubectl -n gitflic get secrets gitflic-cert -o jsonpath='{ .data.key\.pem }' | base64 -d > ./key.pem
kubectl -n gitflic get secrets gitflic-cert -o jsonpath='{ .data.key\.pem\.pub }' | base64 -d > ./key.pem.pub
kubectl -n gitflic get secrets gitflic-cert -o jsonpath='{ .data.private_key\.pem }' | base64 -d > ./private_key.pem
kubectl -n gitflic get secrets gitflic-cert -o jsonpath='{ .data.public_key\.pem }' | base64 -d > ./public_key.pem
После выполнения команд, будут созданы следующие файлы:
key.pem- Приватный ключ для SSH сервера платформы GitFlickey.pem.pub- Публичный ключ для SSH сервера платформы GitFlicprivate_key.pem- Приватный ключ для работы платформы GitFlicpublic_key.pem- Публичный ключ для работы платформы GitFlic
Сохраните эти ключи в надежном месте. Изменение этих ключей в процессе эксплуатации платформы GitFlic запрещено и может привести к неработоспособности платформы !
Как установить собственные сертификаты и ключи
Создайте ключевые пары для SSH сервера и сервисов платформы GitFlic:
ssh-keygen -t ed25519 -N "" -q -f key.pem
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in private_key.pem -out public_key.pem
Добавьте дополнительные параметры к команде установки:
helm install gitflic oci://registry.gitflic.ru/helm/project/gitflic/gitflic-server-helm/gitflic-server \
--namespace gitflic \
--create-namespace \
--set generate_certificate=false \
--set-file gitflic.certs.key=key.pem \
--set-file gitflic.certs.keyPub=key.pem.pub \
--set-file gitflic.certs.public_key=public_key.pem \
--set-file gitflic.certs.private_key=private_key.pem
Включение "Поиск по коду"
По умолчанию функционал поиска по коду отключен. Данный функционал требует подключения elasticsearch к развертыванию и конфигурирования приложения для работы с ним.
Для включения функционала поиска по коду создайте файл values.yaml или добавьте в уже существующий директивы:
# values.yaml
elasticsearch:
install: true
gitflic:
elasticsearch:
enable: true
Изменение параметров для SMTP сервера
По умолчанию сервер SMTP не настроен и не осуществляет отправку писем.
Для изменения параметров SMTP сервера создайте файл values.yaml или добавьте в уже существующий директивы:
# values.yaml
gitflic:
mail:
host: "smtp.foo.bar" # Хост SMTP сервера
port: 587 # Порт SMTP сервера
username: foo@bar.net # Имя пользователя для подключения к SMTP серверу
password: Superp@$$word # Пароль пользователя для подключения к SMTP серверу
sender:
name: foobar # Имя пользователя отображаемое в качестве отправителя писем
email: foo@noreply.bar # Email отображаемый в качестве отправителя писем
Изменение параметров развертывания
Изменение imagePullPolicy параметра
По умолчанию, для всех развертываний параметр imagePullPolicy установлен в IfNotPresent.
Для изменения параметра imagePullPolicy создайте файл values.yaml или добавьте в уже существующий директивы:
# values.yaml
redis:
imagePullPolicy: "Never" # Или Always, в зависимости от ваших требований
postgres:
imagePullPolicy: "Never" # Или Always, в зависимости от ваших требований
elasticsearch:
imagePullPolicy: "Never" # Или Always, в зависимости от ваших требований
gitflic:
imagePullPolicy: "Never" # Или Always, в зависимости от ваших требований
Включение лимитов для контейнеров
Для всех контейнеров внутри развертывания, установлены параметры resources.requests в соответствии с минимальными требованиями ПО для функционирования платформы. Лимиты (параметры resources.limits) установлены только для контейнеров gitflic-server и elasticsearch. Остальные контейнеры используют по умолчанию все доступные ресурсы кластера. Если необходимо ограничить и/или переопределить существующие, используйте в качестве корневой директивы имя сервиса и стандартные директивы для определения ресурсов контейнера. Текущие лимиты могут быть изменены в будущем и/или убраны совсем. Подробнее см. в файле values.yaml
Для изменения лимитов контейнеров создайте файл values.yaml или добавьте в уже существующий директивы:
# values.yaml
# Пример для postgresql
postgres:
containers:
resources:
requests:
cpu: "500m"
memory: "512Mi"
limits:
cpu: "1000m"
memory: "2048Mi"
Изменение imagePullSecrets параметра
По умолчанию, для всех развертываний параметр imagePullSecrets не установлен. Для доступа к приватным реестрам необходимо создать ресурс типа secret с параметрами для доступа к реестру:
kubectl create secret docker-registry my-private-registry \
--namespace gitflic \
--docker-server #Адрес до реестра контейнеров \
--docker-username #Имя пользователя для доступа к реестру \
--docker-password #Пароль пользователя для доступа к реестру
Для указания секрета с данными реестра создайте файл values.yaml или добавьте в уже существующий директивы:
# values.yaml
redis:
imagePullSecrets: "my-private-registry" # Или имя указанное при создании секрета
postgres:
imagePullSecrets: "my-private-registry" # Или имя указанное при создании секрета
elasticsearch:
imagePullSecrets: "my-private-registry" # Или имя указанное при создании секрета
rabbitmq:
imagePullSecrets: "my-private-registry" # Или имя указанное при создании секрета
gitflic:
imagePullSecrets: "my-private-registry" # Или имя указанное при создании секрета
Изменение стандартной зоны для кластера
По умолчанию установлена зона svc.cluster.local.
Для изменения зоны кластера создайте файл values.yaml или добавьте в уже существующий директивы:
cluster:
zone: # Имя вашей зоны кластера
Изменение стандартных образов контейнеров
По умолчанию используются образы из публичного реестра registry.gitflic.ru. В случае отсутствия возможности подключения к публичному реестру, рекомендуется скачать образы из данного развертывания, любым доступным способом и прогрузить их в ваш приватный реестр, так как развертывание предполагает использование образов указанных в конфигурации развертывания.
Для изменения стандартных образов создайте файл values.yaml или добавьте в уже существующий директивы:
# values.yaml
redis:
image:
repository: my-private-registry/redis
tag: "6.2"
postgres:
image:
repository: my-private-registry/postgres
tag: "12"
rabbitmq:
image:
repository: my-private-registry/rabbitmq
tag: "3.13-alpine"
elasticsearch:
image:
repository: my-private-registry/elasticsearch
tag: "7.16.2"
gitflic:
image:
repository: my-private-registry/gitflic-server-enterprise
tag: "4.6.1"
Изменение параметров хранения данных
Изменение storageClassName
Внимание!
- * Рекомендуется использовать longhorn, в качестве программно определяемого хранилища
- * В Платформе контейнеризации "Боцман", longhorn установлен по умолчанию как программно определяемое хранилище
Для изменения storageClassName создайте файл values.yaml или добавьте в уже существующий директивы:
#values.yaml
redis:
storage:
storageClassName: #Ваш storageClass, например longhorn
postgres:
storage:
storageClassName: #Ваш storageClass, например longhorn
elasticsearch:
storage.:
storageClassName: #Ваш storageClass, например longhorn
gitflic:
storage:
storageClassName: #Ваш storageClass, например longhorn
Выполните установку с применением созданного файла values.yaml:
helm install gitflic oci://registry.gitflic.ru/helm/project/gitflic/gitflic-server-helm/gitflic-server \
--namespace gitflic \
--create-namespace \
--values ./values.yaml
Отключение использования PersistentVolumeClaim
При отключении использования PersistentVolumeClaim, к контейнерам будет применен параметр emptyDir. Это приведет к тому, что для данных не будет выделено отдельного хранилища и все изменения будут записаны внутри контейнера. Не используйте данный параметр в production среде!
Для отключения использования PersistentVolumeClaim создайте файл values.yaml или добавьте в уже существующий директивы:
# values.yaml
redis:
storage:
usePVC: false
postgres:
storage:
usePVC: false
elasticsearch:
storage:
usePVC: false
gitflic:
storage:
usePVC: false
Изменение количества выделяемого места в хранилище
Для изменения количества выделяемого места под хранение данных создайте файл values.yaml или добавьте в уже существующий директивы:
# values.yaml
redis:
storage:
capacity: 3Gi # Измените в случае если не хватает места под хранение кеша
postgres:
storage:
capacity: 5Gi # Измените в случае если БД превысит текущий размер
elasticsearch:
storage:
capacity: 20Gi # Измените в случае если размер БД превысит текущий размер
gitflic:
storage:
capacity: 20Gi # Измените с учетом ваших предполагаемых размеров репозиториев и/или данных реестра
Изменение параметров баз данных
Подключение собственной базы данных Postgresql
Перед подключением собственной БД postgresql необходимо самостоятельно инициализировать базу и установить необходимые расширения: - pgcrypro - pg_trgm
Для подключения собственной базы postgresql создайте файл values.yaml или добавьте в уже существующий директивы:
# values.yaml
postgres:
install: false
host: foo.bar.sql #Адрес до хоста postgresql
port: 5432 # Порт хоста postgresql. Значение по умолчанию 5432
user: foobar # Пользователь для бд postgresql. Значение по умолчанию gitflic
password: foobarpassword # Пароль для доступа к базе данных postgresql
database: # Имя базы данных. Значение по умолчанию gitflic
Выполните установку с применением созданного файла values.yaml:
helm install gitflic oci://registry.gitflic.ru/helm/project/gitflic/gitflic-server-helm/gitflic-server \
--namespace gitflic \
--create-namespace \
--values ./values.yaml
Как получить пароль от базы данных Postgresql
В случае установки БД Postgresql из чарта, пароль для доступа к БД будет сгенерирован автоматически и помещен в Secret в том же пространстве имен в котором было выполнено развертывание.
kubectl -n gitflic get secrets passwords -o jsonpath='{ .data.postgres }' | base64 -d
Параметры для ingress контроллера
Внимание !
Шаблоны для ingress контроллера работают только с контроллером nginx!
Включение создания шаблона
По умолчанию создание шаблона для ingress контроллера отключено. Автоматическая генерация имени секрета с tls сертификатами сделана для развертываний в который используется сторонний cert-manager для генерации сертификатов, например Let's Encrypt
Для включения создания шаблона создайте файл values.yaml или добавьте в уже существующий директивы:
# values.yaml
ingress:
create: true
tls:
secretName: "" # Имя секрета с сертификатами tls. Если оставить пустым, имя секрета будет сгенерировано автоматически
rules:
host: "example.gitflic.local" # Хост по которому будет осуществляться доступ
Отключение tls сертификатов
Для отключения доступа по HTTPS создайте файл values.yaml или добавьте в уже существующий директивы:
# values.yaml
ingress:
tls:
enabled: false
Добавление аннотаций к шаблону ingress
Для добавления собственных аннотаций создайте файл values.yaml или добавьте в уже существующий директивы:
# values.yaml
ingress:
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: "true" # Добавление принудительного перенаправления на HTTPS протокол
# Остальные аннотации которые необходимо добавить в шаблон
Отключение предустановленных аннотаций
По умолчанию в шаблон включены некоторые аннотация для контроллера. Подробнее см. в файле values.yaml в блоке ingress.annotationsStatic.
Для отключения предустановленных аннотаций создайте файл values.yaml или добавьте в уже существующий директивы:
# values.yaml
ingress:
annotationsStatic: {}
Пример полного файла values.yaml
Ниже представлен пример полного файла values.yaml для развертывания в production среде.
Предполагается что:
- В кластере заранее создан
storageClassName=longhorn-gitflicс политикойreclaimPolicy=Retainи доп настройками хранения. - В кластере установлен
ingressконтроллерnginx.cert-managerотсутствует. - Сертификаты для
tlsсозданы и добавлены вручную какsecret=gitflic-tls-secret. - Включено принудительное перенаправление на
HTTPSпротокол. - В качестве хоста используется адрес
https://example.gitflic.local. - Образ
gitflic-ee:4.6.1скачан из ЛК и загружен вmy-private-registryпо путиmy-private-registry/gitflic-enterprise:4.6.1. - Создан
secret=private-registry-secretдля доступа к приватному реестру где расположен образgitflic-enterprise:4.6.1. - Включен функционал
Поиск по коду. - Используется стандартная зона кластера
svc.cluster.local. - Сертификаты и ключи для
SSHбудут сгенерированы автоматически. - Внешняя БД
postgresqlне будет использована. - Предполагаемый размер хранилища репозиториев и реестра
100Gb. SMTPсервер не используется.
# values.yaml
redis:
storage:
storageClassName: "longhorn-gitflic"
postgres:
storage:
storageClassName: "longhorn-gitflic"
elasticsearch:
install: true
storage:
storageClassName: "longhorn-gitflic"
gitflic:
image:
repository: my-private-registry/gitflic-enterprise
tag: "4.6.1"
imagePullSecrets: "private-registry-secret"
storage:
storageClassName: "longhorn-gitflic"
capacity: 100Gi
baseUrl: "https://example.gitflic.local"
elasticsearch:
enable: true
ingress:
create: true
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
tls:
secretName: "gitflic-tls-secret"
rules:
host: "example.gitflic.local"