AWS Fargate에서 GitLab CI 오토스케일
AWS Fargate 커스텀 실행기 드라이버를 사용하여 Amazon ECS에서 GitLab CI 작업을 자동 실행하는 단계별 설정 가이드
Warning Fargate 드라이버는 커뮤니티 지원입니다. GitLab Support에서 문제 디버깅을 도와드리려 하지만 보장은 없습니다. AWS Fargate 용 GitLab 커스텀 실행기 드라이버는 각 GitLab CI 작업을 실행하기 위해 Amazon Elastic Container Service(ECS)에서 컨테이너를 자동으로 시작합니다. 이 문서의 작업을 완료하면 실행기는 GitLab에서 시작된 작업을 실행할 수 있습니다. GitLab에서 커밋이 발생할 때마다 GitLab 인스턴스는 새 작업이 사용 가능함을 러너에게 알립니다. 러너는 AWS ECS에서 구성한 작업 정의를 기반으로 대상 ECS 클러스터에서 새 태스크를 시작합니다. AWS ECS 작업 정의에서 어떤 Docker 이미지든 사용하도록 구성할 수 있습니다. 이 접근 방식으로 AWS Fargate에서 실행할 수 있는 빌드 유형에 대한 완전한 유연성을 가집니다. 이 문서는 구현에 대한 초기 이해를 제공하기 위한 예시를 보여줍니다. 운영 환경에 사용하기 위한 것이 아니며, AWS에서 추가적인 보안이 필요합니다. 예를 들어 두 개의 AWS 보안 그룹이 필요할 수 있습니다: GitLab Runner를 호스팅하는 EC2 인스턴스에 사용되며 제한된 외부 IP 범위에서만 SSH 연결을 허용하는 그룹(관리 액세스용). Fargate 태스크에 적용되며 EC2 인스턴스에서만 SSH 트래픽을 허용하는 그룹. 비공개 컨테이너 레지스트리의 경우, ECS 태스크에는 IAM 권한(AWS ECR만 해당) 또는 비ECR 비공개 레지스트리의 경우 태스크의 비공개 레지스트리 인증 이 필요합니다. CloudFormation 또는 Terraform을 사용하여 AWS 인프라 프로비저닝 및 설정을 자동화할 수 있습니다. CI/CD 작업은 .gitlab-ci.yml 파일의 image: 키워드 값이 아닌 ECS 태스크에 정의된 이미지를 사용합니다. ECS는 ECS 태스크에 사용되는 이미지를 재정의하는 것을 허용하지 않습니다. 이 제한 사항을 해결하려면 다음을 수행할 수 있습니다: 러너가 사용되는 모든 프로젝트의 모든 빌드 종속성이 포함된 이미지를 ECS 작업 정의에서 생성하고 사용합니다. 다른 이미지로 여러 ECS 작업 정의를 생성하고 FARGATE_TASK_DEFINITION CI/CD 변수에서 ARN을 지정합니다. 공식 AWS EKS Blueprints 를 따라 EKS 클러스터를 생성하는 것을 고려합니다. 자세한 내용은 1시간 만에 코드 없이 GitLab EKS Fargate 러너 시작하기 를 참조하세요. Warning Fargate는 컨테이너 호스트를 추상화하므로 컨테이너 호스트 속성의 구성 가능성이 제한됩니다. 이는 디스크 또는 네트워크에 높은 IO가 필요한 러너 워크로드에 영향을 미칩니다. 이러한 속성은 Fargate에서 구성 가능성이 제한되거나 없기 때문입니다. Fargate에서 GitLab Runner를 사용하기 전에 CPU, 메모리, 디스크 IO 또는 네트워크 IO에 높은 컴퓨팅 특성을 가진 러너 워
