Resilient probes so cluster stays up when one node is offline
- Liveness: tcpSocket on 4222 (do not depend on JetStream meta leader) - Readiness: initialDelay 90s, period 15s, failureThreshold 10 so k0m1+k1m1 can form qu...
Skip CockroachDB init job if any pods exist - cluster already initialized
Improve CockroachDB init check to wait for pods and verify cluster state
Prevent CockroachDB init job from running when cluster is already initialized
Update CockroachDB probes, HTTP redirect, and MinIO service endpoints
Add CORS middleware to theme routes to allow cross-origin access from all websites
Add hostPort to Traefik deployment for direct port access
- Use hostPort 443 for websecure entrypoint to bypass NodePort - Allows router to forward port 443 directly to Traefik - Also set hostPort for web (30080) and a...
Set External Traffic Policy to Local for Traefik NodePort service
- Allows proper routing of external traffic from router - Preserves source IP addresses for better logging
Update CockroachDB StatefulSet to use dynamic VPN IP based on node hostname
- Fix advertise-addr to use VPN IP (10.8.1.1 for k1m1, 10.8.2.1 for k2m1) - Update join parameter to use VPN IPs instead of hostnames - Update node certificate ...
Add node certificates to CockroachDB secret creation
- Add node.crt and node.key to cockroachdb directory - Update CI/CD workflow to include node certificates when creating *** secret - Fixes CockroachDB CrashLoop...
Handle BackoffLimitExceeded by deleting failed job and retrying
- When job fails with BackoffLimitExceeded and pods are cleaned up, delete and recreate job - This allows us to get fresh logs from a new pod - Catches 'already...
Handle BackoffLimitExceeded by deleting and retrying init job
- When job fails with BackoffLimitExceeded and pods are cleaned up, delete and recreate job - This allows the job to retry and succeed if cluster is already ini...
Improve cluster connectivity test in CockroachDB init workflow
Improve CockroachDB init job error handling when pods are cleaned up
- Check previous pod logs if current pods are not found - Test cluster connectivity to verify if already initialized - Better handling of failed jobs with clean...
Resolve Traefik, NATS, and CockroachDB deployment issues
- Remove hostPort from Traefik deployment (conflicts with NodePort service) - Fix NATS deployment to only deploy server-specific statefulsets (nats-k1m1, nats-k...
Improve CockroachDB init job error handling - check pod status and logs after timeout
Remove heredoc whitespace issue - use echo commands and ConfigMap
The heredocs had leading whitespace from YAML indentation causing parse errors - Use echo commands to create dovecot.conf without leading whitespace - Mount aut...
Use driver=sql with sql_driver=mysql and inline connect
Based on official Dovecot 2.4 examples found online: - Named sections: passdb sql { and userdb sql { - driver = sql (not driver = mysql) - sql_driver = mysql (s...
Use driver=mysql (not driver=sql) with inline connect in Dovecot 2.4
Based on official Dovecot 2.4 examples: - Named sections: passdb sql { and userdb sql { - Use driver = mysql (not driver = sql) - Inline connect, default_pass_s...
Dovecot 2.4 requires SQL settings inline, not args parameter
- Dovecot 2.4 removed 'args' parameter for passdb/userdb - SQL connection settings must be specified directly in passdb/userdb blocks - Put driver=mysql, connec...
Disable idle timeout for WebSocket connections
- Added idleTimeout=0 to websecure entrypoint - Prevents Traefik from closing WebSocket connections due to inactivity - Fixes SockJS WebSocket timeout issues
Split port ranges to avoid conflicts
- Coturn relay: 52000-65535 (13,536 ports) - Avoids: Janus RTP (10000-49151) and WireGuard (51820-51821) - No overlap between services
Adjust relay port range to avoid WireGuard/VPN ports
- Changed max-port from 65535 to 51800 to avoid conflicts - Avoids WireGuard on UDP 51820 and other VPN services on 51821 - Provides 2,649 ports (49152-51800) f...
Resolve CrashLoopBackOff by fixing probes and config
- Replace netstat-based health probes with TCP socket checks (netstat not available in coturn/coturn:latest Alpine image) - Remove conflicting no-stdout-log dir...
Add Connection: Upgrade header to WebSocket upgrade middleware
- Add Connection: Upgrade header along with Upgrade: websocket - Both headers are required for proper WebSocket upgrade handshake - This ensures HTTP/2 Extended...
Skip CockroachDB init if job failed (cluster already initialized)
Add webhook wait and sleep to ensure cert-manager is fully ready
Strip HSTS header from MinIO responses to prevent forced HTTPS
Correct PathPrefix syntax for Traefik (OR logic instead of multiple params)
Wrap command in shell to properly expand hostname variable
Remove dnsConfig, use host DNS for bare hostname resolution
Add DNS search domain for bare hostname resolution in CockroachDB and NATS
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
