fix(nzbget): wait for gluetun tunnel before starting (prevents queue cancellation)
On pod start the nzbget container raced gluetun: /etc/resolv.conf points at 10.128.0.1 (reachable only via the WireGuard tunnel), so for the ~20s gluetun needs to establish the tunnel every DNS lookup from nzbget returned EAI_AGAIN. Any in-queue download that had articles fetched during that window dropped below the HealthCheck threshold (~97.9%) and was auto-cancelled — even items that would otherwise complete (saw 97.6-97.8% health = "very nearly fine"). Override the nzbget container's entrypoint to poll DNS resolution and only exec /init once it succeeds. That's the direct test of "tunnel is up + DNS works", which is what nzbget needs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -44,6 +44,10 @@ spec:
|
|||||||
- name: {{ .Chart.Name }}
|
- name: {{ .Chart.Name }}
|
||||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
{{- with .Values.command }}
|
||||||
|
command:
|
||||||
|
{{ toYaml . | indent 12 }}
|
||||||
|
{{- end }}
|
||||||
env:
|
env:
|
||||||
{{ toYaml .Values.env | indent 12 }}
|
{{ toYaml .Values.env | indent 12 }}
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
@@ -5,6 +5,25 @@ image:
|
|||||||
tag: "latest"
|
tag: "latest"
|
||||||
pullPolicy: Always
|
pullPolicy: Always
|
||||||
|
|
||||||
|
# Wait for the gluetun sidecar's tunnel to come up before starting nzbget.
|
||||||
|
# Without this, nzbget races gluetun on pod start: /etc/resolv.conf points at
|
||||||
|
# 10.128.0.1 (reachable only via the tunnel), so during the ~20s gluetun takes
|
||||||
|
# to establish WireGuard, every DNS lookup from nzbget fails with EAI_AGAIN.
|
||||||
|
# Any items in the queue at that moment hit nzbget's per-file HealthCheck
|
||||||
|
# threshold (~97.9%) and get auto-cancelled — even ones that would otherwise
|
||||||
|
# complete fine. Polling DNS resolution is the direct test: if it resolves,
|
||||||
|
# the tunnel is up and DNS works.
|
||||||
|
command:
|
||||||
|
- sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
until nslookup news.newshosting.com >/dev/null 2>&1; do
|
||||||
|
echo "waiting for gluetun tunnel + DNS..."
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
echo "tunnel up, starting nzbget"
|
||||||
|
exec /init
|
||||||
|
|
||||||
env:
|
env:
|
||||||
- name: PUID
|
- name: PUID
|
||||||
value: "1000"
|
value: "1000"
|
||||||
|
|||||||
Reference in New Issue
Block a user