Жизнь платформы 1C:Предприятие в кластере Kubernetes

Публикация № 1795989 24.01.23

Разработка - DevOps и автоматизация разработки

Во многих сферах запуск приложений в Kubernetes является де-факто стандартом архитектуры, так как это позволяет быстро и эффективно задействовать ресурсы, не затрачивая на это большие деньги. Но с платформой 1С:Предприятие не все так просто, но потенциально возможно. Руслан Жданов на митапе «DevOps в 1С: CI/CD. Непрерывная интеграция и поставка решений на 1С» рассказал про то, как с помощью Kubernetes организовать в облаке управление кластером из серверов 1С и реализовать там тестирование приложений на 1С или запуск скриптов на OneScript.


Меня зовут Жданов Руслан, я занимаюсь релиз-инженерией с 2018 года.

В последнее время меня зацепило новое интересное направление – Kubernetes. И я решил поделиться своим интересом со всеми.

Тема Kubernetes довольно сложная, в связи с тем, что этот продукт для 1С мало применим. так как в основном, он используется для работы различных микросервисов. А 1С назвать микро сервисом, что то язык не поворачивается. Т.е. где-то есть, но зачем он нужен – непонятно.

И я попытаюсь рассказать о Kubernetes немного упрощенным способом. Для этой цели мы вспомним старенькую детскую игру, которая называется «Воображариум».

Будем фантазировать по поводу 1С в Kubernetes, а потом посмотрим, что получилось из того, что мы напридумывали.

 

Зачем нам Kubernetes для 1С?

 

Меня многие спрашивают: «Зачем это нужно? Куда это применить? Какой профит от бизнеса будет по поводу использования Kubernetes?»

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

  • Первое, что хотелось бы сказать по использованию контейнеризированных приложений и вообще систем оркестрации – это возможность масштабирования приложений. Представьте себе ситуацию, когда у вас есть кластер 1С из одного сервера. И у вас в какой-то момент начинает возрастать нагрузка – бухгалтера начинают отчеты формировать, либо закрытие месяца у вас идет. И за счет возросшей нагрузки ваша инфраструктура способна сама увеличивать ресурсы – добавлять в кластер сервера. Допустим, вам нужно пять серверов. Он арендовал мощности у облачного провайдера, дал вам сервера. Вы за то время, которое вам нужно, заплатили, а потом эти ресурсы отдали обратно облачному провайдеру. Ночью у вас нет нагрузки, вам для вашей базы достаточно, допустим, одного сервера с четырьмя ядрами и 12-ю гигабайтами оперативы для выполнения фоновых заданий. А днем при каких-то объемах работы вам этого не хватает. Это даст вам масштабируемость(auto scaling).
  • Далее – отказоустойчивость. Здесь даже можно объединить эти пункты в один. Когда вы разворачиваете сервера, вы задумываетесь о том, что мне делать, если сервер упал, жесткий диск отказал или еще что-нибудь? Было бы классно, если бы вы не заморачивались по этому поводу. Например, если у вас какой-то один сервер упал, в этот же момент поднялся и добавился в кластер точно такой же сервер. Да, возможно отвалятся клиентские соединения, но общий суммарный объем мощности вашего кластера в этот момент останется тем же.
  • Также хорошо будет, если вы сможете использовать инфраструктуру как код –например, чтобы развернуть весь ваш кластер полностью одной командой. Причем разворачивать его в различных версиях самой 1С, использовать для тестирования и каких-то других мифических задач.

При использовании оркестрации придумывайте, что хотите – все это можно, все это классно и интересно.

 

Задачи, которые требуется реализовать

 

Конечная цель этого проекта – это:

  • Запустить в Kubernetes полноценный кластер из определенного количества узлов – из одного или из пяти. Причем эти узлы сервера должны не просто запуститься, а собраться при запуске в единый кластер.
  • Естественно, нам нужно будет решить проброс серверной лицензии. С клиентской лицензией все проще – у нас есть USB-ключи и менеджер лицензирования, который может передать лицензию по сети. С серверной лицензией немного сложнее – мы дальше рассмотрим, что с этим можно сделать.
  • Прикрутить туда HiRAC со сбором метрик и выгрузкой их в Prometheus, и настроить scale notes на основе этих метрик – допустим, у нас появилась нагрузка, и мы начинаем увеличивать объемы наших серверов.
  • Естественно, нам нужны будут рабочие лошадки – клиенты 1С для тестирования или еще чего-нибудь.
  • И все это должно запускаться в одном файле.

Вот такая наша конечная цель.

 

 

Для этого нам нужно будет подготовить:

  • Образы для 1С – их большое количество и требования к ним достаточно большие. Причем, большинство дистрибутивов 1С проприетарные, поэтому мы их можем использовать только в рамках своей компании, выкладывать готовые образы в публичный доступ мы не можем.
  • Мы должны будем создать несколько манифестов для запуска самих объектов кластера внутри Kubernetes.
  • Должны будем решить кучу сопутствующих задач – по лицензиям, по масштабированию и т. д.
  • Задач, по факту, много. Чтобы все их решить, потребуется достаточно большое количество времени. Но опять же, возвращаясь к слайду с совой на глобусе, на текущий момент это – экспериментальное решение. И мы мечтаем.

 

Что такое Kubernetes?

 

 

