authentication module) inside every Ayakaleaf Pro pod. Unlike OIDC and SAML, the pods talk to the directory themselves. Set up the directory side as in LDAP Authentication, then put the values into Kubernetes as below.
Where things run
Configuration
1
Let the pods reach the directory
Every pod that runs Ayakaleaf Pro opens the LDAP connections. If a firewall or NetworkPolicy guards the directory, allow the addresses the pods leave the cluster with: usually the nodes’ addresses, or your egress gateway.The image has no It must print exactly one
ldapsearch. To run the search check from inside the cluster, use a throwaway pod:dn:.2
Add the settings to the ConfigMap
30-config.yaml (additions)
OVERLEAF_LDAP_* setting is listed in Environment Variables. They all go into the ConfigMap except the bind password. Quote "true", "false", JSON values such as OVERLEAF_LDAP_SEARCH_ATTRIBUTES: '["mail", "cn"]', and values that start with *.3
Put the bind password into the Secret
4
LDAPS or STARTTLS with your own CA (optional)
Put the CA into the Secret The CA list replaces the system CAs for LDAP connections. It is read when web starts.
overleaf-certs mounted at /var/lib/overleaf/certs (see Certificates and other files) and point to it:5
Apply and restart
Several replicas
Nothing extra beyond the firewall in step 1: each replica connects to the directory on its own, and the login result goes into the session in Redis.Tested on Kubernetes
With goauthentik’s LDAP outpost as the directory, on Kubernetes 1.37 with three replicas behind HAProxy, our end-to-end tests for LDAP pass (26 cases): the first admin from the launchpad logging in through LDAP, login with the bind password from the Secret, wrong passwords and unknown users refused, the admin mapping by group and without mapping, name and admin flag updated at each login (one name attribute, or first and last name), directory contacts, logout, password rules for LDAP accounts, suspended accounts, and the LDAP login with reCAPTCHA.Q&A
LDAP login fails on some pods only
LDAP login fails on some pods only
Answer: The directory is not reachable from every node. Check from each pod:
Where do I see why a login failed?
Where do I see why a login failed?
Answer: In the web log of the pod that served the login:

