Terraform을 통해 ECS에 지속적으로 전달
이 문제를 해결할 수 있는 몇 가지 방법이 있는데, 그 중 많은 것이 this thread에서 토론되었다.하지만 오늘 나는 너희들에게 내가 이 문제를 어떻게 해결했는지 보여줄 것이다.
이미지를 구성할 때 고유한 태그를 지정하고자 합니다.이상적인 상황에서 너는 계산할 수 있는 것을 원한다.예를 들어 Azure의 내장 "BuildId"매개변수를 사용하여 이미지를 표시하도록 선택했습니다.
다음은 CI 파이프라인에서 우리가 채택한 구축 절차를 보실 수 있습니다.이미지가 생성되면 BuildId가 포함된 텍스트 파일을 생성하여 가공소재로 보냅니다.이것은 이후에 중요하게 변할 것이다.그러나 가장 중요한 것은 파라미터의 변화에 따라 환경에 더 많은 파이프를 터치해야 한다는 것입니다.
- task: Docker@2
inputs:
command: build
DockerFile: "$(Build.SourcesDirectory)/Dockerfile"
repository: ${{parameters.projectName}}
tags: |
$(Build.BuildId)
- task: ECRPushImage@1
inputs:
imageSource: "imagename"
sourceImageName: ${{parameters.projectName}}
sourceImageTag: "$(Build.BuildId)"
repositoryName: ${{parameters.projectName}}
pushTag: "$(Build.BuildId)"
- task: Bash@3
displayName: "Upload Build Artifact of the Docker image Id"
inputs:
targetType: "inline"
script: |
# Add the build Id to a new file that will then be published as an artifact
echo $(Build.BuildId) > .buildId
cat .buildId
- task: CopyFiles@2
displayName: "Copy BuildId file"
inputs:
Contents: ".buildId"
TargetFolder: "$(Build.ArtifactStagingDirectory)"
- task: PublishBuildArtifacts@1
displayName: "Publish Artifact"
inputs:
pathToPublish: $(Build.ArtifactStagingDirectory)
파이프를 생성한 후에 이 파이프를 실행해야 합니다.AWS 시스템 관리자 > 애플리케이션 관리 > 매개 변수 저장소에 들어가서 새 매개 변수를 만듭니다.매개변수의 이름을
/my-api/${env}/docker-image-tag
(여기서 env
는 환경이며 모든 환경에 대해 이 매개변수를 복제해야 함)입니다.이것은 '문자열' 변수이고 CI가 파이프를 구축해서 만든 유일한 표시일 것입니다. 예를 들어 BuildId입니다.development
.우리가 어떻게 할 수 있겠어?우리의 설치로 인해 중복 작업은 상당히 적다.우리는 이미 자신의 이미지 구축을 가지고 있다.SSM 매개변수를 업데이트하여 빌드 파이핑에서 생성된 고유 태그(BuildId)를 사용하기만 하면 됩니다.Azure에서는 단계 1에서 생성한 가공소재 트리거 파이프를 기준으로 트리거할 수 있습니다.그런 다음 세 가지 작업을 구성했습니다.
// Import the SSM parameter
// This can be done on a module level because it depends on the environment
data "aws_ssm_parameter" "docker_image_id" {
name = "/my-api/${var.environment}/docker-image-tag"
}
// Use it later on...
container_image = "<AWS_ACCOUNT_ID>.dkr.ecr.<REGION>.amazonaws.com/my-api:${data.aws_ssm_parameter.docker_image_id.value}"
Reference
이 문제에 관하여(Terraform을 통해 ECS에 지속적으로 전달), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/joshghent/continuous-delivery-to-ecs-with-terraform-5b7n텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)