Kubernetes – это сложная штука, ее проще всего представить как военно-морской флот.

  • У ВМФ есть штаб группы войск – тот, который управляет войском.
  • Есть различные военно-морские базы, на которых сидят генералы и управляют задачами, которые приходят на эту военно-морскую базу.
  • И есть суда, которые ходят по морям – они выполняют свои задачи, заходят на эти базы и т.д.

Вот такая инфраструктура.

Что мы можем про нее сказать?

  • Мастер-ноду Kubernetes, которая осуществляет управление всем кластером, можно представить как штаб войск. Такие штабы войск в армии полагается масштабировать – их должно быть несколько. Потому что если штаб один, и по нему неприятель ракетой ударит – все, войско обездвижено. Поэтому их децентрализуют, собирают в кластер и если вдруг что, они могут между собой делить задачи, координироваться – один ушел, второй пришел. У Kubernetes так же. Kubernetes Control Plane – это сам мастер. Он так же масштабируется – в продуктивных средах стандартно 3-5 мастеров.
  • А те военно-морские базы, на которые приходят корабли, про которые я говорил, являются нодами.
  • На этих нодах сидят кублеты (kubelet) – командиры, которые принимают задачи от группы штаба войск и своим подчиненным ставят задачи – возьми корабль, загрузи его и пусть он плывет туда-то. Либо сделай то-то. Это – так называемый исполнитель на рабочей ноде. Этих исполнителей может быть много.

Когда я говорил про масштабирование в Kubernetes, он поддерживает два вида масштабирования.

  • Первый вид масштабирования – на уровне контейнеров (подов), про них я буду дальше рассказывать.
  • И на уровне нод. Т.е. в случае, если нам не хватает ресурсов, мы можем заказать у облака заказывать дополнительные ноды (военно-морские базы), чтобы делать там свои задачи.

Таким образом в коротком приближении выглядит кластер Kubernetes.

 

POD

 

 

Что такое Pod? Это единичный абстрактный объект Kubernetes. Подом можно назвать какое-то судно. Наиболее приближенной аналогией является какая-нибудь баржа, на которую мы грузим контейнеры, и она плывет.

Pod – это, условно, неделимый объект в Kubernetes.

Если мы берем Docker, там неделимым объектом является контейнер. В Kubernetes неделимым объектом является Pod. А внутри пода может быть как один, так и несколько контейнеров.

Получается, что вы, когда разворачиваете кластер Kubernetes, у вас в нем крутится колоссальное количество подов. Они рождаются, живут, умирают, что-то с ними происходит. Так же, как и в военно-морском флоте, количество кораблей, находящихся в текущий момент в плавании, просто колоссальное количество.

 

Deployment и StatefulSet

 

Управление отдельным кораблем довольно сложное, но нам нужно управлять целыми армадами таких кораблей.

Чтобы дальше понимать, что мы собираемся делать с 1С, нужно разобрать несколько абстракций.

Первая абстракция, самая популярная, называется Deployment. С точки зрения военно-морского флота, это армада барж, на которых перевозят контейнеры. Правда, это ближе относится, наверное, к грузовым перевозкам, но пусть будет так.

Итак, у нас есть армада, в которой есть некоторое количество этих барж, и у каждой баржи есть какой-то случайный номер.

Причем, нам все равно, какой номер у этой баржи, и что она делает. Нам главное, знать, что их там плавает пять штук, на каждой по два моих контейнера.

Если эта баржа затонула, мы добавим туда новую с другим номером, но мой контейнер там также есть. Больше нас ничего не волнует.

Это – Deployment. Он характеризует объекты, которые работают по принципу «стада». Нам неважно, как его зовут, и кто он такой. Нам главное, чтобы он был. Если с этим объектом что-то случилось, сделаем новый, и все будет хорошо.

 

 

Другой объект называется StatefulSet. Это – армада больших военных кораблей.

Представьте, что есть военный корабль «Адмирал Кузнецов» – авианосец, флагман нашего военно-морского флота. Он – один-единственный авианосец в нашем военно-морском флоте.

Если с ним что-то случится, нам нужен точно такой же корабль, с таким же именем и с теми же параметрами.

То есть StatefulSet – это абстрактный объект Kubernetes для Stateful-приложений, в котором все объекты должны иметь четкое наименование. Это не только само судно (Pod, в частности), а именно класс объектов с таким именем – армада авианосцев, у которых есть определенные параметры. Причем при перезапуске этого пода он запустится с такими же параметрами.

Никогда не будет два одинаковых пода. Kubernetes гарантирует, что в армаде два одинаковых корабля не будет. Будут два разных корабля Адмирал Кузнецов-1 и Адмирал Кузнецов-2, но если второй упал, он поднимет такой же второй.

 

Сервер и клиент 1С в кластере k8s - как это работает?

 

 

В нашем инстансе нам нужно будет запустить некоторые объекты.

Первым и самым важным для нас является сервер 1С:Предприятие. Это – stateful-приложение, наш «Адмирал Кузнецов», который должен для этого контейнера опубликовать определенный набор портов:

  • это группа портов для подключения клиентских приложений;
  • для агента сервера;
  • для RAS и т.д.

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

 

 

Следующим объектом, который нам нужно будет запустить, является сервер баз данных.

Предвижу вопрос: «Нам же нельзя запускать базу данных в контейнерах». Да, я согласен с утверждением, что базы данных не должны работать в docker и в Kubernetes, их лучше разворачивать в специальных сервисах, но для наших целей сейчас этого вполне достаточно. Потому что в текущей реализации, которую я буду показывать, я даже не храню при перезапуске базу данных – она мне нужна только для того, чтобы подтвердить мою гипотезу, что все работает.

 

