92 lines
3.4 KiB
YAML
92 lines
3.4 KiB
YAML
# 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
|
|
|