-
Notifications
You must be signed in to change notification settings - Fork 196
alb deployment guide
This guide provides comprehensive instructions for deploying ReportPortal on AWS EKS using the AWS Application Load Balancer (ALB) Ingress Controller.
- Prerequisites
- ALB Configuration Overview
- Deployment Steps
- Configuration Examples
- Troubleshooting
- Best Practices
- EKS cluster running Kubernetes 1.19+
- AWS Load Balancer Controller installed
- Proper IAM permissions for ALB creation
- VPC with public/private subnets
- Security groups allowing HTTP/HTTPS traffic
- SSL/TLS certificate in AWS Certificate Manager (ACM)
- Route 53 hosted zone (optional, for custom domains)
The AWS Load Balancer Controller must be installed in your EKS cluster before deploying ReportPortal with ALB.
Recommended Installation Method:
- Helm (Recommended): Install AWS Load Balancer Controller using Helm
Note: Follow the official AWS documentation for the most up-to-date installation instructions, as installation methods and requirements may change over time.
Important: By default, ReportPortal uses nginx as the ingress class. To use ALB, you must set ingress.class: alb in your values.yaml file.
ReportPortal's ALB integration includes:
-
Class:
alb(set viaingress.class) - TLS: Handled via AWS Certificate Manager (ACM) ARN
- Path-based routing: Routes traffic to different services based on URL paths
The ALB routes traffic to the following services:
-
/→service-index(port 8080) -
/ui→service-ui(port 8080) -
/uat→service-authorization(port 9999) -
/api→service-api(port 8585)
Each service has individual health check configurations:
-
Index Service:
/{path}/health -
UI Service:
/{path}/ui/health -
UAT Service:
/{path}/uat/health -
API Service:
/{path}/api/health
Create a values-alb.yaml file with ALB-specific configuration:
# ALB Ingress Configuration
ingress:
enable: true
hosts:
- "your-domain.com" # Replace with your domain
path: "" # Set to "/reportportal" if deploying to subpath
class: alb
annotations:
# Basic ALB configuration
alb.ingress.kubernetes.io/scheme: "internet-facing" # or "internal"
alb.ingress.kubernetes.io/target-type: "ip"
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
alb.ingress.kubernetes.io/ssl-redirect: "443"
# Load balancer grouping (optional)
alb.ingress.kubernetes.io/group.name: "k8s-reportportal"
alb.ingress.kubernetes.io/group.order: "1"
# Health check settings
alb.ingress.kubernetes.io/healthcheck-port: "traffic-port"
alb.ingress.kubernetes.io/healthcheck-protocol: "HTTP"
alb.ingress.kubernetes.io/success-codes: "200"
alb.ingress.kubernetes.io/healthy-threshold-count: "2"
alb.ingress.kubernetes.io/unhealthy-threshold-count: "2"
# Security settings
alb.ingress.kubernetes.io/security-groups: "sg-xxxxxxxxx,sg-yyyyyyyyy"
alb.ingress.kubernetes.io/subnets: "subnet-xxxxxxxxx,subnet-yyyyyyyyy"
# SSL/TLS settings
alb.ingress.kubernetes.io/certificate-arn: "arn:aws:acm:region:account:certificate/certificate-id"
# Additional ALB attributes
alb.ingress.kubernetes.io/load-balancer-attributes: "idle_timeout.timeout_seconds=60"
alb.ingress.kubernetes.io/target-group-attributes: "stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=86400"# Add the Helm repository
helm repo add reportportal https://reportportal.github.io/kubernetes
helm repo update
# Deploy ReportPortal with ALB configuration
helm install reportportal reportportal/reportportal \
--namespace reportportal \
--create-namespace \
--values values-alb.yaml# Check ingress status
kubectl get ingress -n reportportal
# Check ALB creation
aws elbv2 describe-load-balancers --query 'LoadBalancers[?contains(LoadBalancerName, `k8s-reportportal`)]'
# Check target groups
aws elbv2 describe-target-groups --query 'TargetGroups[?contains(TargetGroupName, `k8s-reportportal`)]'ingress:
enable: true
hosts:
- reportportal.example.com
class: alb
annotations:
alb.ingress.kubernetes.io/scheme: "internet-facing"
alb.ingress.kubernetes.io/target-type: "ip"
alb.ingress.kubernetes.io/certificate-arn: "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"ingress:
enable: true
hosts:
- internal-reportportal.example.com
class: alb
annotations:
alb.ingress.kubernetes.io/scheme: "internal"
alb.ingress.kubernetes.io/target-type: "ip"
alb.ingress.kubernetes.io/security-groups: "sg-12345678,sg-87654321"
alb.ingress.kubernetes.io/subnets: "subnet-12345678,subnet-87654321"
alb.ingress.kubernetes.io/certificate-arn: "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"ingress:
enable: true
hosts:
- reportportal.example.com
class: alb
annotations:
alb.ingress.kubernetes.io/scheme: "internet-facing"
alb.ingress.kubernetes.io/target-type: "ip"
alb.ingress.kubernetes.io/target-group-attributes: "stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=86400"
alb.ingress.kubernetes.io/certificate-arn: "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"# Check AWS Load Balancer Controller logs
kubectl logs -n kube-system deployment/aws-load-balancer-controller
# Verify IAM permissions
aws iam get-role-policy --role-name aws-load-balancer-controller --policy-name AWSLoadBalancerControllerIAMPolicy# Verify certificate ARN
aws acm describe-certificate --certificate-arn "arn:aws:acm:region:account:certificate/certificate-id"
# Check certificate status
aws acm list-certificates --query 'CertificateSummaryList[?DomainName==`your-domain.com`]'# Check ingress events
kubectl describe ingress -n reportportal
# Check ALB target health
aws elbv2 describe-target-health --target-group-arn <target-group-arn>
# Check ALB listeners
aws elbv2 describe-listeners --load-balancer-arn <alb-arn>- Use internal ALB for private access
- Implement proper security groups
- Use AWS WAF for additional protection
- Enable access logs for monitoring
- Enable ALB access logs
- Set up CloudWatch alarms
- Monitor target group health
- Track response times and error rates
- Deploy across multiple AZs
- Use multiple subnets
- Implement proper health checks
- AWS Load Balancer Controller Documentation
- ReportPortal Documentation
- Route application and HTTP traffic with Application Load Balancers
For issues specific to ReportPortal ALB deployment:
- Check the ReportPortal GitHub Issues
- Review AWS Load Balancer Controller logs
- Consult AWS support for ALB-specific issues