oeDeploy для упрощенного развертывания ПО

В среде разработки Linux развертывание программного обеспечения часто становится проблемой, потому как требует довольно большого объема рутинных операций. Независимо от того, являетесь ли вы новичком или опытным разработчиком, вы столкнетесь с проблемами управления зависимостями, ограниченным доступом к сети и громоздкой конфигурацией при установке сложных программных стеков. Чтобы упростить этот процесс сообщество openEuler / OpenScaler запустило новый инструмент с открытым исходным кодом oeDeploy.

oeDeploy – это легкий инструмент развертывания программного обеспечения, который призван помочь разработчикам быстро и эффективно развертывать сложные программные среды, будь то одноузловые или распределенные.

С помощью oeDeploy пользователи могут быстро развернуть, например, модель DeepSeek локально или легко развернуть относительно сложные системы, такие как Kubernetes (k8s), в кластере и продолжить развертывание другого программного обеспечения, такого как Kubeflow, KubeRay и т.д., на основе кластера k8s. Все это может быть сделано с помощью простой последовательности действий, что значительно снижает порог доступа к развертыванию сложных сред.

В рамках этой статьи мы воспользуемся сервером, который располагает x86_64 совместимой серверной ОС openScaler 24.03 LTS SP1 и попробуем развернуть кластер Kubernetes.

Конфигурация тестируемого сервера

Hardware: сервер с 2шт. CPU Intel Xeon Gold 5118 (2,3 ГГц / 12 ядер), 256 GB RAM DDR4 2666Hz.

Операционная система: openScaler 24.03 LTS SP1.

Подготовка тестовой ОС

Для теста была установлена ОС openScaler 24.03 LTS SP1 в минимальной конфигурации (minimal install). Для работы кластера в целях теста можно воспользоваться 3шт. виртуальными машинами с минимальной конфигурацией 2 ядра CPU, 4 ГБ RAM или можно взять физические серверы с характеристиками не хуже, чем указанные виртуальные машины. В качестве ОС везде также используется openScaler 24.03 LTS SP1.

Установка инструмента oeDeploy

На master узле (node) загрузите и установите средство командной строки oeDeploy oedp. Выполните следующую последовательность действий:

  • Загрузим rpm-пакет из репозитория oepkgs.net:

wget https://repo.oepkgs.net/openEuler/rpm/openEuler-24.03-LTS/contrib/oedp/x86_64/Packages/oedp-1.0.0-20250208.x86_64.rpm

  • Выполнить непосредственно установку пакета командой:

dnf install oedp-1.0.0-20250208.x86_64.rpm

Установка завершена и далее требуется загрузить архив с plug-in ПО для развертывания k8s. Полная документация по инструменту доступна по ссылке.

Загрузка plug-in для установки k8s-кластера

Требуется загрузить архив plug-in и для этого потребуется выполнить следующую команду:

wget https://repo.oepkgs.net/openEuler/rpm/openEuler-24.03-LTS/contrib/oedp/plugins/kubernetes-1.31.1.tar.gz

Для его распаковки выполним следующее:

tar -zxvf kubernetes-1.31.1.tar.gz

Чтобы убедиться, что все на данном этапе выполнено правильно выполним следующую команду:

oedp info -p ./kubernetes-1.31.1

Пример её выполнения можно увидеть на следующем изображении:

Рисунок 1. Вывод команды oedp info

Установка k8s-кластера

Перед началом установки потребуется указать в конфигурационном файле данные доступа к master и worker node. Эти данные требуется описать в конфигурационном файле:

vi kubernetes-1.31.1/config.yaml

Этот файл должен выглядеть примерно следующим образом:

all:

  children:

    masters:

      hosts:

        # master

        192.16.5.48:                          # e.g. 192.168.10.1

          ansible_host: 192.16.5.48           # e.g. 192.168.10.1

          ansible_port: 22

          ansible_user: root

          ansible_password: “UserHW37%&”

          architecture: amd64              # e.g. [ amd64, arm64 ]

          oeversion: 24.03-LTS             # e.g. [ 22.03-LTS, 24.03-LTS ]

          runtime: docker                  # e.g. [ docker, containerd ]

        # HOST_IP2:

        #   ansible_host: HOST_IP2

        #   ansible_port: 22

        #   ansible_user: root

        #   ansible_password: “”

        #   architecture: amd64

        #   oeversion: 24.03-LTS

        #   runtime: docker

        # HOST_IP3:

        #   ansible_host: HOST_IP3

        #   ansible_port: 22

        #   ansible_user: root

        #   ansible_password: “”

        #   architecture: amd64

        #   oeversion: 24.03-LTS

        #   runtime: docker

    workers:

      hosts:

        192.16.5.143:

          ansible_host: 192.16.5.143

          ansible_port: 22

          ansible_user: root

          ansible_password: “UserHW43$#”

          architecture: amd64

          oeversion: 24.03-LTS

          runtime: docker

        192.16.5.138:

          ansible_host: 192.16.5.138

          ansible_port: 22

          ansible_user: root

          ansible_password: “UserHW238#^”

          architecture: amd64

          oeversion: 24.03-LTS

          runtime: docker

    new-workers:  # new-workers

      hosts:

  vars:

    ansible_ssh_common_args: ‘-o StrictHostKeyChecking=no’

 

    init_cluster_force: “true”             # e.g. [ “true”, “false” ]

    remove_master_no_schedule_taints: “true”

    service_cidr: 10.96.0.0/16            

    pod_cidr: 10.244.0.0/16                # pod ip

    certs_expired: 3650                   

    # lb_kube_apiserver_ip:

    lb_kube_apiserver_port: 8443

    has_deployed_containerd: “false”       # e.g. [ “true”, “false” ] containerd

    kubernetes_version: 1.31.1

    calico_version: 3.28.2

    pause_image: “registry.k8s.io/pause:3.10”

Далее следует дополнительно установить следующую библиотеку python3-netaddr для успешной установки:

dnf install python3-netaddr

Процесс установки k8s-кластера запускается следующей командой:

oedp run install -p ./kubernetes-1.31.1

Успешный процесс установки k8s-кластера будет сопровождаться примерно такого содержания текстом:

PLAY RECAP ****************************************************************************

192.16.5.138               : ok=45   changed=21   unreachable=0    failed=0    skipped=15   rescued=0    ignored=0

192.16.5.143               : ok=45   changed=21   unreachable=0    failed=0    skipped=15   rescued=0    ignored=0

192.16.5.48                : ok=58   changed=29   unreachable=0    failed=0    skipped=17   rescued=0    ignored=0

[ INFO ] – [run_action] – Execute succeeded

Проверка запуска кластера

На mastrer узле выполнить команду:

kubectl get pod -A

Пример успешного выполнения и запущенного кластера будет такой:

Рисунок 2. Пример выполнения команды kubectl get pod

Выполнив описанные выше действия, вы можете использовать oeDeploy для эффективного и удобного развертывания кластера k8s. В настоящее время oeDeploy уже поддерживает некоторые основные подключаемые модули, включая DeepSeek-R1, и находится в процессе расширения поддерживаемого ПО.