Жизнь платформы 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С".

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

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

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

См. также

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

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

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

08.12.2022    4137    kamisov    19    

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

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

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

26.01.2023    612    lopatrik    4    

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

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

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

09.12.2022    958    roman72    13    

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

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

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

07.12.2022    1119    vandalsvq    0    

Подбираем сервер для 1C:ERP Промо

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

На Infostart Meetup Ekaterinburg ведущий разработчик 1С в компании ФТО Виталий Онянов рассказал, как подобрать сервер для 1С:ERP и на какие показатели ориентироваться, чтобы оборудование для высоконагруженной системы оправдало вложения.

26.03.2021    21641    Tavalik    74    

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

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

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

28.11.2022    5683    Evil Beaver    8    

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

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

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

17.11.2022    1654    AntoShiK86    8    

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

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

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

15.11.2022    863    shastin87    5    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions Промо

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

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    12259    comol    32    

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

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

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

28.10.2022    2853    comol    6    

bsl2jsdoc - Генератор документации по файлам исходных текстов конфигурации (расширения) 1С: Предприятие 8.3

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

Генератор документации по файлам исходных текстов конфигурации (расширения) 1С: Предприятие 8.3. Используются "стандартные" для 1С комментарии описания методов.

25.10.2022    889    shmalevoz    4    

И тогда наверняка нас захватят облака Промо

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

Внимание! Данный текст содержит достаточно мало технических подробностей и готовых рецептов. Главным образом некоторые размышления на предмет будущего технологий и профессий. Некое лёгкое чтение на досуге.

28.06.2019    11530    comol    36    

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

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

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

26.07.2022    1399    user1815339    9    

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

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

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

17.07.2022    1060    1CUnlimited    2    

Настраиваем контейнеры Docker, Docker-compose (PHP + MySQL + Nginx + phpMyAdmin)

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

Настроим инструменты разработчика PHP через Docker.

08.07.2022    4595    John_d    22    

Моя война с Adodb.connection "Microsoft.Jet.OLEDB.4.0" на 64-х битных серверных ОС (86х) Промо

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

На тонком клиенте в управляемом приложении появилась потребность работы с Adodb.Connection. В моем случае это был драйвер "Microsoft.Jet.OLEDB.4.0". В файловом варианте все взлетело без проблем... А вот в серверном начались проблемы. Решениям этих проблем и посвящается данная статья.

20.02.2013    32402    Alexander.Shvets    11    

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

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

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

30.06.2022    1964    1CUnlimited    15    

Быстро в Jenkins

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

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

21.06.2022    5307    nixel    42    

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

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

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

04.06.2022    1668    andrewbc    2    

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

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

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

12.04.2022    896    user1699418    9    

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

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

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

08.03.2022    4731    dsdred    17    

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

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

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

01.03.2022    3130    malikov_pro    6    

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

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

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

16.02.2022    6730    digital-samolet    42    

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

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

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

12.12.2021    2145    SaschaG    4    

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

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

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

18.11.2021    3663    SaschaG    9    

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

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

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

31.10.2021    1052    dsdred    0    

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

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

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

30.10.2021    1110    dsdred    6    

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

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

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

29.10.2021    2143    dsdred    8    

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

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

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

13.10.2021    19337    Lichi001    17    

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

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

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

07.10.2021    1349    zhogov    2    

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

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

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

05.10.2021    2491    ArtfulCrom    3    

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

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

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

02.09.2021    1560    capitan    22    

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

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

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

26.08.2021    2058    khorevaa    8    

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

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

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

10.08.2021    606    akylov2002    4    

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

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

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

22.06.2021    8000    artbear    2    

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

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

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

21.06.2021    2651    dmitry-irk38    3    

Docker для 1Сника

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

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

07.06.2021    11380    ZhdanovR    33    

Осторожный DevOps

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

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

24.05.2021    3907    ig1082    4    

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

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

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

16.05.2021    4722    malikov_pro    0    

Как добыть последнюю версию SQL Server 2012 Native Client

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

Краткое руководство администраторам 1С по получению свежей версии SQL Server 2012 Native Client, необходимого для работы сервера 1С.

13.05.2021    16031    tedkuban    3    

Настройка сборки данных в Performance Monitor Windows Server. Рецепты от Капитана

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

Каждый опытный сисадмин знает, что лучший показатель ухудшения быстродействия 1С, это главный бухгалтер, движущийся в сторону ИТ отдела со скоростью, превышающей 1.1 м/с. Но только мудрейшие из них настраивают сбор счетчиков, чтобы эта встреча не застала их врасплох. Об этом и поговорим под катом...

07.05.2021    6514    capitan    21    

Шпаргалка установки сервера взаимодействия без MSI(9.0.33) использованием Postgresql в docker-compose

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

Какой бы не был бизнес - он нуждается в коммуникации. У кого-то Telegram, у других - Whatsapp, у кого то - электронные письма. Возникла задача наладить общение между пользователями базы 1С без мессенджеров. Скачав самую свежую версию на момент написания статьи 9.0.33, обнаружились некоторые подводные камни при установке.

07.04.2021    2771    yaroslavkravets    2