mirror of
https://github.com/yeslayla/aws-ecs-grafana.git
synced 2025-12-06 17:33:25 +01:00
Intial grafana stack
Move workflows into .github directory Fix directory structure Fix container name Fix directory structure Fix parameter names Remove health check temp Health check work plz Working version
This commit is contained in:
136
cloudformation/grafana/load_balancing.yaml
Normal file
136
cloudformation/grafana/load_balancing.yaml
Normal file
@@ -0,0 +1,136 @@
|
||||
AWSTemplateFormatVersion: "2010-09-09"
|
||||
Description: Grafana load balancing stack
|
||||
Parameters:
|
||||
environment:
|
||||
Type: String
|
||||
Description: Name of the environment
|
||||
Default: production
|
||||
release:
|
||||
Type: String
|
||||
Description: Name of the release name of the stack version to use.
|
||||
Default: production
|
||||
AllowedValues: ['develop', 'production']
|
||||
ConstraintDescription: "Must be a possible release version."
|
||||
PublicSubnets:
|
||||
Description: The public subnets for the ALB to run in.
|
||||
Type: String
|
||||
PortalCertificate:
|
||||
Description: Arn of AWS Certificate
|
||||
Type: String
|
||||
VpcId:
|
||||
Description: ID of the VPC
|
||||
Type: AWS::EC2::VPC::Id
|
||||
|
||||
Resources:
|
||||
|
||||
#-- Application Load Balancer --#
|
||||
PublicALB:
|
||||
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
|
||||
Properties:
|
||||
Type: application
|
||||
LoadBalancerAttributes:
|
||||
- Key: deletion_protection.enabled
|
||||
Value: false
|
||||
- Key: idle_timeout.timeout_seconds
|
||||
Value: 60
|
||||
Scheme: internet-facing
|
||||
SecurityGroups:
|
||||
- !Ref AlbSecurityGroup
|
||||
Subnets: !Split [",", !Ref PublicSubnets]
|
||||
Tags:
|
||||
- Key: Name
|
||||
Value: !Sub "Grafana-${environment}-ALB"
|
||||
- Key: environment
|
||||
Value: !Ref environment
|
||||
|
||||
AlbSecurityGroup:
|
||||
Type: AWS::EC2::SecurityGroup
|
||||
Properties:
|
||||
GroupDescription: ECS Allowed Ports
|
||||
VpcId: !Ref VpcId
|
||||
SecurityGroupIngress:
|
||||
- IpProtocol: icmp
|
||||
FromPort: "-1"
|
||||
ToPort: "-1"
|
||||
CidrIp: 0.0.0.0/0
|
||||
- IpProtocol: tcp
|
||||
FromPort: "443"
|
||||
ToPort: "443"
|
||||
CidrIp: 0.0.0.0/0
|
||||
- IpProtocol: tcp
|
||||
FromPort: "80"
|
||||
ToPort: "80"
|
||||
CidrIp: 0.0.0.0/0
|
||||
SecurityGroupEgress:
|
||||
- IpProtocol: icmp
|
||||
FromPort: "-1"
|
||||
ToPort: "-1"
|
||||
CidrIp: 0.0.0.0/0
|
||||
- IpProtocol: tcp
|
||||
FromPort: "0"
|
||||
ToPort: "65535"
|
||||
CidrIp: 0.0.0.0/0
|
||||
- IpProtocol: udp
|
||||
FromPort: "0"
|
||||
ToPort: "65535"
|
||||
CidrIp: 0.0.0.0/0
|
||||
|
||||
# Target group for admin portal port
|
||||
AdminPortalTargetGroup:
|
||||
Type: AWS::ElasticLoadBalancingV2::TargetGroup
|
||||
Properties:
|
||||
HealthCheckIntervalSeconds: 30
|
||||
HealthCheckProtocol: HTTP
|
||||
HealthCheckTimeoutSeconds: 15
|
||||
HealthyThresholdCount: 2
|
||||
UnhealthyThresholdCount: 2
|
||||
Matcher:
|
||||
HttpCode: '200'
|
||||
HealthCheckPath: '/api/health'
|
||||
Port: 3000
|
||||
Protocol: HTTP
|
||||
TargetGroupAttributes:
|
||||
- Key: deregistration_delay.timeout_seconds
|
||||
Value: '20'
|
||||
VpcId: !Ref 'VpcId'
|
||||
Tags:
|
||||
- Key: Name
|
||||
Value: !Sub 'grafana-${release}'
|
||||
|
||||
# HTTPS for Admin Portal
|
||||
AdminPortalAlbListener:
|
||||
Type: AWS::ElasticLoadBalancingV2::Listener
|
||||
Properties:
|
||||
Certificates:
|
||||
- CertificateArn: !Ref PortalCertificate
|
||||
DefaultActions:
|
||||
- Type: forward
|
||||
TargetGroupArn: !Ref AdminPortalTargetGroup
|
||||
LoadBalancerArn: !Ref PublicALB
|
||||
Port: 443
|
||||
Protocol: HTTPS
|
||||
|
||||
# Redirect HTTP -> HTTPS
|
||||
AdminPortalRedirectAlbListener:
|
||||
Type: AWS::ElasticLoadBalancingV2::Listener
|
||||
Properties:
|
||||
DefaultActions:
|
||||
- Type: redirect
|
||||
RedirectConfig:
|
||||
Protocol: HTTPS
|
||||
Port: 443
|
||||
Host: '#{host}'
|
||||
Path: '/#{path}'
|
||||
Query: '#{query}'
|
||||
StatusCode: HTTP_301
|
||||
LoadBalancerArn: !Ref PublicALB
|
||||
Port: 80
|
||||
Protocol: HTTP
|
||||
|
||||
Outputs:
|
||||
AdminPortalTargetGroup:
|
||||
Description: ""
|
||||
Value: !Ref AdminPortalTargetGroup
|
||||
PublicAlbDnsName:
|
||||
Description: ""
|
||||
Value: !GetAtt PublicALB.DNSName
|
||||
Reference in New Issue
Block a user