Share via


GitHub 또는 Azure Repos에서 카탈로그 추가 및 구성

이 문서에서는 Azure Deployment Environments 개발자 센터 또는 프로젝트에서 카탈로그를 추가하고 구성하는 방법을 설명합니다.

카탈로그를 사용하면 개발 팀이 환경을 만들 수 있도록 환경 정의라고도 하는 큐레이팅된 IaC(Infrastructure-as-Code) 템플릿 세트를 제공할 수 있습니다. GitHub 또는 Azure DevOps에서 사용자 고유의 소스 제어 리포지토리를 카탈로그로 연결하고 환경 정의가 있는 폴더를 지정할 수 있습니다. 배포 환경은 폴더에서 환경 정의를 검색하고 개발 팀이 환경을 만들 수 있도록 합니다.

템플릿의 보안을 강화하기 위해 카탈로그가 암호화됩니다. Azure Deployment Environments는 Microsoft for Azure Services가 관리하는 플랫폼 관리형 암호화 키를 사용하여 미사용 데이터 암호화를 지원합니다.

  • GitHub에서 리포지토리를 호스팅하는 방법을 알아보려면 GitHub 시작을 참조하세요.
  • Azure Repos 프로젝트에서 Git 리포지토리를 호스팅하는 방법을 알아보려면 Azure Repos를 참조하세요.

Microsoft는 개발자 센터에 추가할 수 있는 빠른 시작 카탈로그와 리포지토리로 사용할 수 있는 샘플 카탈로그를 제공합니다. 또한 고유의 프라이빗 리포지토리를 사용하거나 샘플 카탈로그에서 환경 정의를 포크하고 사용자 지정할 수 있습니다.

이 문서에서는 다음 방법을 설명합니다.

  1. 프로젝트 수준 카탈로그 구성
  2. 관리 ID 구성
  3. Azure Repos 또는 GitHub에서 카탈로그 추가
  4. 카탈로그 업데이트
  5. 카탈로그 삭제
  6. 카탈로그 동기화 오류 해결

프로젝트 수준 카탈로그 구성

프로젝트 수준에서 카탈로그를 연결하면 플랫폼 엔지니어가 개발 팀과 관련된 큐레이팅된 환경 정의를 제공할 수 있습니다. 또한 프로젝트 관리자로 할당된 개발 팀 리더가 팀에서 사용할 수 있는 환경 정의를 관리할 수 있습니다.

플랫폼 엔지니어는 프로젝트 수준에서 카탈로그 사용을 완전히 제어할 수 있습니다. 프로젝트에 카탈로그를 추가하려면 먼저 개발자 센터 수준에서 프로젝트 수준 카탈로그를 사용하도록 설정해야 합니다. 플랫폼 엔지니어는 프로젝트 수준에서 사용할 수 있는 카탈로그 항목 유형(예: 환경 정의)을 구성할 수도 있습니다.

기본적으로 프로젝트 수준에서는 카탈로그가 사용하지 않도록 설정되며 카탈로그 항목 형식도 사용하도록 설정되지 않습니다. 프로젝트 수준 카탈로그의 환경 정의는 해당 개발자 센터 수준에서 두 프로젝트 기반 카탈로그가 활성화되고 프로젝트에 대해 환경 정의가 사용하도록 설정된 경우에만 동기화되고 사용할 수 있습니다.

관리 ID 구성

개발자 센터를 만든 후 카탈로그를 연결하기 전에 개발자 센터에 대한 MSI(관리되는 서비스 ID)라고도 하는 관리 ID를 구성해야 합니다. 시스템 할당 관리 ID(시스템 할당 MSI) 또는 사용자 할당 관리 ID(사용자 할당 MSI)를 연결할 수 있습니다. 그런 다음, 관리 ID에 역할을 할당하여 개발자 센터 또는 프로젝트에서 구독에 환경 유형을 만들고 카탈로그 리포지토리가 포함된 Azure Repos 프로젝트를 읽을 수 있도록 합니다.