Далее – сервер администрирования кластера RAS.

Мы уже начинаем собирать нашу флотилию, которая идет в бой. Это 1С-ная флотилия, и нам нужен для этого еще один корабль, который будет управлять нашей флотилией.

Для этого мы берем поднимаем сервер администрирования кластера RAS. Нам не важно его имя, нам главное, чтобы этот кораблик был и чем-то управлял.

А рядом с ним мы поднимаем еще один контейнер.

Т.е. в одном поде будут два контейнера.

  • Один – с сервером администрирования RAS.
  • А во втором – будет API-инструмент для управления этим кластером.

    • Я использую в своей реализации ODIN – это решение от Алексея Хорева. Мне оно понравилось, потому что оно не требует использовать RAC, оно обращается непосредственно к RAS. И оно написано на Go, и Алексей обещал сделать упрощенную версию для работы в Kubernetes.

    • Также я планирую прикрутить туда в качестве альтернативы и HiRAC – для тех, кому не нравится ODIN. В принципе, HiRAC решает те же самые задачи, но, в связи с тем, что пока требуется наличие RAC, это немного увеличивает объем контейнера, и мне в текущий момент это было не совсем удобно.

К тому, что такое ODIN, и как он работает, мы потом еще вернемся.

 

Далее наши рабочие лошадки – маленькие кораблики, которые, собственно, и будут вести эту мини-войну – клиенты 1С:Предприятие. Они также разворачиваются в Deployment, потому что их там должно быть очень много, и они там периодически могут пристреливаться и появляться – с ними может происходить что угодно, нам несильно важно, что с ними происходит в текущий момент.

 

Управление объектами Kubernetes с помощью файла манифеста

 

Теперь подумаем о том, как это вообще все выглядит в Kubernetes.

Все объекты Kubernetes представляются в виде манифеста – в формате JSON или YAML.

Это – декларативный способ описания объектов. Он не сильно сложный, но он разномастный:

  • Во-первых, объектов Kubernetes очень много.
  • А во-вторых, у этих объектов большое API – каждый объект может иметь несколько реализаций, в зависимости от того, какую версию API мы используем. Есть API, которое сейчас является релизным. Есть то, которое находится в beta-версии, в alpha-версии. У них могут быть отличия. Поэтому чтение документации по написанию объектов Kubernetes – это основная задача.

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

 

Для этих целей умные люди придумали такой инструмент, как Helm. Это пакетный менеджер для Kubernetes, который позволяет одной командой развернуть полностью какой-то объект.

Есть умные люди, которые написали для этого сервиса helm chart – условно, репозиторий. Написали какое-то приложение и сделали для него конфигурационные YAML-файлы.

Ты набираешь команду
 

install myApp


и все, он тебе разворачивает твое приложение на основе этих конфигов.

Очень простое решение – если у вас в наличии кластер Kubernetes, вы можете одной командой развернуть тот же GitLab, Jenkins, и все это будет работать сразу «из коробки».

Там довольно простой синтаксис, но к нему нужно подходить и читать.

 

Напомню, что Helm – это пакетный менеджер, который нам потребуется, чтобы развернуть наш кластер Kubernetes.

Для этого есть репозиторий Kubeonec – это helm chart, который я сейчас разрабатываю, чтобы мы могли развернуть полноценный кластер 1С в Kubernetes по тем идеям, которые мы сейчас только что обговорили.

 

Как мониторить сервер и решить вопрос с лицензиями?

 

Мечтать – это хорошо, но не все получается. И тут мы сталкиваемся с реальностью.

Первая проблема – это автоматическое масштабирование кластера. Поднять новый сервер и скриптом добавить его в кластер – это несложная задача, ее можно реализовать. Но дело в том, что сама 1С не всегда работает так, как от нее ожидаешь. И не всегда увеличение серверов в кластере увеличивает производительность самого кластера, поскольку там еще требуются дополнительные настройки в рамках назначения функциональности и другие специфичные настройки самого кластера. Для этого потребуется довольно большой объем работы. Плюс туда надо еще идти и копать. Поэтому серверы-то создать можно, но в кластер их пока не собрать.

Дальше – проброс серверной лицензии в кластер. Это – самая большая проблема, которая на текущий момент существует. Дело в том, что у 1С нет возможности получать пинкоды или лицензии через REST API. Было бы неплохо – поднял запрос по REST API, он тебе вернул лицензию. Но пока что такого нет. Я знаю два варианта для проброса USB-ключа через TCP, которые, возможно, будут работать:

  • USB-redirector для Linux, который используют для проброса ЭЦП в кластер Kubernetes или на виртуальные машины.
  • И второй вариант – Fabulatech USB Over Network. Есть подтверждение, что через него также можно пробросить HASP-ключи. Допустим, у тебя есть Raspberry PI и, если для нее существует драйвер для USB-ключа, на ней можно поднять VPN и закинуть ее в Kubernetes, чтобы Pod получил USB-ключ. Все должно работать.

