다음을 통해 공유


자습서: Service Fabric 클러스터에 CI/CD로 컨테이너 애플리케이션 배포

이 자습서는 시리즈의 2부로, Visual Studio 및 Azure DevOps를 사용하여 Azure Service Fabric 컨테이너 애플리케이션에 대한 지속적인 통합 및 배포를 설정하는 방법을 설명합니다. 기존 Service Fabric 애플리케이션이 필요하며 Azure Service Fabric에 Windows 컨테이너로 .NET 애플리케이션 배포에서 만든 애플리케이션을 예제로 사용합니다.

시리즈 2부에서는 다음 방법에 대해 알아봅니다.

  • 프로젝트에 소스 제어 추가
  • Visual Studio 팀 탐색기에서 빌드 정의 만들기
  • Visual Studio 팀 탐색기에서 릴리스 정의 만들기
  • 애플리케이션 자동 배포 및 업그레이드

필수 조건

이 자습서를 시작하기 전에:

게시 프로필 준비

이제 컨테이너 애플리케이션을 배포했으므로 연속 통합을 설정할 준비가 되었습니다. 먼저, Azure DevOps 내에서 실행할 배포 프로세스에 사용할 게시 프로필을 애플리케이션 내에서 준비하는 것입니다. 게시 프로필은 이전에 만든 클러스터를 대상으로 지정하도록 구성해야 합니다. Visual Studio를 시작하고 기존 Service Fabric 애플리케이션 프로젝트를 엽니다. 솔루션 탐색기에서 애플리케이션을 마우스 오른쪽 단추로 클릭하고 게시...를 선택합니다.

연속 통합 워크플로로 사용할 대상 프로필을 애플리케이션 프로젝트 내에서 선택합니다(예: 클라우드). 클러스터 연결 엔드포인트를 지정합니다. 애플리케이션 업그레이드 확인란을 선택하여 Azure DevOps의 각 배포에 대해 애플리케이션이 업그레이드되도록 합니다. 저장 하이퍼링크를 클릭하여 설정을 게시 프로필에 저장한 후 취소를 클릭하여 대화 상자를 닫습니다.

푸시 프로필

새 Azure DevOps Git 리포지토리에 Visual Studio 솔루션 공유

애플리케이션 소스 파일을 Azure DevOps의 팀 프로젝트에 공유하여 빌드를 생성할 수 있습니다.

Visual Studio 오른쪽 하단의 상태 표시줄에서 소스 제어에 추가 ->Git을 선택하여 프로젝트 대한 새 로컬 Git 리포지토리를 만듭니다.

팀 탐색기푸시 보기에서 Azure DevOps에 푸시 아래에 있는 Git 리포지토리 게시 단추를 선택합니다.

Visual Studio의 팀 탐색기 - 동기화 창의 스크린샷. Azure DevOps로 푸시 아래에 Git 리포지토리에 게시 단추가 강조 표시됩니다.

사용자의 이메일을 확인하고 계정 드롭다운에서 조직을 선택합니다. 아직 없는 경우 조직을 설정해야 합니다. 리포지토리 이름을 입력하고 리포지토리 게시를 선택합니다.

Azure DevOps로 푸시 창의 스크린샷. 이메일, 계정, 리포지토리 이름 및 리포지토리 게시 단추에 대한 설정이 강조 표시됩니다.

리포지토리를 게시하면 사용자 계정에 로컬 리포지토리와 같은 이름으로 새 팀 프로젝트가 만들어집니다. 기존 팀 프로젝트에서 리포지토리를 만들려면 리포지토리 이름 옆에서 고급을 클릭하고 팀 프로젝트를 선택합니다. See it on the web(웹에서 보기)을 선택하여 웹에서 코드를 볼 수 있습니다.

Azure Pipelines를 사용한 지속적인 배달 구성

Azure DevOps 빌드 정의는 순차적으로 실행되는 빌드 단계 집합으로 구성된 워크플로를 설명합니다. Service Fabric 애플리케이션 패키지 및 기타 아티팩트를 생성하는 빌드 정의를 만들어 Service Fabric 클러스터를 배포합니다. Azure DevOps 빌드 정의에 대해 자세히 알아봅니다.

Azure DevOps 릴리스 정의에서는 애플리케이션 패키지를 클러스터에 배포하는 워크플로를 설명합니다. 빌드 정의와 릴리스 정의를 함께 사용할 경우 소스 파일로 시작하여 클러스터에서 실행 중인 애플리케이션에서 종료할 때까지 전체 워크플로를 실행합니다. Azure DevOps 릴리스 정의에 대해 자세히 알아봅니다.

