Bug: Switch Keycloak URL to cluster-internal service — 50% TLS failure rate via funnel #149
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/basketball-api#149
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Bug
Lineage
plan-wkq→ Phase 11 (Girls Tryout — March 24)Discovered during E2E registration validation
Repo
forgejo_admin/basketball-apiWhat Broke
basketball-api connects to Keycloak via the external Tailscale funnel URL (
https://keycloak.tail5b443a.ts.net). TLS connections through funnels drop ~50% from within the cluster —SSL: UNEXPECTED_EOF_WHILE_READING. This causes Keycloak account creation to fail intermittently during registration.Proof — 10 requests from the basketball-api pod:
https://keycloak.tail5b443a.ts.net): 5/10 failedhttp://keycloak.keycloak.svc.cluster.local): 10/10 succeededRepro Steps
westsidekingsandqueens.tail5b443a.ts.net/register"Failed to get Keycloak admin token"Expected Behavior
Keycloak account creation succeeds 100% of the time. Pod-to-pod traffic stays inside the cluster.
Environment
keycloak.keycloak.svc.cluster.local:80(HTTP, works 100%)keycloak.tail5b443a.ts.net(HTTPS via Tailscale funnel, 50% failure)Acceptance Criteria
keycloak_base_urlin config uses internal service URL for admin API callskeycloak_realm_urlstays external for OIDC token validation (tokens are issued with external issuer URL)File Targets
src/basketball_api/config.py— addkeycloak_admin_urlconfig pointing to internal servicesrc/basketball_api/services/keycloak.py— usekeycloak_admin_urlfor admin API callssrc/basketball_api/routes/password_reset.py— usekeycloak_admin_urlfor password resetk8s/deployment.yaml— addBASKETBALL_KEYCLOAK_ADMIN_URLenv varConstraints
Checklist
Related