Еще один вариант – использование программных лицензий. Как мы говорили, приложения в StatefulSet сохраняют свое состояние. Если этот StatefulSet запускается на одной и той же ноде, а это можно сделать настройками кластера, используя Node Affinity или еще какие-то инструменты, то мы, в принципе, можем эмулировать проброс лицензии. Поскольку лицензия для конфигурации хранится в контейнере Linux в виде файла, а мы этот файл пробрасываем в Volume, то есть вероятность того, что лицензия при перезапуске этого пода не отвалится. Эту гипотезу я еще не прорабатывал, но мне кажется, что так можно будет решить эту проблему с лицензированием. Может быть, к тому времени, пока я это решу, что-нибудь изменится и в 1С. Но пока (прим. ред. февраль 2021 года) подвижек со стороны 1С, к сожалению, нет.

И третий вопрос – это мониторинг сервера. Для него можно использовать HiRAC от Артема Кузнецова, который тоже нужно прикрутить, но я пока еще не до конца разобрался, как это сделать.

 

Сборка образа

 

В заключение презентации я хочу показать, как собираются образы.

Я собираю их с использованием объекта Kubernetes под названием JOB. Это тот же самый Pod, который запускается, выполняет работу и при успешном выполнении переходит в статус «Выполнен». На этом он заканчивает свою работу. Он не висит долгое время, а просто выполнился и закончился.

JOB – это классный инструмент, чтобы выполнить какую-то определенную задачу, допустим, запустить GitSync. Он выполнит свою задачу и закроется, а потом специальный мусоросборщик будет удалит эти выполненные джобы.

Я для сборки образов использую инструмент kaniko – это крутой инструмент, написанный на Go.

Тем, кто использует Docker в своих CI-контурах, я очень сильно советую посмотреть kaniko, потому что этот инструмент позволяет вам собирать образы безопасно. Вам не нужно внутрь контейнера прокидывать docker-socket – это ужасная дырка в безопасности.

И далее производится публикация этих образов в приватный docker-registry.

Когда мы запускаем наш инстанс, у нас из этого приватного docker-registry забираются образа, и нам наступает счастье.

 

Кластер Kubernetes

 

 

Перейду к внешнему виду. У меня есть кластер Kubernetes, который поднят в MCS (Mail.ru Cloud Solutions).

 

 

Это – простейший кластер, он состоит из одного мастер-узла и одной ноды.

Суммарный объем ноды – 3 процессора, 6 ГБ оперативы.

Возможно ли использование кластера k8s в качестве тестового сервера для 1С?

 

 

У меня есть репозиторий Kubeonec, я его открываю в Visual Studio Code.

Helm chart я уже развернул, разворачивается он в течение 15 минут по инструкции из репозитория https://github.com/thedemoncat/kubeonec/README.md. Вам нужно будет собрать образы и создать несколько секретов для доступа.

Как посмотреть, что у меня запущено?

Небольшое введение – Kubernetes тоже поддерживает неймспейсы. Когда у вас большой кластер Kubernetes, вы можете его поделить на отдельные неймспейсы, и каждому из своих разработчиков отдать свой неймспейс. Если там еще и правильно настроены права доступа, то разработчик никогда не сможет навредить объектам, находящимся в другом неймспейсе. У меня для моего сценария создан неймспейс – я назвал его onec.

 

 

Т.е. я себе сейчас через команду

kubectl get pods -n onec

запрашиваю те поды, которые у меня сейчас работают. И мы видим, что у меня сейчас подняты поды для:

  • PostgreSQL
  • Сервера 1С
  • Кластера управления API – этот под состоит из двух контейнеров
  • И клиента 1С

 

 

Когда я говорил о том, что иметь конфигурационный файл – это классно, я имел в виду вот такой yaml-файл.

Если мне нужен не один сервер, а три, я ставлю параметр

replicaCount: 3

и выполняю команду

helm upgrade -i onec-server -n onec -f values.yaml charts/kubeonec

с просьбой к helm chart, чтобы он обновил инстанс.

 

 

Смотрите, он начал мне создавать новые сервера. Если есть Prometheus, метрики и правильно настроен scale, контейнеры с серверами должны добавляться в кластер автоматически.

Далее у нас есть API-контейнер, в котором находится управлялка нашим кластером. К ней мы перейдем чуть позже. Для начала мы посмотрим, что у нас происходит в клиенте, и насколько это все работает.

 

 

Зайдем внутрь контейнера клиента и откроем там bash по команде

kubectl exec -it -n onec onec-server-kubeonec-onec-client-798974dff-qswbt -- bash

Здесь принцип похож на работу с docker.

  • -n onec – это неймспейс, в который мы заходим.
  • onec-server-kubeonec-onec-client-798974dff-qswbt – имя контейнера
  • -- bash – с помощью bash мы полезем вовнутрь.

Я заметил, что если зайти в контейнер и долго ничего не делать, автоматически выбрасывает из подключения. Это – нормальное явление. Так что периодически подключение будет отваливаться, к нему нужно будет еще раз возвращаться.

 

 

По команде ps aux мы можем посмотреть, какие процессы здесь запущены

У нас здесь запущен Xorg для 1С и noVNC, чтобы мы в браузере могли посмотреть, что происходит.

 

 

В отдельном терминале я сделаю проброс порта, чтобы мы могли посмотреть, что там вообще происходит. Пишу

kubectl port-forward -n onec onec-server-kubeonec-onec-client-798974dff-qswbt 6080:6080

У меня noVNC публикуется на порту 6080, и я хочу его просмотреть локально на порту 6080.

 

 

Теперь заходим в браузер по адресу http://127.0.0.1:6080 и видим – noVNC запустился.

Попробуем подключиться – все черное, потому что пока у нас ничего не запущено.

 

 