빌드 정의 만들기

웹 브라우저에서 https://dev.azure.com으로 이동하고 조직, 새 프로젝트를 차례로 선택하여 새로운 팀 프로젝트를 엽니다.

왼쪽 패널에서 파이프라인 옵션을 선택한 다음, 새 파이프라인을 클릭합니다.

참고 항목

빌드 정의 템플릿이 표시되지 않으면 새 YAML 파이프라인 생성 환경이 해제되어 있는지 확인합니다. 이 기능은 DevOps 계정의 미리 보기 기능 섹션 내에서 구성됩니다.

새 파이프라인

소스로 Azure Repos Git을 선택하고, 팀 프로젝트 이름, 프로젝트 리포지토리 및 마스터 기본 분기 또는 수동 및 예약 빌드를 선택합니다. 계속을 클릭합니다.

템플릿 선택에서 Docker 지원을 사용하는 Azure Service Fabric 애플리케이션 템플릿을 선택하고 적용을 클릭합니다.

빌드 템플릿 선택

태스크에서 에이전트 풀Hosted VS2017을 선택합니다.

작업 선택

태그 이미지를 클릭합니다.

Container Registry 유형에서 Azure Container Registry를 선택합니다. Azure 구독을 선택한 후 권한 부여를 클릭합니다. Azure Container Registry를 선택합니다.

Docker 태그 이미지 선택

이미지 푸시를 클릭합니다.

Container Registry 유형에서 Azure Container Registry를 선택합니다. Azure 구독을 선택한 후 권한 부여를 클릭합니다. Azure Container Registry를 선택합니다.

Docker 푸시 이미지 선택

트리거 탭 아래에서 지속적인 통합 사용을 선택하여 지속적인 통합을 사용하도록 설정합니다. 분기 필터 내에서 + 추가를 클릭하면 분기 사양이 기본값인 마스터로 지정됩니다.

빌드 파이프라인 및 큐 저장 대화 상자에서 저장 및 큐에 넣기를 클릭하여 빌드를 수동으로 시작합니다.

트리거 선택

푸시 또는 체크 인 시 트리거도 빌드합니다. 빌드 진행 상황을 확인하려면 빌드 탭으로 전환합니다. 빌드가 성공적으로 실행되는지 확인한 후 애플리케이션을 클러스터에 배포하는 릴리스 정의를 정의합니다.

릴리스 정의 만들기

왼쪽 패널에서 파이프라인 옵션을 선택한 다음, 릴리스, + 새 파이프라인을 차례로 선택합니다. 템플릿 선택에서 목록의 Azure Service Fabric 배포 템플릿을 선택하고 적용을 선택합니다.

릴리스 템플릿 선택

태스크를 선택하고 환경 1을 선택한 후 +새로 만들기를 선택하여 새 클러스터 연결을 추가합니다.

클러스터 연결 추가

새 Service Fabric 연결 추가 보기에서 인증서 기반 또는 Microsoft Entra ID 인증을 선택합니다. "Mysftestcluster" 및 "tcp://mysftestcluster.southcentralus.cloudapp.azure.com:19000"의 클러스터 엔드포인트(또는 배포 중인 클러스터의 엔드포인트)의 연결 이름을 지정합니다.

인증서 기반 인증의 경우 클러스터를 만드는 데 사용된 서버 인증서의 서버 인증서 지문을 추가합니다. 클라이언트 인증서에서 base-64 인코딩된 클라이언트 인증서 파일을 추가합니다. base-64 인코딩된 해당 인증서의 표현을 가져오는 방법에 대한 정보는 해당 필드에서 도움말 팝업을 참조하세요. 인증서의 암호도 추가합니다. 별도 클라이언트 인증서가 없는 경우 클러스터 또는 서버 인증서를 사용할 수 있습니다.

Microsoft Entra 자격 증명의 경우 사용하려는 클러스터 및 자격 증명을 만드는 데 사용된 서버 인증서의 서버 인증서 지문을 추가하여 사용자 이름암호 필드에서 클러스터에 연결합니다.

추가를 클릭하여 클러스터 연결을 저장합니다.

에이전트 단계 아래에서 Service Fabric 애플리케이션 배포를 클릭합니다. Docker 설정을 클릭하고 Docker 설정 구성을 클릭합니다. 레지스트리 자격 증명 소스에서 Azure Resource Manager 서비스 연결을 선택합니다. 그런 후 Azure 구독을 선택합니다.

릴리스 파이프라인 에이전트

