Запуск в Kubernetes
Внимание!
- helm чарт находится в стадии бета тестирования.
- Модуль ingress не предусмотрен в helm чарте
- Не используйте PersistentVolume с classStorage: local в production окружении, это может привести к проблемам в работе сервиса
- На текущий момент в качестве Storage Provisioner используется nfs-external-subdir
Подготовка nfs для хранения данных
Внимание !
- Убедитесь, что сетевые настройки вашего хоста позволяют узлам Kubernetes обращаться к вашему NFS-серверу.
- Убедитесь, что у вас есть права доступа к директории на уровне NFS-сервера, чтобы поды могли записывать данные.
- Убедитесь что выделенного места достаточно для стабильной работы ПО Gitflic
Внимание !
- Рекомендуется для каждой отдельной инсталляции ПО Giflic создавать свою директорию на nfs сервере.
- Если у вас уже есть nfs-provisioner и/или выделенная директория для хранения файлов, можно указать его параметры в настройках nfsprovisioner
-
Настройка provisioner и storageClass выполняется в конфигурационном файле values.yaml при установке ПО GitFlic
nfsprovisioner: nfs: server: "<ip адресс nfs сервера>" path: "<директория на nfs сервере>" storageClass: name: "<Уникальное имя класса>"
-
Подключитесь к серверу где будет располагаться nfs-server выполните установку необходимых пакетов
sudo apt update && sudo apt install nfs-kernel-server
-
Создайте директорию для хранения данных и назначьте ей необходимые права
sudo mkdir -p /mnt/gitflic_data sudo chown nobody:nogroup /mnt/gitflic_data
-
Откройте файл /etc/exports и добавьте в него информацию что бы разрешить доступ к директориям
/mnt/gitflic_data *(rw,sync,no_subtree_check,no_root_squash)
-
Выполните экспорт директорий и перезапустите nfs-server
sudo exportfs -a && sudo systemctl restart nfs-kernel-server
-
Проверьте что директории корректно экспортированы
sudo showmount -e localhost
Установка ПО GitFlic с помощью Helm
Внимание!
Для установки enterprise версии необходимо предварительно загрузить из личного кабинета образ gitflic-server-ee:<Актуальный тег> установить его в ваш реестр контейнеров и указывать его в качестве образа для ПО GitFlic
-
Создайте сертификат для ssh сервера и ключевую пару RSA ключей для работы ПО 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
-
Создайте файл values.yaml и заполните его минимально необходимой информацией
nfsprovisioner: nfs: server: "<ip адрес nfs сервера>" path: "<директория на nfs сервере>" gitflic: config: baseUrl: <URL по которому будет идти обращение к ПО GitFlic> image: repository: registry.gitflic.ru/company/gitflic/gitflic-server-ce tag: "<Актуальный тег>"
-
При необходимости дополните файл требуемой информацией. Полный список доступных переопределений
default-values.yaml
nfsprovisioner: nfs: server: "10.0.0.0" path: "/tmp" storageClass: name: "nfs-client-gitflic" redis: replicas: 1 image: repository: registry.gitflic.ru/company/gitflic/redis tag: "6.2" imagePullPolicy: "IfNotPresent" container: port: 6379 service: port: 6379 type: ClusterIP protocol: TCP storage: capacity: 3Gi accessModes: - ReadWriteOnce postgres: replicas: 1 image: repository: registry.gitflic.ru/company/gitflic/postgres tag: "12" imagePullPolicy: "IfNotPresent" container: port: 5432 service: port: 5432 type: ClusterIP protocol: TCP storage: capacity: 5Gi accessModes: - ReadWriteOnce user: gitflic password: gitflic database: gitflic rabbitmq: replicas: 1 image: repository: registry.gitflic.ru/company/gitflic/rabbitmq tag: "3.13-alpine" imagePullPolicy: "IfNotPresent" container: port: 5672 service: port: 5672 type: ClusterIP protocol: TCP elasticsearch: replicas: 1 image: repository: registry.gitflic.ru/company/gitflic/elasticsearch tag: "7.16.2" imagePullPolicy: "IfNotPresent" container: port_main: 9200 port_http: 9300 service: port_main: 9200 port_http: 9300 type: ClusterIP protocol: TCP storage: capacity: 50Gi accessModes: - ReadWriteMany gitflic: replicas: 1 image: repository: registry.gitflic.ru/company/gitflic/gitflic-server-ce tag: "latest" imagePullPolicy: "IfNotPresent" container: port_http: 8080 port_ssh: 2255 service: port_http: 8080 port_ssh: 2255 type: ClusterIP protocol: TCP storage: capacity: 20Gi accessModes: - ReadWriteMany config: baseUrl: "http://localhost:8080" logLevel: INFO elasticsearch: enable: true useSSL: false connectionTimeout: 1 readTimeout: 30 additional: "" mail: | spring.mail.host=smtp.foo.bar spring.mail.port=587 spring.mail.username=foo@bar.net spring.mail.password=Superp@$$word smtp.sender.name=foobar smtp.sender.email=foo@noreply.bar certs: key: ""bcgjkmpetnmcz lkz private_key: "" public_key: ""
-
Запустите установку ПО GitFlic с помощью helm chart
helm install gitflic oci://registry.gitflic.ru/helm/company/gitflic/gitflic-server-chart \ --namespace gitflic --create-namespace \ --set-file gitflic.certs.key=key.pem \ --set-file gitflic.certs.public_key=public_key.pem \ --set-file gitflic.certs.private_key=private_key.pem \ -f values.yaml
-
После инициализации и запуска проверьте доступность веб интерфейса ПО GitFlic на 8080 порту. Порт 2255 используется для ssh соединения
kubectl port-forward -n gitflic svc/gitflic-gitflic-service 8080:8080 2255:2255