개발자 센터 또는 프로젝트에 MSI가 연결되어 있지 않은 경우 관리 ID 구성의 단계에 따라 관리 ID를 만들고 관리 ID에 대한 역할을 할당합니다.

관리 ID에 대한 자세한 내용은 Azure 리소스에 대한 관리 ID란?을 참조하세요.

카탈로그 추가

Azure Repos 리포지토리 또는 GitHub 리포지토리에서 카탈로그를 추가할 수 있습니다. MSI에 권한을 할당하거나 키 자격 증명 모음에 저장하는 PAT를 사용하여 인증하도록 선택할 수 있습니다.

사용하려는 리포지토리 및 인증 유형에 대한 탭을 선택합니다.

카탈로그를 추가하려면 다음 작업을 완료합니다.

  • 관리 ID에 대해 Azure Repos에서 권한을 할당합니다.
  • 리포지토리를 카탈로그로 추가합니다.

관리 ID에 대해 Azure Repos에서 권한 할당

Azure Repos의 리포지토리에 관리 ID 권한을 부여해야 합니다.

  1. Azure DevOps 조직에 로그인합니다.

    참고 항목

    Azure DevOps 조직은 개발자 센터 또는 프로젝트가 포함된 Azure 구독과 동일한 디렉터리에 있어야 합니다.

  2. 조직 설정을 선택합니다.

    조직 설정이 강조 표시된 Azure DevOps 조직 페이지를 보여 주는 스크린샷.

  3. 개요 페이지에서 사용자를 선택합니다.

    사용자가 강조 표시된 조직 개요 페이지를 보여 주는 스크린샷

  4. 사용자 페이지에서 사용자 추가를 선택합니다.

    사용자 추가가 강조 표시된 사용자 페이지를 보여 주는 스크린샷.

  5. 다음 정보를 입력하거나 선택하여 새 사용자 추가를 완료한 다음, 추가를 선택합니다.

    속성
    사용자 또는 서비스 주체 개발자 센터 또는 프로젝트의 이름을 입력합니다.
    시스템 할당 MSI를 사용하는 경우 관리되는 계정의 개체 ID가 아닌 개발자 센터 또는 프로젝트의 이름을 지정합니다. 사용자 할당 MSI를 사용하는 경우 관리되는 계정의 이름을 사용합니다.
    액세스 수준 기본을 선택합니다.
    프로젝트에 추가 리포지토리가 포함된 프로젝트를 선택합니다.
    Azure DevOps 그룹 프로젝트 Readers를 선택합니다.
    이메일 초대 보내기(사용자에게만) 확인란의 선택을 취소합니다.

    항목 예와 추가가 강조 표시된 사용자 추가를 보여 주는 스크린샷.

리포지토리를 카탈로그로 추가

Azure Deployment Environments는 Azure Repos 리포지토리 및 GitHub 리포지토리 연결을 지원합니다. 큐레이팅된 IaC 템플릿 세트를 리포지토리에 저장할 수 있습니다. 리포지토리를 개발자 센터 또는 프로젝트에 카탈로그로 연결하면 개발 팀이 템플릿에 액세스할 수 있으며 일관된 환경을 빠르게 만들 수 있습니다.

다음 단계를 통해 Azure Repos 리포지토리를 연결할 수 있습니다.

  1. Azure Portal에서 개발자 센터 또는 프로젝트로 이동합니다.

  2. 환경 구성 아래 왼쪽 메뉴에서 카탈로그를 선택한 다음 추가를 선택합니다.

    카탈로그 창을 보여주는 스크린샷.

  3. 카탈로그 추가에서 다음 정보를 입력한 다음 추가를 선택합니다.

    필드
    이름 카탈로그 이름을 입력합니다.
    카탈로그 위치 Azure DevOps를 선택합니다.
    인증 유형 관리 ID를 선택합니다.
    조직 Azure DevOps 조직을 선택합니다.
    프로젝트 프로젝트 목록에서 리포지토리를 저장하는 프로젝트를 선택합니다.
    리포지토리 리포지토리 목록에서 추가할 리포지토리를 선택합니다.
    Branch 분기를 선택합니다.
    폴더 경로 Dev Box는 분기의 폴더 목록을 검색합니다. IaC 템플릿을 저장하는 폴더를 선택합니다.

    항목 예와 추가가 강조 표시된 카탈로그 추가 창을 보여 주는 스크린샷.

  4. 개발자 센터 또는 프로젝트의 카탈로그에서 카탈로그가 표시되는지 확인합니다. 연결이 성공하면 상태동기화 성공으로 표시됩니다. 카탈로그에 처음 연결하는 데 몇 분 정도 걸릴 수 있습니다.