Возвращаемся к нашей консоли - вызрвем bash

kubectl exec -it -n onec onec-server-kubeonec-onec-client-798974dff-qswbt -- bash

И запустим здесь 1С – она у нас находится в папке

/opt/1C/v8.3/x86_64/1cestart

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

 

 

Мы видим, что 1С запускается.

 

 

И начинаем создавать новую серверную базу.

 

 

Создаем базу без конфигурации.

 

 

Выбираем создание на сервере.

 

 

Указываем параметры.

  • Имя сервера у нас – onec-server-kubeonec-onec-server-0
  • Имя информационной базы в кластере – demo
  • Тип СУБД – PostgreSQL
  • Сервер баз данных у нас тоже имеет красивое название
    onec-server-kubeonec-postgres-service
  • Имя базы данных – demo
  • Пользователь у меня – postgres (без пароля)

Нажимаем и ждем.

 

 

В защиту Kubernetes я могу сказать, если бы вы поднимали 1С в docker, у вас часто могла возникнуть ошибка принадлежности сервера из-за того, что имя сервера 1С возвращается неправильное. Когда клиент стучится к кластеру, он сперва обращается к менеджеру кластера и говорит – дай мне, пожалуйста, имя сервера, с которым я могу установить соединение. Если это в docker, он возвращает имя docker-хоста, в котором он работает. Оно зачастую короткое, при этом клиент не знает, о том, какое у него DNS-имя. Из-за этого возникает ошибка принадлежности сервера либо ошибка определения хоста – там есть два варианта этой ошибки. В Kubernetes за счет специального объекта service этой проблемы нет.

 

 

Все, мы видим, серверная база создалась.

 

 

Проверяем – все работает.

 

 

Если мы посмотрим, в контейнере клиента есть OneScript. Это значит, что в этом контейнере можно запускать любое тестирование – все, что касается тестирования на Linux.

 

 

Теперь пойдем в контейнер с API – опять посмотрим, как он у нас называется и пробрасываем его на порт 3001.

ku port-forward -n onec onec-server-kubeonec-onec-cluster-api-754f89ff8b-kjhxq 3001:3001

Здесь в качестве управления API, я использую решение ODIN от Алексея Хорева, но с таким же успехом сюда может быть прикручен и HiRAC.

Теперь заходим по адресу http://localhost:3001.

 

 

У ODIN есть веб-интерфейс и большое количество методов. Часть методов еще нереализована.

Теперь давайте посмотрим, что у нас есть.

 

 

Так как он может работать с кучей различных серверов, у него есть такое абстрактное понятие как app. И вот он мне возвращает, что есть приложение, которое сидит на localhost, к нему можно обращаться. Это по факту, возвращает мне приложение для взаимодействия с RAS.

 

 

Я могу сказать, что у меня есть конкретное приложение onec.

 

 

Если я хочу посмотреть его кластер, он мне возвращает данные по кластеру.

 

 

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

Таким образом работает инстанс Kubeonec с 1С.

Если вам интересно погрузиться в дебри Kubernetes, попробуйте скачать его с GitHub https://github.com/thedemoncat/kubeonec и развернуть.

Мое личное мнение – это достаточно перспективное направление. В любом случае 1С должна будет прийти к стеку облачных технологий – ей от этого не уйти. Да, это, возможно, займет много лет, в любом случае, она к этому когда-нибудь придет.

 

Вопросы

 

Вы используете контейнеризацию 1С для запуска тестов на разных версиях платформы, в разных окружениях?

Да, мы делали параллельное тестирование в docker. ADD запускала BDD-тесты в параллели – в различных контейнерах, на разных версиях платформы. В репозитории add лежит Jenkinsfile, как мы это делали.

Квест с лицензиями в docker мы прошли, и это было реально интересно.

А так – да, docker много где используется. GitSync на нем классно запускать, работает. Хранилище можно в docker запускать – вполне нормально работает без запроса лицензий. Есть множество возможностей, где docker для 1С будет нормально работать.

 

 

 

Статья написана по итогам доклада (видео), прочитанного на онлайн-митапе "DevOps в 1С: CI/CD. Непрерывная интеграция и поставка решений на 1С".

Больше статей можно прочитать здесь.

Приглашаем на мероприятия Инфостарта 2023 года:

  • 25-27 мая, Анализ & Управление в ИТ-проектах - первая практическая конференция для аналитиков и руководителей проектов, 30% докладов и 70% практических сессий.
  • 11-13 октября, Infostart Event 2023 - самое масштабное событие в сфере 1С-индустрии, 1000+ участников, 130+ докладов.

 

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kolhoznik 24.01.23 12:07 Сейчас в теме
Отдельный сервер лицензирования с раздачей серверных лицензий не рассматривался как вариант?
2. ZhdanovR 80 24.01.23 12:23 Сейчас в теме
(1)Если только сетевой менеджер лицензий + физический (USB) ключ. Доступ к нему нужно будет пробросить в кластер.
Программные лицензии не получится использовать(как минимум очень не удобно), так как сервер с лицензиями придется добавлять каждый раз в кластер серверов развернутый в кубере
3. ashvik 25.01.23 17:02 Сейчас в теме
4. пользователь 06.02.23 06:17
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

См. также

Получаем статистику по git-репозиторию в разрезе разработчиков

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Бесплатно (free)

