이 문서에서는 Azure Deployment Environments 개발자 센터 또는 프로젝트에서 카탈로그를 추가하고 구성하는 방법을 설명합니다.
카탈로그를 사용하면 개발 팀이 환경을 만들 수 있도록 환경 정의라고도 하는 큐레이팅된 IaC(Infrastructure-as-Code) 템플릿 세트를 제공할 수 있습니다. GitHub 또는 Azure Repos에서 사용자 고유의 소스 제어 리포지토리를 카탈로그로 연결하고 환경 정의를 사용하여 폴더를 지정할 수 있습니다. 배포 환경은 폴더에서 환경 정의를 검색하고 개발 팀이 환경을 만들 수 있도록 합니다.
템플릿의 보안을 강화하기 위해 카탈로그가 암호화됩니다. Azure Deployment Environments는 Microsoft for Azure Services가 관리하는 플랫폼 관리형 암호화 키를 사용하여 미사용 데이터 암호화를 지원합니다.
프로젝트 수준에서 카탈로그를 연결하면 플랫폼 엔지니어가 개발 팀과 관련된 큐레이팅된 환경 정의를 제공할 수 있습니다. 또한 프로젝트 관리자로 할당된 개발 팀 리더가 팀에서 사용할 수 있는 환경 정의를 관리할 수 있습니다.
플랫폼 엔지니어는 프로젝트 수준에서 카탈로그 사용을 완전히 제어할 수 있습니다. 프로젝트에 카탈로그를 추가하려면 먼저 개발자 센터 수준에서 프로젝트 수준 카탈로그를 사용하도록 설정해야 합니다. 플랫폼 엔지니어는 프로젝트 수준에서 사용할 수 있는 카탈로그 항목 유형(예: 환경 정의)을 구성할 수도 있습니다.
기본적으로 프로젝트 수준에서는 카탈로그가 사용하지 않도록 설정되며 카탈로그 항목 형식도 사용하도록 설정되지 않습니다. 프로젝트 수준 카탈로그의 환경 정의는 두 가지 조건에서 동기화되고 사용할 수 있습니다. 먼저 해당 개발 센터 수준에서 프로젝트 기반 카탈로그를 사용하도록 설정해야 합니다. 둘째, 프로젝트에 대한 환경 정의를 사용하도록 설정해야 합니다.
프로젝트에 카탈로그 추가
프로젝트에 카탈로그를 추가하려면 먼저 개발자 센터 수준에서 프로젝트 수준 카탈로그를 사용하도록 설정해야 합니다. 또한 프로젝트 수준에서 환경 정의를 사용하도록 설정해야 합니다.
카탈로그 항목 설정 창에서 Azure 배포 환경 정의를 선택하여 프로젝트 수준에서 환경 정의를 사용할 수 있도록 합니다.
이제 프로젝트에 카탈로그를 추가할 수 있습니다.
인증에 관리 ID 또는 PAT(개인용 액세스 토큰)를 사용하는 카탈로그의 경우 프로젝트에 관리 ID를 할당해야 합니다. PAT를 사용하는 카탈로그의 경우 키 자격 증명 모음에 PAT를 저장하고 관리 ID에 키 자격 증명 모음 비밀에 대한 액세스 권한을 부여해야 합니다.
관리 ID 구성
개발자 센터를 만든 후 카탈로그를 연결하기 전에 개발자 센터에 대한 MSI(관리되는 서비스 ID)라고도 하는 관리 ID를 구성해야 합니다. 시스템 할당 관리 ID(시스템 할당 MSI) 또는 사용자 할당 관리 ID(사용자 할당 MSI)를 연결할 수 있습니다. 그런 다음, 관리 ID에 역할을 할당하여 개발자 센터 또는 프로젝트에서 구독에 환경 유형을 만들고 카탈로그 리포지토리가 포함된 Azure Repos 프로젝트를 읽을 수 있도록 합니다.
개발자 센터 또는 프로젝트에 MSI가 연결되어 있지 않은 경우 관리 ID 구성의 단계에 따라 관리 ID를 만들고 관리 ID에 대한 역할을 할당합니다.
Azure DevOps 조직은 개발자 센터 또는 프로젝트가 포함된 Azure 구독과 동일한 디렉터리에 있어야 합니다.
조직 설정을 선택합니다.
개요 페이지에서 사용자를 선택합니다.
사용자 페이지에서 사용자 추가를 선택합니다.
다음 정보를 입력하거나 선택하여 새 사용자 추가를 완료한 다음, 추가를 선택합니다.
속성
값
사용자 또는 서비스 주체
개발자 센터 또는 프로젝트의 이름을 입력합니다. 시스템 할당 MSI를 사용하는 경우 관리되는 계정의 개체 ID가 아닌 개발자 센터 또는 프로젝트의 이름을 지정합니다. 사용자 할당 MSI를 사용하는 경우 관리되는 계정의 이름을 사용합니다.
액세스 수준
기본을 선택합니다.
프로젝트에 추가
리포지토리가 포함된 프로젝트를 선택합니다.
Azure DevOps 그룹
프로젝트 Readers를 선택합니다.
이메일 초대 보내기(사용자에게만)
확인란의 선택을 취소합니다.
리포지토리를 카탈로그로 추가
Azure Deployment Environments는 Azure Repos 리포지토리 및 GitHub 리포지토리 연결을 지원합니다. 큐레이팅된 IaC 템플릿 세트를 리포지토리에 저장할 수 있습니다. 리포지토리를 개발자 센터 또는 프로젝트에 카탈로그로 연결하면 개발 팀이 템플릿에 액세스할 수 있으며 일관된 환경을 빠르게 만들 수 있습니다.
리포지토리에 대한 Azure 액세스 권한을 부여하는 데 사용되는 PAT를 저장하려면 Azure Key Vault가 필요합니다. 키 자격 증명 모음은 액세스 정책 또는 RBAC(역할 기반 액세스 제어)를 사용하여 액세스를 제어할 수 있습니다. 기존 키 자격 증명 모음이 있는 경우 사용할 수 있지만 액세스 정책 또는 RBAC 할당을 사용하여 액세스를 제어하는지 확인해야 합니다. 키 자격 증명 모음에 대한 액세스 정책 구성에 대한 도움말은 Key Vault 액세스 정책 할당을 참조하세요.
리포지토리에 대한 PAT가 포함된 비밀 식별자를 입력합니다. 비밀 식별자를 복사하면 연결 문자열 끝에 다음 예와 같이 버전 식별자가 포함됩니다. https://contoso-kv.vault.azure.net/secrets/GitHub-repo-pat/9376b432b72441a1b9e795695708ea5a. 버전 식별자를 제거하면 배포 환경이 키 자격 증명 모음에서 최신 버전의 비밀을 가져옵니다. PAT가 만료되면 키 자격 증명 모음만 업데이트해야 합니다. 비밀 식별자 예:https://contoso-kv.vault.azure.net/secrets/GitHub-repo-pat
Azure Deployment Environments는 클래식 토큰 또는 세분화된 토큰을 사용하여 GitHub 리포지토리에 대한 인증을 지원합니다. 이 예제에서는 세분화된 토큰을 만듭니다.
템플릿 정의가 포함된 GitHub 리포지토리의 홈페이지로 이동합니다.
GitHub의 오른쪽 위에서 프로필 이미지를 선택한 다음 설정을 선택합니다.
왼쪽 사이드바에서 개발자 설정>개인용 액세스 토큰>세분화된 토큰을 선택합니다.
Generate new token(새 토큰 생성)을 탭합니다.
새 세분화된 개인용 액세스 토큰 페이지에서 다음 정보를 제공합니다.
속성
값
토큰 이름
토큰의 설명이 포함된 이름을 입력합니다.
만료
토큰 만료 기간(일)을 선택합니다.
설명
토큰에 대한 설명을 입력합니다.
리소스 소유자
리포지토리의 소유자를 선택합니다.
리포지토리 액세스
리포지토리만 선택을 선택합니다.
리포지토리 선택
환경 정의가 포함된 리포지토리를 선택합니다.
리포지토리 권한
리포지토리 권한을 확장하고 콘텐츠에 대해 Access 목록에서 코드 읽기를 선택합니다.
토큰 생성을 선택합니다.
나중에 사용할 수 있도록 생성된 토큰을 복사하고 저장합니다.
Important
GitHub 조직 내에 저장된 프라이빗 리포지토리를 사용하는 경우 GitHub PAT가 올바른 조직 및 해당 조직 내의 리포지토리에 대한 액세스 권한을 부여하도록 구성되어 있는지 확인해야 합니다.
조직 내의 클래식 토큰은 생성된 후 특정 조직에 SSO 권한이 부여되어야 합니다.
세분화된 토큰에는 조직 자체에 권한을 부여할 토큰 집합의 소유자가 있어야 합니다.
잘못 구성된 PAT로 인해 리포지토리를 찾을 수 없음 오류가 발생할 수 있습니다.
주요 자격 증명 모음 만들기
리포지토리에 Azure 액세스 권한을 부여하는 데 사용되는 PAT를 저장하려면 Azure Key Vault가 필요합니다. 키 자격 증명 모음은 액세스 정책 또는 RBAC(역할 기반 액세스 제어)를 사용하여 액세스를 제어할 수 있습니다. 기존 키 자격 증명 모음이 있는 경우 사용할 수 있지만 액세스 정책 또는 RBAC 할당을 사용하여 액세스를 제어하는지 확인해야 합니다. 키 자격 증명 모음에 대한 액세스 정책 구성에 대한 도움말은 키 자격 증명 모음 액세스 정책 할당을 참조하세요.
GitHub 리포지토리 또는 Azure Repos 리포지토리에 대한 복제 URL을 입력하거나 붙여넣습니다. 샘플 카탈로그 예:https://github.com/Azure/deployment-environments.git
Branch
연결할 리포지토리 분기를 입력합니다. 샘플 카탈로그 예:main
폴더 경로
환경 정의를 포함하는 하위 폴더가 포함된 복제 URI와 관련된 폴더 경로를 입력합니다. 폴더 경로는 환경 정의 환경 파일 자체가 있는 폴더가 아니라 환경 정의 환경 파일을 포함하는 하위 폴더가 있는 폴더에 대한 것입니다. 다음 이미지는 샘플 카탈로그 폴더 구조를 보여줍니다. 샘플 카탈로그 예:/Environments 폴더 경로는 슬래시(/)를 사용하거나 사용하지 않고 시작할 수 있습니다.
비밀 식별자
리포지토리에 대한 PAT가 포함된 비밀 식별자를 입력합니다. 비밀 식별자를 복사하면 연결 문자열 끝에 다음 예와 같이 버전 식별자가 포함됩니다. https://contoso-kv.vault.azure.net/secrets/GitHub-repo-pat/9376b432b72441a1b9e795695708ea5a. 버전 식별자를 제거하면 Deployment Environments가 키 자격 증명 모음에서 최신 버전의 비밀을 가져옵니다. PAT가 만료되면 키 자격 증명 모음만 업데이트해야 합니다. 비밀 식별자 예:https://contoso-kv.vault.azure.net/secrets/GitHub-repo-pat
카탈로그에서 카탈로그가 표시되는지 확인합니다. 연결이 성공하면 상태가 동기화 성공으로 표시됩니다.
동기화된 카탈로그 항목 보기
사용하는 리포지토리 유형에 관계없이 카탈로그에서 동기화된 카탈로그 항목을 볼 수 있습니다.
개발자 센터 또는 프로젝트 왼쪽 메뉴의 환경 구성에서 카탈로그를 선택합니다.
카탈로그 창에서 카탈로그 이름을 선택합니다.
성공적으로 동기화된 카탈로그 항목 목록이 표시됩니다.
카탈로그 업데이트
연결된 리포지토리에서 정의 또는 템플릿 콘텐츠를 업데이트하는 경우 카탈로그를 동기화하여 개발 팀에 최신 환경 정의 세트를 제공할 수 있습니다. 카탈로그를 수동으로 또는 자동으로 동기화할 수 있습니다.
카탈로그 수동 동기화
카탈로그를 수동으로 동기화하는 경우 Deployment Environments는 리포지토리를 검색하고 개발자 센터의 모든 관련 프로젝트에서 최신 환경 정의 목록을 사용할 수 있도록 합니다.
개발자 센터 왼쪽 메뉴의 환경 구성에서 카탈로그를 선택합니다.
특정 카탈로그를 선택한 다음, 명령 모음에서 동기화를 선택합니다.
카탈로그 자동 동기화
카탈로그를 자동으로 동기화하도록 구성하는 경우 Deployment Environments는 30분 간격으로 리포지토리를 검색하고 개발자 센터의 모든 관련 프로젝트에서 최신 환경 정의 목록을 사용할 수 있도록 합니다.
개발자 센터 또는 프로젝트 왼쪽 메뉴의 환경 구성에서 카탈로그를 선택합니다.
특정 카탈로그를 선택한 다음, 편집을 선택합니다.
카탈로그 편집 창에서 이 카탈로그 자동 동기화를 선택한 다음, 저장을 선택합니다.
자동 동기화가 실패하면 수동 동기화를 수행해야 합니다. 배포 환경은 수동 동기화가 성공할 때까지 더 이상 자동 동기화를 시도하지 않습니다.
카탈로그 삭제
카탈로그를 삭제하여 Azure Deployment Environments 개발자 센터 또는 프로젝트에서 제거할 수 있습니다. 삭제된 카탈로그의 템플릿은 개발 팀이 새 환경을 배포할 때 사용할 수 없습니다. 삭제된 카탈로그의 환경 정의를 사용하여 만든 기존 환경에 대한 환경 정의 참조를 업데이트합니다. 참조가 업데이트되지 않고 환경이 재배포되면 배포가 실패합니다.
카탈로그를 삭제하려면 다음을 수행합니다.
개발자 센터 또는 프로젝트 왼쪽 메뉴의 환경 구성에서 카탈로그를 선택합니다.
특정 카탈로그를 선택한 다음 삭제를 선택합니다.
카탈로그 삭제 대화 상자에서 계속을 선택하여 카탈로그를 삭제합니다.
카탈로그 동기화 오류 해결
카탈로그를 추가하거나 동기화할 때 동기화 오류 또는 경고가 발생할 수 있습니다. 동기화 오류는 카탈로그가 성공적으로 동기화되지 못했음을 나타냅니다. 동기화 경고는 카탈로그 항목의 일부 또는 전체에 오류가 있음을 나타냅니다. Azure Portal에서 동기화 상태 및 오류를 보거나 Azure CLI 및 REST API를 사용하여 오류를 처리하고 해결할 수 있습니다.
카탈로그 동기화 상태 보기
Azure Portal에서 상태 링크를 선택하여 카탈로그 동기화 상태 및 경고 또는 오류에 대한 자세한 정보를 얻을 수 있습니다. 상태 링크는 동기화 상태, 추가된 환경 정의 수 및 무시되거나 실패한 환경 정의 수를 보여 주는 창을 엽니다.
카탈로그 동기화 실패 보기
개발자 센터 또는 프로젝트 왼쪽 메뉴의 환경 구성에서 카탈로그를 선택합니다.
상태 열에서 동기화에 실패한 카탈로그의 상태 링크를 선택합니다.
마지막 동기화의 변경 내용, 동기화 오류 수 및 오류 유형을 보여 주는 세부 정보 창이 표시됩니다.
카탈로그 동기화 경고 보기
개발자 센터 또는 프로젝트 왼쪽 메뉴의 환경 구성에서 카탈로그를 선택합니다.
상태 열에서 동기화되었지만 경고를 보고하는 카탈로그의 상태 링크를 선택합니다.
마지막 동기화의 변경 내용, 항목 오류 수 및 각 오류의 유형 및 원본을 보여 주는 세부 정보 창이 표시됩니다.
동기화 오류도 보고하는 카탈로그에서 성공적으로 동기화된 항목을 볼 수 있습니다. 카탈로그 창에서 카탈로그 이름을 선택합니다.
성공적으로 동기화된 카탈로그 항목 목록이 표시됩니다.
Azure CLI를 사용하여 카탈로그 동기화 오류 문제 해결
Azure CLI 또는 REST API를 사용하여 카탈로그를 가져옵니다. GET 응답은 다음과 같은 오류 형식을 보여 줍니다.
중복된 것으로 검색된 환경 정의를 무시했습니다.
스키마, 참조 또는 유효성 검사 오류로 인해 실패한 잘못된 환경 정의입니다.
무시된 환경 정의 오류 해결
이름이 같은 두 개 이상의 환경 정의를 추가하면 무시된 환경 정의 오류가 발생합니다. 각 환경 정의가 카탈로그 내에서 고유한 이름을 가지도록 환경 정의의 이름을 변경하여 이 문제를 해결할 수 있습니다.