동기화된 카탈로그 항목 보기

사용하는 리포지토리 유형에 관계없이 카탈로그에서 동기화된 카탈로그 항목을 볼 수 있습니다.

  1. 개발자 센터 또는 프로젝트 왼쪽 메뉴의 환경 구성에서 카탈로그를 선택합니다.

  2. 카탈로그 창에서 카탈로그 이름을 선택합니다.

    연결된 카탈로그 이름이 강조 표시된 카탈로그 창을 보여 주는 스크린샷

  3. 성공적으로 동기화된 카탈로그 항목 목록이 표시됩니다.

    연결된 카탈로그에서성공적으로 동기화된 카탈로그 항목을 보여 주는 스크린샷

카탈로그 업데이트

연결된 리포지토리에서 정의 또는 템플릿 콘텐츠를 업데이트하는 경우 카탈로그를 동기화하여 개발 팀에 최신 환경 정의 세트를 제공할 수 있습니다. 카탈로그를 수동으로 또는 자동으로 동기화할 수 있습니다.

카탈로그 수동 동기화

카탈로그를 수동으로 동기화하는 경우 Deployment Environments는 리포지토리를 검색하고 개발자 센터의 모든 관련 프로젝트에서 최신 환경 정의 목록을 사용할 수 있도록 합니다.

  1. 개발자 센터 왼쪽 메뉴의 환경 구성에서 카탈로그를 선택합니다.

  2. 특정 카탈로그를 선택한 다음, 명령 모음에서 동기화를 선택합니다.

    명령 모음의 동기화 단추를 보여 주는 스크린샷

카탈로그 자동 동기화

카탈로그를 자동으로 동기화하도록 구성하는 경우 Deployment Environments는 30분 간격으로 리포지토리를 검색하고 개발자 센터의 모든 관련 프로젝트에서 최신 환경 정의 목록을 사용할 수 있도록 합니다.

  1. 개발자 센터 또는 프로젝트 왼쪽 메뉴의 환경 구성에서 카탈로그를 선택합니다.

  2. 특정 카탈로그를 선택한 다음, 편집을 선택합니다.

    카탈로그에 대한 편집 단추를 보여 주는 스크린샷

  3. 카탈로그 편집 창에서 이 카탈로그 자동 동기화를 선택한 다음, 저장을 선택합니다.

    이 카탈로그를 자동으로 동기화하는 카탈로그의 세부 정보 편집 창이 강조 표시된 스크린샷

카탈로그 삭제

카탈로그를 삭제하여 Azure Deployment Environments 개발자 센터 또는 프로젝트에서 제거할 수 있습니다. 삭제된 카탈로그의 템플릿은 개발 팀이 새 환경을 배포할 때 사용할 수 없습니다. 삭제된 카탈로그의 환경 정의를 사용하여 만든 기존 환경에 대한 환경 정의 참조를 업데이트합니다. 참조가 업데이트되지 않고 환경이 재배포되면 배포가 실패합니다.

카탈로그를 삭제하려면 다음을 수행합니다.

  1. 개발자 센터 또는 프로젝트 왼쪽 메뉴의 환경 구성에서 카탈로그를 선택합니다.

  2. 특정 카탈로그를 선택한 다음 삭제를 선택합니다.

  3. 카탈로그 삭제 대화 상자에서 계속을 선택하여 카탈로그를 삭제합니다.

카탈로그 동기화 오류 해결

카탈로그를 추가하거나 동기화할 때 동기화 오류 또는 경고가 발생할 수 있습니다. 동기화 오류는 카탈로그가 성공적으로 동기화되지 못했음을 나타냅니다. 동기화 경고는 카탈로그 항목의 일부 또는 전체에 오류가 있음을 나타냅니다. Azure Portal에서 동기화 상태 및 오류를 보거나 Azure CLI 및 REST API를 사용하여 오류를 처리하고 해결할 수 있습니다.

카탈로그 동기화 상태 보기

Azure Portal에서 상태 링크를 선택하여 카탈로그 동기화 상태 및 경고 또는 오류에 대한 자세한 정보를 얻을 수 있습니다. 상태 링크는 동기화 상태, 추가된 환경 정의 수 및 무시되거나 실패한 환경 정의 수를 보여 주는 창을 엽니다.

카탈로그 동기화 실패 보기

  1. 개발자 센터 또는 프로젝트 왼쪽 메뉴의 환경 구성에서 카탈로그를 선택합니다.

  2. 상태 열에서 동기화에 실패한 카탈로그의 상태 링크를 선택합니다.

    동기화 실패가 강조 표시된 카탈로그 창을 보여 주는 스크린샷

  3. 마지막 동기화의 변경 내용, 동기화 오류 수 및 오류 유형을 보여 주는 세부 정보 창이 표시됩니다.

    카탈로그 동기화 실패 창을 보여 주는 스크린샷

카탈로그 동기화 경고 보기

  1. 개발자 센터 또는 프로젝트 왼쪽 메뉴의 환경 구성에서 카탈로그를 선택합니다.

  2. 상태 열에서 동기화되었지만 경고를 보고하는 카탈로그의 상태 링크를 선택합니다.

    3개 항목의 오류가 강조 표시된 카탈로그 창을 보여 주는 스크린샷

  3. 마지막 동기화의 변경 내용, 항목 오류 수 및 각 오류의 유형 및 원본을 보여 주는 세부 정보 창이 표시됩니다.

    카탈로그 동기화 오류 창을 보여 주는 스크린샷

  4. 동기화 오류도 보고하는 카탈로그에서 성공적으로 동기화된 항목을 볼 수 있습니다. 카탈로그 창에서 카탈로그 이름을 선택합니다.

    카탈로그 이름이 강조 표시된 카탈로그 창을 보여 주는 스크린샷

  5. 성공적으로 동기화된 카탈로그 항목 목록이 표시됩니다.

    성공적으로 동기화된 카탈로그 항목을 보여 주는 스크린샷

Azure CLI를 사용하여 카탈로그 동기화 오류 문제 해결

Azure CLI 또는 REST API를 사용하여 카탈로그를 가져옵니다. GET 응답은 다음과 같은 오류 형식을 보여 줍니다.

  • 중복된 것으로 검색된 환경 정의를 무시했습니다.
  • 스키마, 참조 또는 유효성 검사 오류로 인해 실패한 잘못된 환경 정의입니다.

무시된 환경 정의 오류 해결

이름이 같은 두 개 이상의 환경 정의를 추가하면 무시된 환경 정의 오류가 발생합니다. 각 환경 정의가 카탈로그 내에서 고유한 이름을 가지도록 환경 정의의 이름을 변경하여 이 문제를 해결할 수 있습니다.

잘못된 환경 정의 오류 해결

다음과 같은 다양한 이유로 잘못된 환경 정의 오류가 발생할 수 있습니다.

  • 매니페스트 스키마 오류. 환경 정의 환경 파일이 필요한 스키마와 일치하는지 확인합니다.

  • 확인 오류. 유효성 검사 오류를 해결하려면 다음 항목의 유효성을 검사합니다.

    • 환경 파일의 엔진 형식이 올바르게 구성되었는지 확인합니다.
    • 환경 정의 이름이 3자에서 63자 사이여야 합니다.
    • 환경 정의 이름에 URL에 유효한 문자(영숫자 문자 및 ~!,.';:=-_+()*&$@ 기호)만 포함되어 있는지 확인합니다.
  • 참조 오류. 환경 파일에서 참조하는 템플릿 경로가 리포지토리의 파일에 대한 유효한 상대 경로인지 확인합니다.