> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Ізольована компіляція

> Компілюйте LaTeX у контейнерах TeX Live на вузлах кластера Kubernetes.

Компіляції виконує служба **clsi** у кожному поді Ayakaleaf Pro. Коли ізольовану компіляцію ввімкнено, clsi просить **Docker Engine вузла**, на якому працює под, запустити контейнер TeX Live для кожної компіляції та передає йому каталог проєкту за його шляхом на цьому вузлі. Як працює ізоляція та які образи існують, описано в розділі [Ізольована компіляція](https://ayakaleaf-pro.mintlify.site/uk/on-premises/configuration/overleaf-toolkit/sandboxed-compiles.md).

| | |
| - | - |
| Служба | clsi (компіляції), web (список образів у налаштуваннях компілятора) у кожному поді Ayakaleaf Pro |
| Вузол | Docker Engine і кожен образ з `ALL_TEX_LIVE_DOCKER_IMAGES` на кожному вузлі, де може працювати Ayakaleaf Pro |
| Монтування пода | `/var/run/docker.sock`, а також каталоги компіляції, виводу та кешу як томи `hostPath` |
| Періодичні завдання | clsi видаляє каталоги компіляції, які не використовувалися добу, і щогодини прибирає старі контейнери TeX Live з Docker вузла |

### Налаштування

Інсталяція налаштовує все: Docker та образи на вузлах у розділі [0. Підготовка вузлів](https://ayakaleaf-pro.mintlify.site/uk/on-premises/installation/using-kubernetes/0.-prepare-the-nodes.md), налаштування в розділі [4. Персоналізація вашого екземпляра](https://ayakaleaf-pro.mintlify.site/uk/on-premises/installation/using-kubernetes/4.-personalizing-your-instance.md) і томи в розділі [5. Розгортання Ayakaleaf Pro](https://ayakaleaf-pro.mintlify.site/uk/on-premises/installation/using-kubernetes/5.-deploy-ayakaleaf-pro.md). Налаштування, усі в ConfigMap:

| Змінна | Значення |
| - | - |
| `SANDBOXED_COMPILES`, `SANDBOXED_COMPILES_SIBLING_CONTAINERS`, `DOCKER_RUNNER` | `"true"` |
| `SANDBOXED_COMPILES_HOST_DIR_COMPILES` | шлях на вузлі до тому, змонтованого в `/var/lib/overleaf/data/compiles` |
| `SANDBOXED_COMPILES_HOST_DIR_OUTPUT` | шлях на вузлі до тому, змонтованого в `/var/lib/overleaf/data/output` |
| `SANDBOXED_COMPILES_HOST_DIR_CACHE` | шлях на вузлі до тому, змонтованого в `/var/lib/overleaf/data/cache` |
| `ALL_TEX_LIVE_DOCKER_IMAGES`, `ALL_TEX_LIVE_DOCKER_IMAGE_NAMES`, `TEX_LIVE_DOCKER_IMAGE` | образи, як і в Toolkit |

### Додавання версії TeX Live

**1. Завантажте образ на кожен вузол**

```bash theme={null}
# on each node that can run Ayakaleaf Pro
sudo docker pull ghcr.io/ayaka-notes/texlive-full:2025.1
```

Toolkit завантажує образи сам; у Kubernetes цього ніхто не робить. Завантажуйте в **Docker**, а не через `crictl`: clsi запитує образ у Docker. Компіляція з образом, якого немає на вузлі, завершується помилкою.

**2. Додайте його до ConfigMap і перезапустіть**

```yaml theme={null}
  ALL_TEX_LIVE_DOCKER_IMAGES: ghcr.io/ayaka-notes/texlive-full:2026.1,ghcr.io/ayaka-notes/texlive-full:2025.1
  ALL_TEX_LIVE_DOCKER_IMAGE_NAMES: TeX Live 2026,TeX Live 2025
  TEX_LIVE_DOCKER_IMAGE: ghcr.io/ayaka-notes/texlive-full:2026.1
```

```bash theme={null}
kubectl apply -f 30-config.yaml
kubectl -n overleaf rollout restart deployment/overleaf     # or statefulset/overleaf
```

Вузлу, доданому до кластера пізніше, потрібні Docker і всі образи, перш ніж на ньому запуститься Ayakaleaf Pro. Якщо підходять не всі вузли, позначте такі вузли мітками й утримуйте Ayakaleaf Pro на них за допомогою `nodeSelector`.

### Кілька реплік

Кожна репліка компілює на своєму вузлі й зберігає там результати компіляції, тож користувач має залишатися на репліці, яка компілювала, що забезпечує липка cookie балансувальника навантаження. Ніколи не запускайте дві репліки на одному вузлі: вони спільно використовували б каталоги компіляції вузла. Конфігурація з розділу [Горизонтальне масштабування](https://ayakaleaf-pro.mintlify.site/uk/on-premises/configuration/kubernetes/horizontal-scaling.md) запобігає цьому за допомогою `podAntiAffinity`.

Контейнери TeX Live працюють поруч із подом, поза його обмеженням пам'яті та поза полем зору планувальника. Залишайте для них вільну пам'ять на вузлах, див. [0. Підготовка вузлів](https://ayakaleaf-pro.mintlify.site/uk/on-premises/installation/using-kubernetes/0.-prepare-the-nodes.md).

### Перевірено на Kubernetes

На Kubernetes 1.37 з трьома репліками за HAProxy, по одній на вузол, і з TeX Live 2026 та 2025, завантаженими в Docker на кожному вузлі, наші наскрізні тести ізольованої компіляції проходять (7 випадків): новий проєкт компілюється в PDF, налаштування компілятора пропонують обидва образи й перемикаються між ними, XeLaTeX з fontspec, помилки LaTeX і повторна компіляція після виправлення, зупинка компіляції, що виконується, і SyncTeX в обох напрямках. Навантажувальний тест із 12 користувачами, які одночасно компілювали 600-сторінковий документ, виконував по 4 компіляції на вузол, див. [Чого очікувати](https://ayakaleaf-pro.mintlify.site/uk/on-premises/configuration/kubernetes/horizontal-scaling.md#what-to-expect).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.