TGViewer
cloudnative-1c | Овчаренко Дмитрий cloudnative-1c | Овчаренко Дмитрий @cloudnative_1c · 259 subscribers
Post #25 194
Всем привет! Продолжаю тащить 1С в кубер 😎

Напомню: я хочу не просто запустить сервер 1С в Kubernetes, а хочу сделать так, чтобы с ним можно было работать из тонкого/толстого клиента снаружи Kubernetes.

Я думал было уместить все в один пост, но материала оказалось много, поэтому сделаю несколько частей. Подпишись, чтобы не пропустить!

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

Прокомментирую важные моменты по дизайну решения:

📌 можно запариться и развернуть Docker Registry с HTTPS, а можно просто "загрузить" образ сервера 1С прямо в kind командой kind load docker-image. Я выбрал второе 😅

📌 каждый сервер 1С определяется через отдельный StatefulSet с количеством реплик равным 1

В будущем я хочу делать так, чтобы разные серверы 1С имели разные настройки, как минимум разные ТНФ. Для этого стандартный StatefulSet не подходит: в нем для всех реплик используется единая спецификация. То есть все поды-реплики хоть и будут иметь некую идентичность, настройки у них будут одинаковыми. Получается, в будущем надо будет придумать свой объект для кубера, описывающий сущность типа «группа серверов 1С». Да, такое возможно, но это я сильно вперед забегаю. Пока останавливаюсь на формуле один сервер 1С = один StatefulSet с одной репликой. Кстати, для начала я в кубере разверну не один кластер из двух серверов 1С, а два разных кластера. Но это тоже пока.

📌 сервисы Kubernetes

Помимо манифестов StatefulSet, в cluster1c.yaml есть также манифесты для сервисов двух типов: Headless Service и LoadBalancer.
Первый сервис нужен для взаимодействия с серверами по имени. Второй нужен для того, чтобы опубликовать серверы 1С наружу. См. схему из предыдущего поста. В манифестах сервисов я указал все порты 1С по умолчанию и успел огорчиться от того, что в них нельзя задавать порты диапазонами 😢 Из-за этого манифест превращается в простыню на 600+ строк.

Как сервисы понимают, к каким StatefulSet им надо "присоединиться"? Все просто - по совпадению полей selector, которые указываются и в Service, и в StatefulSet. Там и там они должны совпадать.

📌 использование MetalLB

В моей лаборатории нет настоящего managed-кластера Kubernetes, которым управляет большой облачный провайдер, поэтому приходится решать многие вопросы самостоятельно. Например, выставлять сервисы наружу я буду с помощью собственного балансировщика на базе MetalLB.
В манифесте metallb.yaml я задал два диапазона IP-адресов: один для серверов 1С, другой для DNS. Диапазон для DNS состоит из одного адреса и имеет свойство autoAssign: false. Это нужно для того, чтобы этот адрес не назначался автоматом никуда, а использовался только публикации сервиса DNS.

А вот о настройке CoreDNS + resolvctl и обо всем остальном я расскажу в следующих постах.

Кстати, я совсем забыл: куда же без базы данных? Предлагаю решить голосованием, какой вариант мне поднять - обычный контейнер с Postgres от 1C или сразу сloudnative-pg? Как говорится, чего мелочиться-то?

PS: тем временем релиз gitsync 3.7.0 я наконец-таки выпустил! Ура!
  • 🔥 3
More from @cloudnative_1c
  1. Jan 17, 2026Вчера произошло столкновение моего стенда с чугунной жопой реальности 😁 Ничего особо стра…
  2. Jan 13, 2026Продолжаю переписываться с поддержкой 1С по поводу того, что сервер не выдает клиенту комь…
  3. Jan 10, 2026👋 Всем привет! Потихоньку вливаемся в рабочий режим! На каникулах мне пришлось организова…
  4. Dec 31, 2025По многочисленным 😅 просьбам комментаторов в предыдущем посте, напишу, что у меня было са…
  5. Dec 30, 2025⚡️Подробности про установку 1С в кластер Kubernetes Манифесты для серверов 1С у меня уже б…
  6. Dec 28, 2025🎉 TA-DAAAA! Это самое долгожданное сообщение об ошибке лицензирования за всю мою карьеру…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →