2017-12-11 28 views
0

.Net Core 2.0 웹 응용 프로그램을 Azure로 배포 할 때 CI/CD 파이프 라인에서 원하는 결과를 얻지 못했습니다.Azure .Net Core 웹 응용 프로그램 배포 변수

내 테스트 환경에 배포 할 때 모든 것이 작동합니다. 설정 - ConnectionString : Main -을 추가하여 Azure 포털의 개발 응용 프로그램에 대한 AppSettings 섹션의 올바른 데이터베이스에 연결합니다.

이제 프로덕션 환경에 배포하려고합니다. 문제는 두 개의 프로덕션 데이터베이스가 있으며 한 번만 "라이브"입니다. 내가하고 싶은 것은 각 데이터베이스에 하나씩 두 개의 릴리스 정의를 작성한 다음 둘 중 하나를 사용하여 배치 할 수있는 기능을 갖추는 것입니다.

AppSettings.json의 로컬 연결 문자열을 이전 .Net 버전과 동일하게 무시하는 릴리스 변수를 추가하거나 더 복잡한 솔루션이 필요합니까?

+0

2 개의 프로덕션 데이터베이스가 왜 있는지 자세히 설명 할 수 있습니까? 이 문제는 배포 슬롯으로 해결할 수 있습니까? –

+0

시스템에는 두 시간의 프로덕션 데이터베이스가 있습니다. 시스템에서 여러 시간 프로세스 인 레거시 시스템에서 매일 업데이트해야하기 때문에 업데이트가 진행되는 동안 사용자에게 가용성이 있어야합니다. 응용 프로그램은 업데이트 후 가장 최근에 업데이트 된 데이터베이스를 가리켜 야하며 연결이 전환 된 후 24 시간이 지나면 다음 업데이트까지 데이터가 천천히 오래되어 버립니다 (이상적이지는 않지만 레거시 시스템이 교체 될 때까지 필요하지 않음). 배치 슬롯을 사용하는 것이 좋다고 생각할 수도 있습니다. 자동 교체가 기능이라는 것을 깨닫지 못했습니다. – SBFrancies

답변

0

당신은 당신이 릴리스 정의에 Data.DefaultConnection.ConnectionString로 방출/환경 변수를 정의 할 수 있습니다, 아래의 샘플에서 ConnectionString을의 값을 대체, 예를 들어, 푸른 앱 서비스 배포 작업의 JSON variable substitution 기능을 사용할 수 있습니다.

{ 
    "Data": { 
    "DefaultConnection": { 
     "ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB;Trusted_Connection=True" 
    } 
    } 
} 
+0

다른 답변을 통해 내 접근 방식에 대한 생각을 잠시 멈출 수 있지만 감사합니다. – SBFrancies

0

Azure에서 ASP.NET 핵심 응용 프로그램을 사용하는 경우 Azure Key Vault를 사용하여 비밀을 저장하는 것이 좋습니다. 이렇게하면 버전 관리 또는 VSTS에 자격 증명이 저장되지 않습니다.

배포 중에 구성 값을 정말로 업데이트하려면 매개 변수를 토큰 화하고 배포 중에 바꿀 수 있습니다. 당신은 this marketplace task을 사용할 수 있습니다. Managing Config for .NET Core Web App Deployments with Tokenizer and ReplaceTokens Tasks은 이러한 작업을 사용하는 방법을 설명합니다.

0

ARM template을 통해 배포를 만들고 각 환경에 대해 서로 다른 매개 변수 파일을 만들어이 작업을 수행 할 수 있어야합니다. 템플릿을 사용하여 관련 앱 설정을 대체 할 수 있습니다.이 설정은 Azure 포털 애플리케이션 설정에 삽입됩니다. 이 설정은 repo에서 설정 파일에 체크 된 내용보다 우선합니다.