@@ -13,6 +13,7 @@ Packmind documentation is available [here](https://packmindhub.github.io/packmin
1313- [ Backup Considerations] ( #backup-considerations )
1414- [ Additional Secrets] ( #additional-secrets )
1515- [ Resource Configuration] ( #resource-configuration )
16+ - [ DNS Configuration (Self-Hosted Kubernetes)] ( #dns-configuration-self-hosted-kubernetes )
1617
1718## Version Selection
1819
@@ -248,4 +249,32 @@ api:
248249 secretName: my-openai-secret
249250 key: open-ai-key
250251 optional: false
251- ` ` `
252+ ` ` `
253+
254+ # # DNS Configuration (Self-Hosted Kubernetes)
255+
256+ The API image is Alpine-based (musl libc). Under Kubernetes' default pod DNS
257+ (`options ndots:5` plus cluster/corporate `search` domains), musl can fail to
258+ resolve external hosts such as `api.github.com`, producing
259+ ` getaddrinfo ENOTFOUND` and breaking GitHub App registration. This happens
260+ because musl aborts the search-domain list on the first non-`NXDOMAIN` reply
261+ instead of falling back to the absolute name.
262+
263+ If you hit this, set `ndots:"1"` on the API pod so names with at least one dot
264+ resolve as absolute first :
265+
266+ ` ` ` yaml
267+ api:
268+ dnsConfig:
269+ options:
270+ - name: ndots
271+ value: "1"
272+ ` ` `
273+
274+ Kubernetes merges these options onto the pod's default `resolv.conf`, so
275+ ` dnsPolicy` does not need to change. `api.dnsPolicy` is also exposed if you
276+ need to override it (e.g. `"None"`, `"Default"`, `"ClusterFirst"`). Both keys
277+ are empty by default, so nothing is rendered unless you opt in.
278+
279+ See [PackmindHub/packmind#388](https://github.com/PackmindHub/packmind/issues/388)
280+ for details.
0 commit comments