2025-09-28 19:48:05 +02:00
|
|
|
apiVersion: networking.k8s.io/v1
|
|
|
|
|
kind: Ingress
|
|
|
|
|
metadata:
|
|
|
|
|
name: bakery-ingress
|
|
|
|
|
namespace: bakery-ia
|
2026-01-19 11:55:17 +01:00
|
|
|
labels:
|
|
|
|
|
app.kubernetes.io/name: bakery-ia
|
|
|
|
|
app.kubernetes.io/component: ingress
|
2025-09-28 19:48:05 +02:00
|
|
|
annotations:
|
2026-01-19 11:55:17 +01:00
|
|
|
# Nginx ingress controller annotations
|
Enable HTTPS by default in development environment
This commit enables HTTPS in the development environment using self-signed
certificates to further improve dev-prod parity and catch SSL-related issues
early.
Changes made:
1. Created self-signed certificate for localhost
- File: infrastructure/kubernetes/overlays/dev/dev-certificate.yaml
- Type: Self-signed via cert-manager
- Validity: 90 days (auto-renewed)
- Valid for: localhost, bakery-ia.local, *.bakery-ia.local, 127.0.0.1
- Issuer: selfsigned-issuer ClusterIssuer
2. Updated dev ingress to enable HTTPS
- File: infrastructure/kubernetes/overlays/dev/dev-ingress.yaml
- Enabled SSL redirect: ssl-redirect: false → true
- Added TLS configuration with certificate
- Updated CORS origins to prefer HTTPS (HTTPS URLs first, HTTP fallback)
- Access: https://localhost (instead of http://localhost)
3. Added cert-manager resources to dev overlay
- File: infrastructure/kubernetes/overlays/dev/kustomization.yaml
- Added dev-certificate.yaml
- Added selfsigned-issuer ClusterIssuer
4. Created comprehensive HTTPS setup guide
- File: docs/DEV-HTTPS-SETUP.md
- Includes certificate trust instructions for macOS, Linux, Windows
- Testing procedures with curl and browsers
- Troubleshooting guide
- FAQ section
5. Updated dev-prod parity documentation
- File: docs/DEV-PROD-PARITY-CHANGES.md
- Added HTTPS as 4th improvement
- Updated "What Stays Different" table (SSL/TLS → Certificates)
- Added HTTPS benefits section
Benefits:
✓ Matches production HTTPS-only behavior
✓ Tests SSL/TLS configurations in development
✓ Catches mixed content warnings early
✓ Tests secure cookie handling (Secure, SameSite attributes)
✓ Validates cert-manager integration
✓ Tests certificate auto-renewal
✓ Better security testing capabilities
Impact:
- Browser will show certificate warning (self-signed)
- Users can trust certificate or click "Proceed"
- No additional resource usage
- Access via https://localhost (was http://localhost)
Certificate details:
- Type: Self-signed
- Algorithm: RSA 2048-bit
- Validity: 90 days
- Auto-renewal: 15 days before expiration
- Common Name: localhost
- DNS Names: localhost, bakery-ia.local, *.bakery-ia.local
- IP Addresses: 127.0.0.1, ::1
Setup required:
- Optional: Trust certificate in system/browser (see DEV-HTTPS-SETUP.md)
- Required: cert-manager must be installed in cluster
- Access at: https://localhost
What stays different from production:
- Certificate type: Self-signed (dev) vs Let's Encrypt (prod)
- Trust: Manual (dev) vs Automatic (prod)
- Domain: localhost (dev) vs real domain (prod)
This completes the dev-prod parity improvements, bringing development
environment much closer to production with:
1. 2 replicas for critical services ✓
2. Rate limiting enabled ✓
3. Specific CORS origins ✓
4. HTTPS enabled ✓
See docs/DEV-HTTPS-SETUP.md for complete setup and testing instructions.
2026-01-02 19:25:45 +00:00
|
|
|
nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
|
|
|
|
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
2026-01-20 07:20:56 +01:00
|
|
|
nginx.ingress.kubernetes.io/proxy-body-size: "500m"
|
2026-01-19 11:55:17 +01:00
|
|
|
nginx.ingress.kubernetes.io/proxy-connect-timeout: "600"
|
2025-10-02 13:20:30 +02:00
|
|
|
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
|
2026-01-19 11:55:17 +01:00
|
|
|
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
|
|
|
|
|
# SSE and WebSocket configuration for long-lived connections
|
2025-10-02 13:20:30 +02:00
|
|
|
nginx.ingress.kubernetes.io/proxy-buffering: "off"
|
|
|
|
|
nginx.ingress.kubernetes.io/proxy-http-version: "1.1"
|
|
|
|
|
nginx.ingress.kubernetes.io/upstream-keepalive-timeout: "3600"
|
2025-10-07 07:15:07 +02:00
|
|
|
# WebSocket upgrade support
|
|
|
|
|
nginx.ingress.kubernetes.io/websocket-services: "gateway-service"
|
2026-01-19 11:55:17 +01:00
|
|
|
# CORS configuration
|
|
|
|
|
nginx.ingress.kubernetes.io/enable-cors: "true"
|
|
|
|
|
nginx.ingress.kubernetes.io/cors-allow-methods: "GET, POST, PUT, DELETE, OPTIONS, PATCH"
|
|
|
|
|
nginx.ingress.kubernetes.io/cors-allow-headers: "Content-Type, Authorization, X-Requested-With, Accept, Origin, Cache-Control"
|
|
|
|
|
nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
|
|
|
|
|
|
|
|
|
|
|
2025-09-28 19:48:05 +02:00
|
|
|
spec:
|
|
|
|
|
ingressClassName: nginx
|
Enable HTTPS by default in development environment
This commit enables HTTPS in the development environment using self-signed
certificates to further improve dev-prod parity and catch SSL-related issues
early.
Changes made:
1. Created self-signed certificate for localhost
- File: infrastructure/kubernetes/overlays/dev/dev-certificate.yaml
- Type: Self-signed via cert-manager
- Validity: 90 days (auto-renewed)
- Valid for: localhost, bakery-ia.local, *.bakery-ia.local, 127.0.0.1
- Issuer: selfsigned-issuer ClusterIssuer
2. Updated dev ingress to enable HTTPS
- File: infrastructure/kubernetes/overlays/dev/dev-ingress.yaml
- Enabled SSL redirect: ssl-redirect: false → true
- Added TLS configuration with certificate
- Updated CORS origins to prefer HTTPS (HTTPS URLs first, HTTP fallback)
- Access: https://localhost (instead of http://localhost)
3. Added cert-manager resources to dev overlay
- File: infrastructure/kubernetes/overlays/dev/kustomization.yaml
- Added dev-certificate.yaml
- Added selfsigned-issuer ClusterIssuer
4. Created comprehensive HTTPS setup guide
- File: docs/DEV-HTTPS-SETUP.md
- Includes certificate trust instructions for macOS, Linux, Windows
- Testing procedures with curl and browsers
- Troubleshooting guide
- FAQ section
5. Updated dev-prod parity documentation
- File: docs/DEV-PROD-PARITY-CHANGES.md
- Added HTTPS as 4th improvement
- Updated "What Stays Different" table (SSL/TLS → Certificates)
- Added HTTPS benefits section
Benefits:
✓ Matches production HTTPS-only behavior
✓ Tests SSL/TLS configurations in development
✓ Catches mixed content warnings early
✓ Tests secure cookie handling (Secure, SameSite attributes)
✓ Validates cert-manager integration
✓ Tests certificate auto-renewal
✓ Better security testing capabilities
Impact:
- Browser will show certificate warning (self-signed)
- Users can trust certificate or click "Proceed"
- No additional resource usage
- Access via https://localhost (was http://localhost)
Certificate details:
- Type: Self-signed
- Algorithm: RSA 2048-bit
- Validity: 90 days
- Auto-renewal: 15 days before expiration
- Common Name: localhost
- DNS Names: localhost, bakery-ia.local, *.bakery-ia.local
- IP Addresses: 127.0.0.1, ::1
Setup required:
- Optional: Trust certificate in system/browser (see DEV-HTTPS-SETUP.md)
- Required: cert-manager must be installed in cluster
- Access at: https://localhost
What stays different from production:
- Certificate type: Self-signed (dev) vs Let's Encrypt (prod)
- Trust: Manual (dev) vs Automatic (prod)
- Domain: localhost (dev) vs real domain (prod)
This completes the dev-prod parity improvements, bringing development
environment much closer to production with:
1. 2 replicas for critical services ✓
2. Rate limiting enabled ✓
3. Specific CORS origins ✓
4. HTTPS enabled ✓
See docs/DEV-HTTPS-SETUP.md for complete setup and testing instructions.
2026-01-02 19:25:45 +00:00
|
|
|
tls:
|
|
|
|
|
- hosts:
|
2026-01-19 11:55:17 +01:00
|
|
|
- DOMAIN_PLACEHOLDER # To be replaced by kustomize
|
|
|
|
|
secretName: TLS_SECRET_PLACEHOLDER # To be replaced by kustomize
|
2025-09-28 19:48:05 +02:00
|
|
|
rules:
|
2026-01-19 11:55:17 +01:00
|
|
|
# Main application routes
|
|
|
|
|
- host: DOMAIN_PLACEHOLDER # To be replaced by kustomize
|
2025-09-28 19:48:05 +02:00
|
|
|
http:
|
|
|
|
|
paths:
|
|
|
|
|
- path: /
|
|
|
|
|
pathType: Prefix
|
|
|
|
|
backend:
|
|
|
|
|
service:
|
|
|
|
|
name: frontend-service
|
|
|
|
|
port:
|
|
|
|
|
number: 3000
|
|
|
|
|
- path: /api
|
|
|
|
|
pathType: Prefix
|
|
|
|
|
backend:
|
|
|
|
|
service:
|
|
|
|
|
name: gateway-service
|
|
|
|
|
port:
|
2026-01-08 19:25:52 +01:00
|
|
|
number: 8000
|
2026-01-20 21:42:05 +01:00
|
|
|
# NOTE: Gitea and Registry ingresses are managed by Gitea Helm chart
|
|
|
|
|
# See infrastructure/cicd/gitea/values.yaml for ingress configuration
|
|
|
|
|
# NOTE: Mail ingress is deployed separately via mailu-helm resource
|
|
|
|
|
# to avoid 503 errors when Mailu is not running
|