@@ -28,32 +28,17 @@ tasks:
2828 echo "Platform CloudFront origin OK"
2929 fi
3030 fi
31- # GitLab NLB
32- NLB_DNS=$(aws elbv2 describe-load-balancers --names "{{.HUB_CLUSTER_NAME}}-gitlab" --region {{.AWS_REGION}} --query 'LoadBalancers[0].DNSName' --output text 2>/dev/null)
33- DIST_ID=$(aws cloudfront list-distributions --query "DistributionList.Items[?Comment=='{{.HUB_CLUSTER_NAME}}-gitlab'].Id" --output text 2>/dev/null)
34- if [ -n "$DIST_ID" ] && [ "$DIST_ID" != "None" ] && [ -n "$NLB_DNS" ] && [ "$NLB_DNS" != "None" ]; then
35- CURRENT_ORIGIN=$(aws cloudfront get-distribution-config --id "$DIST_ID" --query 'DistributionConfig.Origins.Items[0].DomainName' --output text)
36- if [ "$CURRENT_ORIGIN" != "$NLB_DNS" ]; then
37- echo "Updating GitLab CloudFront origin: $CURRENT_ORIGIN → $NLB_DNS"
38- ETAG=$(aws cloudfront get-distribution-config --id "$DIST_ID" --query 'ETag' --output text)
39- aws cloudfront get-distribution-config --id "$DIST_ID" --query 'DistributionConfig' --output json | \
40- jq --arg dns "$NLB_DNS" '.Origins.Items[0].DomainName = $dns' > /tmp/cf-gitlab-config.json
41- aws cloudfront update-distribution --id "$DIST_ID" --if-match "$ETAG" --distribution-config file:///tmp/cf-gitlab-config.json > /dev/null
42- echo "GitLab CloudFront updated"
43- else
44- echo "GitLab CloudFront origin OK"
45- fi
46- fi
31+ # GitLab CloudFront is managed by CDK (NLB + distribution in team-stack.ts).
32+ # private/gitlab-cloudfront-domain is written by bootstrap.sh at EC2 boot.
4733
4834 setup-exposure :
49- desc : Pre-create ALB and CloudFront distributions (cloudfront mode only)
35+ desc : Pre-create ALB and CloudFront distributions (cloudfront mode only, skipped if cloudfrontDomain already set in config )
5036 status :
5137 - ' [ "{{.EXPOSURE_MODE}}" != "cloudfront" ]'
38+ - ' [ -n "{{.CLOUDFRONT_DOMAIN}}" ]'
5239 cmds :
5340 - task : create-alb
5441 - task : hub-distribution
55- - task : gitlab-nlb
56- - task : gitlab-distribution
5742 create-alb :
5843 desc : Pre-create the platform ALB for CloudFront (cloudfront mode only)
5944 status :
@@ -62,9 +47,12 @@ tasks:
6247 - printf '{{.C_STEP}}▸ Creating platform ALB...{{.C_RESET}}\n'
6348 - |
6449 set -e
65- VPC_ID=$(aws eks describe-cluster --name {{.HUB_CLUSTER_NAME}} --region {{.AWS_REGION}} --query 'cluster.resourcesVpcConfig.vpcId' --output text)
66- PUBLIC_SUBNETS=$(aws eks describe-cluster --name {{.HUB_CLUSTER_NAME}} --region {{.AWS_REGION}} --query 'cluster.resourcesVpcConfig.subnetIds' --output text | tr '\t' '\n')
67- PUBLIC_SUBNETS=$(aws ec2 describe-subnets --subnet-ids $PUBLIC_SUBNETS --region {{.AWS_REGION}} --query 'Subnets[?MapPublicIpOnLaunch==`true`].SubnetId' --output text | tr '\t' ' ')
50+ # Use VPC from config.local.yaml cloudfront.vpcId if set, else derive from EKS cluster
51+ VPC_ID="${{.CLOUDFRONT_VPC_ID}}"
52+ if [ -z "$VPC_ID" ]; then
53+ VPC_ID=$(aws eks describe-cluster --name {{.HUB_CLUSTER_NAME}} --region {{.AWS_REGION}} --query 'cluster.resourcesVpcConfig.vpcId' --output text)
54+ fi
55+ PUBLIC_SUBNETS=$(aws ec2 describe-subnets --filters "Name=vpc-id,Values=$VPC_ID" "Name=mapPublicIpOnLaunch,Values=true" --region {{.AWS_REGION}} --query 'Subnets[*].SubnetId' --output text | tr '\t' ' ')
6856 CLUSTER_SG=$(aws eks describe-cluster --name {{.HUB_CLUSTER_NAME}} --region {{.AWS_REGION}} --query 'cluster.resourcesVpcConfig.clusterSecurityGroupId' --output text)
6957 SG_NAME="{{.HUB_CLUSTER_NAME}}-platform-alb-sg"
7058 SG_ID=$(aws ec2 describe-security-groups --filters "Name=group-name,Values=$SG_NAME" "Name=vpc-id,Values=$VPC_ID" --region {{.AWS_REGION}} --query 'SecurityGroups[0].GroupId' --output text 2>/dev/null)
@@ -109,55 +97,7 @@ tasks:
10997 CF_DOMAIN=$(aws cloudfront create-distribution --distribution-config "$CF_CONFIG" --query "Distribution.DomainName" --output text)
11098 mkdir -p {{.ROOT_DIR}}/private
11199 echo -n "$CF_DOMAIN" > {{.ROOT_DIR}}/private/cloudfront-domain
112- echo "CloudFront: $CF_DOMAIN"
100+ echo "CloudFront: $CF_DOMAIN (copy this to config.local.yaml cloudfront.cloudfrontDomain) "
113101 - printf '{{.C_OK}}✓ Platform CloudFront ready.{{.C_RESET}}\n'
114-
115- gitlab-nlb :
116- desc : Pre-create GitLab NLB for CloudFront (cloudfront mode only)
117- status :
118- - aws elbv2 describe-load-balancers --names {{.HUB_CLUSTER_NAME}}-gitlab --region {{.AWS_REGION}} 2>/dev/null
119- cmds :
120- - printf '{{.C_STEP}}▸ Creating GitLab NLB...{{.C_RESET}}\n'
121- - |
122- set -e
123- VPC_ID=$(aws eks describe-cluster --name {{.HUB_CLUSTER_NAME}} --region {{.AWS_REGION}} --query 'cluster.resourcesVpcConfig.vpcId' --output text)
124- PUBLIC_SUBNETS=$(aws eks describe-cluster --name {{.HUB_CLUSTER_NAME}} --region {{.AWS_REGION}} --query 'cluster.resourcesVpcConfig.subnetIds' --output text | tr '\t' '\n')
125- PUBLIC_SUBNETS=$(aws ec2 describe-subnets --subnet-ids $PUBLIC_SUBNETS --region {{.AWS_REGION}} --query 'Subnets[?MapPublicIpOnLaunch==`true`].SubnetId' --output text | tr '\t' ' ')
126- # Create WITH a security group: an NLB created with zero SGs can never have
127- # SGs added later, which blocks the AWS LBC from attaching its managed
128- # frontend SG when it adopts this NLB. Seed with the cluster SG; the LBC
129- # replaces the set via SetSecurityGroups during reconcile.
130- CLUSTER_SG=$(aws eks describe-cluster --name {{.HUB_CLUSTER_NAME}} --region {{.AWS_REGION}} --query 'cluster.resourcesVpcConfig.clusterSecurityGroupId' --output text)
131- NLB_ARN=$(aws elbv2 create-load-balancer \
132- --name "{{.HUB_CLUSTER_NAME}}-gitlab" \
133- --subnets $PUBLIC_SUBNETS \
134- --security-groups "$CLUSTER_SG" \
135- --scheme internet-facing \
136- --type network \
137- --tags Key=elbv2.k8s.aws/cluster,Value={{.HUB_CLUSTER_NAME}} Key=service.k8s.aws/stack,Value=gitlab/gitlab Key=service.k8s.aws/resource,Value=LoadBalancer \
138- --region {{.AWS_REGION}} \
139- --query 'LoadBalancers[0].LoadBalancerArn' --output text)
140- NLB_DNS=$(aws elbv2 describe-load-balancers --load-balancer-arns "$NLB_ARN" --region {{.AWS_REGION}} --query 'LoadBalancers[0].DNSName' --output text)
141- echo "GitLab NLB: $NLB_DNS"
142- - printf '{{.C_OK}}✓ GitLab NLB ready.{{.C_RESET}}\n'
143-
144- gitlab-distribution :
145- desc : Create CloudFront distribution for GitLab NLB (idempotent)
146- status :
147- - aws cloudfront list-distributions --query "DistributionList.Items[?Comment=='{{.HUB_CLUSTER_NAME}}-gitlab'].Id" --output text | grep -q .
148- cmds :
149- - printf '{{.C_STEP}}▸ Creating GitLab CloudFront distribution...{{.C_RESET}}\n'
150- - |
151- set -e
152- NLB_DNS=$(aws elbv2 describe-load-balancers --names "{{.HUB_CLUSTER_NAME}}-gitlab" --region {{.AWS_REGION}} --query 'LoadBalancers[0].DNSName' --output text)
153- CF_CONFIG=$(cat <<'CFEOF'
154- {"CallerReference":"{{.HUB_CLUSTER_NAME}}-gitlab-TIMESTAMP","Comment":"{{.HUB_CLUSTER_NAME}}-gitlab","Enabled":true,"Origins":{"Quantity":1,"Items":[{"Id":"gitlab-nlb","DomainName":"NLB_DNS_PLACEHOLDER","CustomOriginConfig":{"HTTPPort":80,"HTTPSPort":443,"OriginProtocolPolicy":"http-only","OriginSslProtocols":{"Quantity":1,"Items":["TLSv1.2"]}}}]},"DefaultCacheBehavior":{"TargetOriginId":"gitlab-nlb","ViewerProtocolPolicy":"redirect-to-https","AllowedMethods":{"Quantity":7,"Items":["GET","HEAD","OPTIONS","PUT","POST","PATCH","DELETE"],"CachedMethods":{"Quantity":2,"Items":["GET","HEAD"]}},"CachePolicyId":"4135ea2d-6df8-44a3-9df3-4b5a84be39ad","OriginRequestPolicyId":"216adef6-5c7f-47e4-b989-5492eafa07d3","Compress":true},"ViewerCertificate":{"CloudFrontDefaultCertificate":true},"PriceClass":"PriceClass_100"}
155- CFEOF
156- )
157- CF_CONFIG=$(echo "$CF_CONFIG" | sed "s|NLB_DNS_PLACEHOLDER|$NLB_DNS|g; s|TIMESTAMP|$(date +%s)|g")
158- CF_DOMAIN=$(aws cloudfront create-distribution --distribution-config "$CF_CONFIG" --query "Distribution.DomainName" --output text)
159- mkdir -p {{.ROOT_DIR}}/private
160- echo -n "$CF_DOMAIN" > {{.ROOT_DIR}}/private/gitlab-cloudfront-domain
161- echo "GitLab CloudFront: $CF_DOMAIN"
162- - printf '{{.C_OK}}✓ GitLab CloudFront ready.{{.C_RESET}}\n'
102+ # gitlab-nlb and gitlab-distribution removed — GitLab CloudFront is now managed by CDK (team-stack.ts).
163103
0 commit comments