자습서: Azure 앱 Service에서 사용자 지정 컨테이너에 대한 사이드카 컨테이너 구성
이 자습서에서는 OpenTelemetry 수집기를 사이드카 컨테이너로 Azure 앱 Service의 Linux 사용자 지정 컨테이너 앱에 추가합니다. Bring-your-own-code Linux 앱의 경우 자습서: Azure 앱 Service에서 Linux 앱용 사이드카 컨테이너 구성을 참조하세요.
Azure 앱 서비스에서는 사이드카 사용 사용자 지정 컨테이너 앱마다 최대 9개의 사이드카 컨테이너를 추가할 수 있습니다. 사이드카 컨테이너를 사용하면 기본 애플리케이션 컨테이너에 긴밀하게 결합하지 않고 컨테이너 애플리케이션에 추가 서비스 및 기능을 배포할 수 있습니다. 예를 들어 모니터링, 로깅, 구성 및 네트워킹 서비스를 사이드카 컨테이너로 추가할 수 있습니다. OpenTelemetry 수집기 사이드카는 이러한 모니터링 예제 중 하나입니다.
App Service의 측면 컨테이너에 대한 자세한 내용은 다음을 참조하세요.
Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.
1. 필요한 리소스 설정
먼저 자습서에서 사용하는 리소스를 만듭니다. 이 특정 시나리오에 사용되며 일반적으로 사이드카 컨테이너에는 필요하지 않습니다.
Azure Cloud Shell에서 다음 명령을 실행합니다.
git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs cd app-service-sidecar-tutorial-prereqs azd env new my-sidecar-env azd provision
메시지가 표시되면 원하는 구독 및 지역을 제공합니다. 예시:
- 구독: 사용자 구독.
- 지역: (유럽) 서유럽.
배포가 완료되면 다음 출력이 표시됩니다.
APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=... Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/.../resourceGroups/...
브라우저 탭에서 리소스 그룹 링크를 엽니다. 나중에 연결 문자열을 사용해야 합니다.
참고 항목
azd provision
(이)가 포함된 템플릿을 사용하여 다음 Azure 리소스를 만듭니다.- my-sidecar-env_group라는 리소스 그룹입니다.
- 두 개의 이미지가 배포된 컨테이너 레지스트리.
- OpenTelemetry 모듈이 있는 Nginx 이미지입니다.
- Azure Monitor에 내보내도록 구성된 OpenTelemetry 수집기 이미지입니다.
- 로그 분석 작업 영역
- Application Insights 구성 요소
2. 사이드카 사용 앱 만들기
리소스 그룹의 관리 페이지에서 만들기를 선택합니다.
웹앱을 검색한 다음 만들기 아래쪽 화살표를 선택하고 Web App을 선택합니다.
다음과 같이 기본 패널을 구성합니다.
- 이름: 고유 이름
- 게시: 컨테이너
- 운영 체제: Linux
- 지역:
azd provision
사용하여 선택한 지역과 동일한 지역 - Linux 계획: 새 App Service 요금제
컨테이너를 선택합니다. 다음과 같이 컨테이너 패널을 구성합니다.
- 사이드카 지원: 사용
- 이미지 원본: Azure Container Registry
- 레지스트리:
azd provision
에 의해 만들어진 레지스트리 - 이미지: nginx
- 태그: 최신
- 포트: 80
참고 항목
이러한 설정은 사이드카 사용 앱에서 다르게 구성됩니다. 자세한 내용은 사이드카 사용 앱 차이점을 참조하세요.
검토 + 생성를 선택한 다음, 생성를 선택합니다.
배포가 완료되면 리소스로 이동을 선택합니다.
새 브라우저 탭에서
https://<app-name>.azurewebsites.net
(으)로 이동하여 기본 Nginx 페이지를 확인합니다.
3. 사이드카 컨테이너 추가
이 섹션에서는 사용자 지정 컨테이너 앱에 사이드카 컨테이너를 추가합니다.
앱의 관리 페이지의 왼쪽 메뉴에서 배포 센터를 선택합니다.
배포 센터에는 앱의 모든 컨테이너가 표시됩니다. 지금은 기본 컨테이너만 있습니다.
추가를 선택하고 다음과 같이 새 컨테이너를 구성합니다.
- 이름: otel-collector
- 이미지 원본: Azure Container Registry
- 레지스트리:
azd provision
에 의해 만들어진 레지스트리 - 이미지: otel-collector
- 태그: 최신
적용을 선택합니다.
이제 배포 센터에 두 개의 컨테이너가 표시됩니다. 주 컨테이너는 Main으로 표시되고 사이드카 컨테이너는 사이드카로 표시됩니다. 각 앱에는 하나의 기본 컨테이너가 있어야 하지만 여러 사이드카 컨테이너가 있을 수 있습니다.
4. 환경 변수 구성
샘플 시나리오의 경우 otel-collector 사이드카는 OpenTelemetry 데이터를 Azure Monitor로 내보내도록 구성되지만 연결 문자열을 환경 변수로 지정해야 합니다(otel-collector 이미지 대한 OpenTelemetry 구성 파일 참조).
앱 설정을 구성하여 App Service 앱과 같은 컨테이너에 대한 환경 변수를 구성합니다. 앱 설정은 앱의 모든 컨테이너에서 액세스할 수 있습니다.
앱의 관리 페이지의 왼쪽 메뉴에서 환경 변수를 선택합니다.
다음과 같이 추가 및 구성을 선택하여 앱 설정을 추가합니다.
- 이름: APPLICATIONINSIGHTS_CONNECTION_STRING
- 값: 출력의
azd provision
연결 문자열. Cloud Shell 세션이 손실된 경우 Application Insight 리소스의 개요 페이지(연결 문자열)에서 찾을 수도 있습니다.
적용을 선택한 다음 적용한 다음 확인을 선택합니다.
참고 항목
특정 앱 설정은 사이드카 사용 앱에 적용되지 않습니다. 자세한 내용은 사이드카 사용 앱 차이점을 참조하세요.
5. Application Insights에서 확인
이제 otel-collector 사이드카가 Application Insights로 데이터를 내보내야 합니다.
https://<app-name>.azurewebsites.net
브라우저 탭으로 돌아가서 페이지를 몇 번 새로 고쳐 일부 웹 요청을 생성합니다.리소스 그룹 개요 페이지로 돌아가서 Application Insights 리소스를 선택합니다. 이제 기본 차트에 일부 데이터가 표시됩니다.
참고 항목
이 매우 일반적인 모니터링 시나리오에서 Application Insights는 Jaeger, Prometheus 및 Zipkin과 같이 사용할 수 있는 OpenTelemetry 대상 중 하나일 뿐입니다.
리소스 정리
환경이 더 이상 필요하지 않은 경우 리소스 그룹, App Service 및 모든 관련 리소스를 삭제할 수 있습니다. 복제된 리포지토리의 Cloud Shell에서 이 명령을 실행하기만 하면됩니다.
azd down
사이드카 컨테이너는 내부 통신을 어떻게 처리합니까?
사이드카 컨테이너는 주 컨테이너와 동일한 네트워크 호스트를 공유하므로 주 컨테이너(및 기타 사이드카 컨테이너)는 사이드카 localhost:<port>
의 모든 포트에 연결할 수 있습니다. Nginx 컨테이너가 사이드카에 데이터를 보내는 방식입니다(샘플 Nginx 이미지에 대한 OpenTelemetry 모듈 구성 참조).
컨테이너 편집 대화 상자에서 포트 상자는 현재 App Service에서 사용되지 않습니다. 사이드카가 수신 대기하는 포트를 나타내는 등 사이드카 메타데이터의 일부로 사용할 수 있습니다.
사이드카 사용 앱의 차이점
사이드카 사용 앱을 사이드카를 사용하지 않는 앱과 다르게 구성합니다. 특히 앱 설정을 사용하여 기본 컨테이너 및 사이드카를 구성하지 않고 리소스 속성에서 직접 구성합니다. 사이드카 사용 앱에는 이러한 앱 설정이 적용되지 않습니다.
- 레지스트리 인증 설정:
DOCKER_REGISTRY_SERVER_URL
,DOCKER_REGISTRY_SERVER_USERNAME
및DOCKER_REGISTRY_SERVER_PASSWORD
. - 컨테이너 포트:
WEBSITES_PORT