Итак! Представим, что наступил момент, когда разработка через исходный код реализована на предприятии в полном объеме. Мы разрабатываем в EDT или конфигураторе (но выгружаем конфигурацию в исходный код), версионируем внешние отчеты и обработки и расширения, собираем релизы, проверяем код статическим анализом, в разработке царит гармония и мир. Красота! Но менеджерам этого мало, всегда хочется чего-то еще, и вот мне прилетает задача - дай статистику по вкладу в код каждого разработчика.

13.03.2023    790    ardn    3    

23

SonarQube: про объемы, ветки, покрытие кода и интеграцию с Gitlab

DevOps и автоматизация разработки Рефакторинг и качество кода Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Опыт применения SonarQube в нескольких командах. Плюс некоторые тонкости: уменьшение объемов базы SQ, интеграция, покрытие кода.

26.02.2023    1930    kraynev-navi    10    

42

DevOps для Плейстоцена. Скрещивание обычных форм толстого клиента с практиками CI/CD

DevOps и автоматизация разработки Бесплатно (free)

Плейстоцен — эпоха четвертичного периода, начавшаяся 2.588 миллионов лет назад и закончившаяся 11,7 тысяч лет назад. В 1С этот период характеризуется обычными формами, использованием толстого клиента и вызовом «Предупреждение» без таймаутов прямо из модулей проведения документов. О том, как внедрять инженерные практики для огромного монолита легаси и тестировать функциональность без менеджера и клиента тестирования под разными пользователями, на конференции Infostart Event 2021 Moscow Premiere рассказал ведущий программист компании BCS FinTech Сергей Голованов.

20.02.2023    1250    Golovanoff    17    

14

Быстрое конфигурирование серверов с Ansible

Администрирование веб-серверов Сервера Бесплатно (free)

Всю рутину по обновлению платформы, настройке веб-серверов и серверов хранилищ на всем парке серверов компании можно автоматизировать с помощью удобочитаемых YAML-скриптов Ansible. О том, как написать сценарии такой автоматизации, чтобы запускать их параллельно для группы серверов, на митапе «Инструменты автоматизации рутины в 1С-разработке» рассказал ведущий разработчик компании ПИК Digital Павел Комаров.

26.01.2023    1425    lopatrik    4    

21

Концепция ландшафта 1С-систем на предприятии

DevOps и автоматизация разработки Управление ИТ-подразделением Бесплатно (free)

Визуализация размещения программных ресурсов и сервисных данных 1С-систем в корпоративном ландшафте. Как 1С-службе и ИТ-службе договориться о разграничении, получить свободу для своих задач и сохранить порядок во взаимодействии.

09.12.2022    1180    roman72    13    

7

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Прокси хранилища 1С (IIS, OneScript)

Групповая разработка (Git, хранилище) OneScript DevOps и автоматизация разработки Платформа 1С v8.3 Россия Бесплатно (free)

Избавляемся от версионной зависимости, проверяем комментарии, вызываем веб-хуки, делаем красивые пути. И все это на привычном IIS и понятном OneScript.

08.12.2022    4851    kamisov    24    

81

Что, если Continuous Integration – это прежде всего практика, а не набор инструментов?

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Бесплатно (free)

Рано или поздно многие компании приходят к практикам DevOps. И начало этому – Continuous Integration. О том, что происходит в команде специалистов 1С, когда они переходят на Git, и почему простое внедрение CI-инструментов не решает проблему подходов к разработке, в докладе на Infostart Event 2021 Post-Apocalypse рассказал руководитель компании ПрогТехБизнес Александр Анисков.

07.12.2022    1391    vandalsvq    0    

23

Управление хранилищами без боли

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Бесплатно (free)

Когда хранилищ много, возникает вопрос удобного управления ими. Андрей Овсянкин на онлайн-митапе «Инструменты автоматизации рутины в 1С-разработке» рассказал, как настроить перенос хранилища на новую версию платформы без перепрописывания путей у каждого разработчика, и как безболезненно обеспечить для хранилища запрет коммита с пустым комментарием.

28.11.2022    6366    Evil Beaver    11    

86

Трое в лодке, не считая собаки - Автономный сервер 1С

Сервера 8.3.14 Конфигурации 1cv8 Бесплатно (free)

Краткая шпаргалка по Автономному серверу 1С. Описаны основные параметры настройки и быстрый алгоритм развертки на ПК.

17.11.2022    1952    AntoShiK86    8    

22

Как избавиться от большого количества комментариев в коде с использованием EDT + Git

Рефакторинг и качество кода DevOps и автоматизация разработки Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Публикация освещает вопрос улучшения качества и читабельности кода путем отказа от излишних комментариев. Рассматривается пример из опыта работы команды разработки на EDT + Git. Команда работает в EDT меньше года. Конфигурация сильно доработана и не обновляется типовыми релизами.

15.11.2022    991    shastin87    5    

9

Работа с 1С:Аналитика Промо

Онлайн-курс предусматривает изучение возможностей системы “1С:Аналитика”, которая работает как составная часть платформы “1С:Предприятие” и обеспечивает оперативный просмотр и анализ необходимых данных.

4500 рублей

Продуктовая разработка на 1С

Идеи и тренды в разработке Облачные сервисы, хостинг Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

На 1С можно создавать онлайн-сервисы, не уступающие по функциональности другим современным продуктам. Чтобы начать это делать, нужно поменять подходы к разработке. О том, как быстро сделать свой продукт на 1С и выйти с ним на рынок, на конференции Infostart Event 2021 Post-Apocalypse рассказал CTO компании WiseAdvice Олег Филиппов.

