> ## 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.

# Kubernetes

> 配置 Kubernetes 部署 - 设置、密钥和文件的存放位置，以及每项功能的单独页面。

Kubernetes 部署读取的环境变量与 Toolkit 相同。当 Toolkit 页面要求“将其添加到 `config/variables.env`”时，请将该值放入 ConfigMap `overleaf-env`；如果是密码、密钥或令牌，则放入 Secret `overleaf-secrets`。然后重启：

```bash theme={null}
kubectl -n overleaf apply -f 30-config.yaml        # after editing the ConfigMap
kubectl -n overleaf patch secret overleaf-secrets --type merge \
  -p '{"stringData":{"GITHUB_TOKEN_CIPHER_PASSWORD":"'"$(openssl rand -hex 32)"'"}}'
kubectl -n overleaf rollout restart deployment/overleaf
```

`config/overleaf.rc` 中的值是 Toolkit 设置，而不是环境变量；本页末尾的 Q\&A 说明了用什么来替代它们。

### 功能

Toolkit 配置中的每项功能在这里都有一个对应页面，介绍其服务、设置、网络路径、后台任务、多个副本时的变化以及测试方式：

| 功能 | Pod 中的服务 | ConfigMap 和 Secret 之外的需求 |
| - | - | - |
| [身份验证](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/authentication)：[OIDC](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/authentication/oidc-authentication.md)、[SAML](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/authentication/saml-authentication.md)、[LDAP](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/authentication/ldap-authentication.md)、[公开访问](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/authentication/public-access.md)、[reCAPTCHA](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/authentication/recaptcha.md)、[密码限制](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/authentication/password-restrictions.md) | web | 客户端密钥、IdP 证书、LDAP CA |
| [沙盒编译](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/sandboxed-compiles.md) | clsi | 每个节点上的 Docker Engine 和 TeX Live 镜像 |
| [Pandoc 导入与导出](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/pandoc-import-and-export.md) | clsi、web | 每个节点上 Docker 中的 Pandoc 镜像 |
| [Git 集成](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/integrations/git-integration.md) | git-bridge（独立 Pod）、web、history-v1 | git-bridge StatefulSet 和两个 Service |
| [GitHub](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/integrations/github-synchronisation.md)、[GitLab](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/integrations/gitlab-synchronisation.md)、[Gitea](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/integrations/gitea-synchronisation.md) 同步 | web | Git 集成 |
| [Dropbox 同步](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/integrations/dropbox-synchronisation.md) | web、third-party-datastore、document-updater | Git 集成、可从互联网访问的 Webhook、数据库索引 |
| [Zotero](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/integrations/zotero-integration.md)、[Mendeley](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/integrations/mendeley-integration.md) 集成 | web | Secret 中的加密密码 |
| [MCP 服务器](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/integrations/mcp-server.md) | web | Git 集成 |
| [AI 集成](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/integrations/ai-integration.md) | web、linked-url-proxy | – |
| [Overleaf 导入 API](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/integrations/overleaf-import-api.md) | web、linked-url-proxy | – |
| [模板](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/templates.md) | web、filestore | 多个副本时需要 S3 |
| [外部 URL](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/external-url.md) | linked-url-proxy | `OVERLEAF_LINKED_URL_BLOCKED_NETWORKS` 中的公网节点地址 |
| [日志](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/logging.md) | 所有服务 | 挂载在 `/var/log/overleaf` 的卷，用于保留日志 |
| [TLS 代理](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/tls-proxy.md) | 你的 Ingress 或负载均衡器 | TLS 在 Pod 之前终止 |
| [品牌定制](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/branding.md) | web | – |
| [本地化](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/localization.md) | web | 每种语言一个主机名 |
| [邮件发送](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/email-delivery.md) | web | – |
| [Redis](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/redis.md) | 所有具有实时状态的服务 | – |
| [S3](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/s3.md) | history-v1、filestore | S3 服务，多个副本时必需 |
| [添加 LaTeX 用户帮助](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/adding-latex-user-help.md) | web | Pod 必须能够访问 Wiki |
| [水平扩展](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/horizontal-scaling.md) | 全部 | S3、支持会话保持的负载均衡器 |

### 证书和其他文件

有些功能接受的是文件路径而不是值：SAML 证书（`OVERLEAF_SAML_IDP_CERT` 等）、LDAP CA（`OVERLEAF_LDAP_TLS_OPTS_CA_PATH`），或用于自托管 GitHub Enterprise、GitLab 或 Gitea 的私有 CA（`NODE_EXTRA_CA_CERTS`）。请将这些文件放入一个 Secret，并将其挂载到 Toolkit 页面所期望的位置 `/var/lib/overleaf/certs`：

```bash theme={null}
kubectl -n overleaf create secret generic overleaf-certs --from-file=idp_cert.pem --from-file=ca.pem
```

```yaml title="40-overleaf.yaml (additions)" theme={null}
          volumeMounts:
            # ...
            - name: certs
              mountPath: /var/lib/overleaf/certs
              readOnly: true
      volumes:
        # ...
        - name: certs
          secret:
            secretName: overleaf-certs
```

然后在 ConfigMap 中按路径引用它们，例如 `NODE_EXTRA_CA_CERTS: /var/lib/overleaf/certs/ca.pem`，并重启。

> [!WARNING]
>
> \*\*加密密码。\*\*请在 Secret 中为你使用的功能设置所有 `*_CIPHER_PASSWORD`。否则，某些功能会在首次使用时在数据卷中生成一个密钥文件：在只有一个副本时，这在卷丢失之前都能正常工作；而在有多个副本时，每个副本都会使用不同的密钥进行加密。

### Q\&A

> [accordion] 我需要 `config/overleaf.rc` 中的哪些 Toolkit 设置？
>
> \*\*回答：\*\*Ayakaleaf Pro 不会读取其中任何一项。它们在 Kubernetes 中的对应项如下：
>
> | `config/overleaf.rc` | Kubernetes |
> | - | - |
> | `OVERLEAF_LISTEN_IP`、`OVERLEAF_PORT` | Service（NodePort）或你的 Ingress |
> | `SIBLING_CONTAINERS_ENABLED` | ConfigMap 中的 `SANDBOXED_COMPILES*`，Pod 中的 Docker 套接字 |
> | `GIT_BRIDGE_ENABLED` | [Git 集成](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/integrations/git-integration.md) |
> | `MONGO_ENABLED`、`REDIS_ENABLED`、`MONGO_URL`、`REDIS_HOST` | StatefulSet 或你的托管服务，`OVERLEAF_MONGO_URL` 和 `OVERLEAF_REDIS_HOST` |
> | `REDIS_AOF_PERSISTENCE` | `20-redis.yaml` 中的 `--appendonly yes` |
> | `NGINX_ENABLED`、`TLS_*` | 你的 Ingress 或负载均衡器 |


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