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

Запуск в 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: "<Уникальное имя класса>"
    
  1. Подключитесь к серверу где будет располагаться nfs-server выполните установку необходимых пакетов

    sudo apt update && sudo apt install nfs-kernel-server
    
  2. Создайте директорию для хранения данных и назначьте ей необходимые права

    sudo mkdir -p /mnt/gitflic_data
    sudo chown nobody:nogroup /mnt/gitflic_data 
    
  3. Откройте файл /etc/exports и добавьте в него информацию что бы разрешить доступ к директориям

    /mnt/gitflic_data *(rw,sync,no_subtree_check,no_root_squash)
    
  4. Выполните экспорт директорий и перезапустите nfs-server

    sudo exportfs -a && sudo systemctl restart nfs-kernel-server
    
  5. Проверьте что директории корректно экспортированы

    sudo showmount -e localhost
    

Установка ПО GitFlic с помощью Helm

Внимание!

Для установки enterprise версии необходимо предварительно загрузить из личного кабинета образ gitflic-server-ee:<Актуальный тег> установить его в ваш реестр контейнеров и указывать его в качестве образа для ПО GitFlic

  1. Создайте сертификат для 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
    
  2. Создайте файл 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: "<Актуальный тег>"
    
  3. При необходимости дополните файл требуемой информацией. Полный список доступных переопределений

    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: ""
    
  4. Запустите установку ПО 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
    
  5. После инициализации и запуска проверьте доступность веб интерфейса ПО GitFlic на 8080 порту. Порт 2255 используется для ssh соединения

    kubectl port-forward -n gitflic svc/gitflic-gitflic-service 8080:8080 2255:2255