28.10.2022    3160    comol    6    

34

Миграция 1С с физического сервера в облако

Облачные сервисы, хостинг Бесплатно (free)

Миграция 1С в облако. Что необходимо учитывать при переносе баз данных, чем отличается установка 1С на виртуальный сервер и каковы преимущества расположения 1С в облаке.

26.07.2022    1682    user1815339    9    

-2

1C MSSQL против Матрицы виртуализации – перезагрузка

Облачные сервисы, хостинг Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Продолжение статьи https://infostart.ru/1c/articles/1686720/ о методах анализа производительности 1С + MS SQL в виртуальной среде. Заключительная развязка оказалась одновременно неожиданной и банальной в духе современной эпохи.

17.07.2022    1232    1CUnlimited    2    

14

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

В курсе обобщен опыт работы аналитика на проектах в течение пяти лет, в нескольких фирмах. Подходы к написанию документов унифицированы и по возможности не привязаны к конфигурациям 1С.

3 500 рублей

1С + MS SQL против Матрицы виртуализации

Облачные сервисы, хостинг Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

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

30.06.2022    2215    1CUnlimited    15    

15

Быстро в Jenkins

DevOps и автоматизация разработки Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Написать свою сборочную линию для решения на 1С – задача нетривиальная: собрать конфигурацию из исходников, конвертировать между форматами, запустить множество инструментов, агрегировать результаты, сформировать отчеты... А хочется ведь просто ЗапуститьСвоюСборку()... Можно? Можно! О том, как создать сборочную линию за 5 минут в формате «Далее-далее-готово» на конференции Infostart Event 2021 Moscow Premiere рассказал Никита Федькин.

21.06.2022    6122    nixel    49    

81

Подключение двух и более COMConnector'ов (COM-соединений) к различным релизам сервера 1С:Предприятие 8.3 на одном компьютере

Сервера Платформа 1С v8.3 Россия Бесплатно (free)

В публикации рассматривается вопрос о создании двух и более одновременно работающих COM-соединений к различным релизам сервера 1С:Предприятие 8.3 на одном компьютере. Разрабатывалось, тестировалось и работает под платформами 1С 8.3. Но, насколько я углубился в тему, этот алгоритм должен работать и под 8.1, и под 8.2 и в комбинациях.

04.06.2022    2082    andrewbc    2    

15

Миграция сервисов 1С в облачное пространство

Облачные сервисы, хостинг ИТ-компания Россия Бесплатно (free)

В рамках сопровождения ИТ-инфраструктуры и бизнес-приложений одного из заказчиков появилась идея отказаться от серверных физических мощностей и перевести критически важные производственные 1С сервисы на облачную площадку. В статье расскажем более детально о проекте PROF-IT GROUP, этапах, ходе реализации, и, конечно же, о результатах.

12.04.2022    959    user1699418    9    

3

Распознавание и загрузка документов в 1С Промо

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд). Точность распознания до 98%.

от 11 рублей

Разворачиваем на Windows 11: Hyper-V, Microsoft Hyper-V Server 2019 и SQL Server 2019 Dev [Шпаргалка]

Сервера Бесплатно (free)

Шпаргалка по установке бесплатных Microsoft Hyper-V Server 2019 и MS SQL Server 2019 Dev.

08.03.2022    5621    dsdred    17    

32

Окружение сервера 1С на арендованном выделенном сервере

Сервера Linux Бесплатно (free)

Установка Proxmox на OVH, настройка VPN и контейнера для 1С.

01.03.2022    3502    malikov_pro    8    

26

APDEX 1C + Prometheus + Grafana + Superset, а точнее наоборот

DevOps и автоматизация разработки Платформа 1С v8.3 Россия Бесплатно (free)

Вы не задумывались о том, что расчет APDEX должен быть онлайн? Онлайн для всех - от бизнес-пользователей до команды разработки. Если задумывались - то в статье мы расскажем, зачем это делать, и поделимся наработками, как подключить 1С+APDEX к такой штуке, как Prometeus.

16.02.2022    7362    digital-samolet    42    

95

Как Gitlab-CI и OneScript могут отсортировать массив (Часть 2)

DevOps и автоматизация разработки Бесплатно (free)

Продолжение сквозного примера настройки Gitlab-CI - вывод результатов теста, условия запуска и таймауты.

12.12.2021    2334    SaschaG    4    

16

Как Gitlab-CI и OneScript могут отсортировать массив (Часть 1)

DevOps и автоматизация разработки Бесплатно (free)

С приходом в 1С EDT мы получили git. С git-ом пришел и gitlab, а он уже дает инструменты по CI. Что такое CI? Ну все же знают, как обычно просят обновить прод? Желательно ночью? Желательно проверив на копии, что ничего не сломаем? Ну так вот: CI – это личный помощник, который все сделает сам. Надо только правильно его попросить...

18.11.2021    3887    SaschaG    9    

73

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Yandex Cloud Managed Service: мониторинг, планы обслуживания, бэкапы и выводы

Облачные сервисы, хостинг Мониторинг Бесплатно (free)

Давайте поговорим о средствах мониторинга, планах обслуживания и, как ни странно, о бэкапах.

31.10.2021    1188    dsdred    0    

6

Yandex Cloud Managed Service: создание и перенос баз (реальные кейсы)

Облачные сервисы, хостинг Бесплатно (free)

