# AWS Application Load Balancer Configuration # This configuration uses the AWS Load Balancer Controller apiVersion: v1 kind: Service metadata: name: veza-backend-api-alb namespace: veza-production annotations: # Use AWS Load Balancer Controller service.beta.kubernetes.io/aws-load-balancer-type: "external" service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip" service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing" # Cross-zone load balancing service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true" # Health checks service.beta.kubernetes.io/aws-load-balancer-healthcheck-interval: "10" service.beta.kubernetes.io/aws-load-balancer-healthcheck-timeout: "5" service.beta.kubernetes.io/aws-load-balancer-healthcheck-healthy-threshold: "2" service.beta.kubernetes.io/aws-load-balancer-healthcheck-unhealthy-threshold: "3" service.beta.kubernetes.io/aws-load-balancer-healthcheck-path: "/health" # Connection draining service.beta.kubernetes.io/aws-load-balancer-connection-draining-enabled: "true" service.beta.kubernetes.io/aws-load-balancer-connection-draining-timeout: "60" # SSL/TLS service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:region:account:certificate/cert-id" service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443" service.beta.kubernetes.io/aws-load-balancer-backend-protocol: "http" # Access logs service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: "true" service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name: "veza-alb-logs" service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix: "alb" spec: type: LoadBalancer ports: - name: http port: 80 targetPort: 8080 protocol: TCP - name: https port: 443 targetPort: 8080 protocol: TCP selector: app: veza-backend-api --- # Ingress for ALB (using AWS Load Balancer Controller) apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: veza-ingress-alb namespace: veza-production annotations: kubernetes.io/ingress.class: alb alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]' alb.ingress.kubernetes.io/ssl-redirect: "443" alb.ingress.kubernetes.io/certificate-arn: "arn:aws:acm:region:account:certificate/cert-id" alb.ingress.kubernetes.io/load-balancer-attributes: | idle_timeout.timeout_seconds=60, routing.http2.enabled=true, access_logs.s3.enabled=true, access_logs.s3.bucket=veza-alb-logs, access_logs.s3.prefix=alb alb.ingress.kubernetes.io/healthcheck-path: "/health" alb.ingress.kubernetes.io/healthcheck-interval-seconds: "10" alb.ingress.kubernetes.io/healthcheck-timeout-seconds: "5" alb.ingress.kubernetes.io/healthy-threshold-count: "2" alb.ingress.kubernetes.io/unhealthy-threshold-count: "3" alb.ingress.kubernetes.io/target-group-attributes: | stickiness.enabled=true, stickiness.type=lb_cookie, stickiness.lb_cookie.duration_seconds=3600 spec: rules: - host: api.veza.com http: paths: - path: / pathType: Prefix backend: service: name: veza-backend-api port: number: 8080