다음으로 릴리스 정의가 빌드에서 출력을 찾을 수 있도록 파이프라인에 빌드 아티팩트를 추가합니다. 파이프라인아티팩트->+추가를 선택합니다. 원본(빌드 정의)에서 이전에 만든 빌드 정의를 선택합니다. 추가를 클릭하여 빌드 아티팩트를 저장합니다.

아티팩트 추가

빌드가 완료될 때 릴리스가 자동으로 생성하도록 지속적인 배포 트리거를 사용하도록 설정합니다. 아티팩트에서 번개 아이콘을 클릭하고, 트리거를 사용하고, 저장을 클릭하여 릴리스 정의를 저장합니다.

트리거 활성화

+ 릴리스 ->릴리스 만들기 ->만들기를 선택하여 릴리스를 수동으로 만듭니다. 릴리스 탭에서 릴리스 진행률을 모니터링할 수 있습니다.

배포에 성공했고 클러스터에서 애플리케이션이 실행 중인지 확인합니다. 웹 브라우저를 열고 http://mysftestcluster.southcentralus.cloudapp.azure.com:19080/Explorer/로 이동합니다. 애플리케이션 버전을 확인합니다. 이 예제에서는 “1.0.0.20170616.3”입니다.

변경 내용 커밋 및 푸시, 릴리스 트리거

Azure DevOps의 일부 코드 변경을 체크 인하여 연속 통합 파이프라인이 작동하는지 확인합니다.

코드를 작성하면 Visual Studio에서 변경 내용을 자동으로 추적합니다. 오른쪽 하단의 상태 표시줄에서 보류 중인 변경 내용 아이콘(보류 중인 변경 내용 아이콘에는 연필과 숫자가 표시됨)을 선택하여 로컬 Git 리포지토리로 변경 내용을 커밋합니다.

팀 탐색기의 변경 내용 보기에서 업데이트를 설명하는 메시지를 추가하고 변경 내용을 커밋합니다.

모두 커밋

팀 탐색기에서 게시 취소된 변경 내용 상태 표시줄 아이콘(게시 취소된 변경 내용) 또는 동기화 보기를 선택합니다. 푸시를 선택하여 Azure DevOps에서 코드를 업데이트합니다.

변경 내용 푸시

Azure DevOps에 변경 내용을 푸시하면 빌드가 자동으로 트리거됩니다. 빌드 정의가 성공적으로 완료되면 릴리스가 자동으로 만들어지고 클러스터에서 애플리케이션 업그레이드가 시작됩니다.

빌드 진행률을 확인하려면 Visual Studio의 팀 탐색기에서 빌드 탭으로 전환합니다. 빌드가 성공적으로 실행되는지 확인한 후 애플리케이션을 클러스터에 배포하는 릴리스 정의를 정의합니다.

배포에 성공했고 클러스터에서 애플리케이션이 실행 중인지 확인합니다. 웹 브라우저를 열고 http://mysftestcluster.southcentralus.cloudapp.azure.com:19080/Explorer/로 이동합니다. 애플리케이션 버전을 확인합니다. 이 예제에서는 "1.0.0.20170815.3"입니다.

Service Fabric Explorer의 투표 앱 스크린샷. 기본 정보 탭에서 “1.0.0.20170815.3” 앱 버전이 강조 표시됩니다.

애플리케이션 업데이트

애플리케이션에서 코드를 변경합니다. 이전 단계에 따라 변경 내용을 저장 및 커밋합니다.

애플리케이션 업그레이드가 시작되면 Service Fabric Explorer에서 업그레이드 진행률을 확인할 수 있습니다.

Service Fabric Explorer의 투표 앱 스크린샷. “업그레이드 진행 중” 메시지가 강조 표시되고 앱 상태는 “업그레이드 중”입니다.

애플리케이션 업그레이드에는 몇 분 정도 걸릴 수 있습니다. 업그레이드가 완료되면 애플리케이션이 다음 버전으로 실행됩니다. 이 예제에서는 "1.0.0.20170815.4"입니다.

Service Fabric Explorer의 투표 앱 스크린샷. 기본 정보 탭에서 업데이트된 “1.0.0.20170815.4” 앱 버전이 강조 표시됩니다.

다음 단계

이 자습서에서는 다음 작업 방법을 알아보았습니다.

  • 프로젝트에 소스 제어 추가
  • 빌드 정의 만들기
  • 릴리스 정의 만들기
  • 애플리케이션 자동 배포 및 업그레이드

자습서의 다음 부분에서는 컨테이너에 대한 모니터링을 설정하는 방법을 알아봅니다.