О том, почему нельзя просто переехать в Yandex Cloud Managed Service for SQL и как работать с бэкапами.

30.10.2021    1225    dsdred    6    

1

Как нам живется с Yandex Cloud Managed Service?

Облачные сервисы, хостинг Бесплатно (free)

Managed Service for SQL Server был запущен на Yandex.Cloud 18.12.2020, мы его используем с января 2021. Нам обещано, что почти всю головную боль на себя берет Yandex Managed Service for SQL Server. Так ли это?

29.10.2021    2280    dsdred    8    

18

Поднимаем сервер 1С на UBUNTU и PostgreSQL за 20 минут

Сервера Россия Бесплатно (free)

Краткое, но рабочее описание, как развернуть сервер Postgresql и сервер 1С на Ubuntu быстро и без лишних размышлений.

13.10.2021    22123    Lichi001    17    

36

Финансовая сторона вопроса 1С на Linux в рамках облачных предложений

Облачные сервисы, хостинг Бесплатно (free)

Генеральный директор ИТ-компании «+Альянс» Александр Жогов на митапе "1С и Linux" рассказал об использовании облачных предложений для оптимизации финансов, сравнил стоимость владения и быстродействие при размещении инфраструктуры компаний локально и в Microsoft Azure.

07.10.2021    1407    zhogov    3    

8

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

1С, Linux, облака…

Облачные сервисы, хостинг Мониторинг Платформа 1С v8.3 Бесплатно (free)

Архитектор проекта ENOTE Александр Кирилюк выступил на Infostart Meetup «1С и Linux». Александр поделился с коллегами, как начать жить в облаках, выбрать для этого подходящие ЦОДы и ПО и справиться как с распространенными, так и редкими проблемами Linux-систем.

05.10.2021    2668    ArtfulCrom    3    

21

Перекуем Cloud на Oracle. Тестируем размещение 1С в облачной платформе Oracle Cloud.

Администрирование СУБД Облачные сервисы, хостинг Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

После цикла публикаций про размещение 1С в облачных сервисах я думал, что все различные варианты рассмотрены и тема для меня закрыта. Однако есть события, мимо которых не пройти. Так вот и сейчас, когда наблюдается аттракцион невиданной щедрости от Oracle, мимо этого просто так не пройти.

02.09.2021    1636    capitan    22    

9

Ферма ОДИНа или как управлять множеством Серверов 1С: Предприятие из одной точки

Мониторинг Сервера Платформа 1С v8.3 Бесплатно (free)

У Вас много серверов приложений 1С Предприятие разных версий и их надо мониторить и администрировать. Новое приложение для управления фермой ОДИНа как раз для тебя.

26.08.2021    2247    khorevaa    8    

31

Создание приложения Red Hat Fuse на основе OSGI-контейнера Karaf

Сервера Бесплатно (free)

Red Hat Fuse - это промышленная интеграционная шина. Предлагаю вашему вниманию способ ее запуска из Red Hat Code Ready Studio и тестовый пример использования Apache Camel. Система будет считывать содержимое поступающих на её вход файлов и в зависимости от заданных в них реквизитов будет перемещать эти файлы между разными папками.

10.08.2021    649    akylov2002    4    

2

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Как начать разработку проекта 1С, чтобы легко перейти к DevOps-практикам

DevOps и автоматизация разработки Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Многие рутинные операции при работе над проектом 1С можно автоматизировать – довериться готовым инструментам и уменьшить количество нажимаемых кнопок. О том, как с помощью готового шаблона проекта настроить окружение для разработки на митапе «DevOps в 1С» рассказал технический директор Инфостарта Артур Аюханов.

22.06.2021    8520    artbear    2    

72

Микросервисы на Golang. Часть 6. Докеризация, Начальная оркестрация, CD\CI

DevOps и автоматизация разработки Конфигурации 1cv8 Бесплатно (free)

Создадим микросервис, поместим его в докер, проведем его масштабирование на нескольких виртуальных машинах с помощью оркестрации Docker Swarm, выполним также CD\CD микросервиса с помощью GitHub Action (Микросервис взят с прода, обрезан лишний функционал) будет показан пример его взаимодействия с 1С клиентом.

21.06.2021    2889    dmitry-irk38    3    

6

Docker для 1Сника

DevOps и автоматизация разработки Платформа 1С v8.3 Бесплатно (free)

На онлайн митапе «DevOps в 1С» Руслан Жданов рассказал, для чего 1С-нику нужен Docker, как его применять, какие сервисы можно вынести в контейнеры и как организовать взаимодействие контейнеров друг с другом.

07.06.2021    12577    ZhdanovR    34    

41

Осторожный DevOps

DevOps и автоматизация разработки Платформа 1С v8.3 Бесплатно (free)

Начальник отдела разработки в компании «Билайн» Игорь Сухоруков на Meetup Infostart DevOps поделился особенностями работы своего ИТ-подразделения и рассказал о том, как устроено производство и внедрение ПО в режиме нон-стоп в компании, подразделения которой работают по всей России: от Москвы до Владивостока.

24.05.2021    4037    ig1082    4    

32

Ненавязчивая локальная разработка с traefik2, docker и letsencrypt

Групповая разработка (Git, хранилище) DevOps и автоматизация разработки Бесплатно (free)

Перевод статьи по проксированию HTTP траффика до сервисов развернутых в docker контейнерах. Оригинал от 24.09.2020.

16.05.2021    5041    malikov_pro    0    

8