다음을 통해 공유


자습서: Azure 앱 Service에서 사용자 지정 컨테이너에 대한 사이드카 컨테이너 구성

이 자습서에서는 OpenTelemetry 수집기를 사이드카 컨테이너로 Azure 앱 Service의 Linux 사용자 지정 컨테이너 앱에 추가합니다. Bring-your-own-code Linux 앱의 경우 자습서: Azure 앱 Service에서 Linux 앱용 사이드카 컨테이너 구성을 참조하세요.

Azure 앱 서비스에서는 사이드카 사용 사용자 지정 컨테이너 앱마다 최대 9개의 사이드카 컨테이너를 추가할 수 있습니다. 사이드카 컨테이너를 사용하면 기본 애플리케이션 컨테이너에 긴밀하게 결합하지 않고 컨테이너 애플리케이션에 추가 서비스 및 기능을 배포할 수 있습니다. 예를 들어 모니터링, 로깅, 구성 및 네트워킹 서비스를 사이드카 컨테이너로 추가할 수 있습니다. OpenTelemetry 수집기 사이드카는 이러한 모니터링 예제 중 하나입니다.

App Service의 측면 컨테이너에 대한 자세한 내용은 다음을 참조하세요.

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

1. 필요한 리소스 설정

먼저 자습서에서 사용하는 리소스를 만듭니다. 이 특정 시나리오에 사용되며 일반적으로 사이드카 컨테이너에는 필요하지 않습니다.

  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
    
  2. 메시지가 표시되면 원하는 구독 및 지역을 제공합니다. 예시:

    • 구독: 사용자 구독.
    • 지역: (유럽) 서유럽.

    배포가 완료되면 다음 출력이 표시됩니다.

     APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=...
    
     Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/.../resourceGroups/...
     
  3. 브라우저 탭에서 리소스 그룹 링크를 엽니다. 나중에 연결 문자열을 사용해야 합니다.

    참고 항목

    azd provision(이)가 포함된 템플릿을 사용하여 다음 Azure 리소스를 만듭니다.

2. 사이드카 사용 앱 만들기

  1. 리소스 그룹의 관리 페이지에서 만들기를 선택합니다.

  2. 웹앱을 검색한 다음 만들기 아래쪽 화살표를 선택하고 Web App을 선택합니다.

    웹앱을 검색하고 클릭할 웹앱 만들기 단추가 있는 Azure Marketplace 페이지를 보여 주는 스크린샷

  3. 다음과 같이 기본 패널을 구성합니다.

    • 이름: 고유 이름
    • 게시: 컨테이너
    • 운영 체제: Linux
    • 지역: azd provision사용하여 선택한 지역과 동일한 지역
    • Linux 계획: 새 App Service 요금제

    강조 표시된 Linux 사용자 지정 컨테이너 앱에 대한 웹앱 만들기 마법사 및 설정을 보여 주는 스크린샷

  4. 컨테이너를 선택합니다. 다음과 같이 컨테이너 패널을 구성합니다.

    • 사이드카 지원: 사용
    • 이미지 원본: Azure Container Registry
    • 레지스트리: azd provision에 의해 만들어진 레지스트리
    • 이미지: nginx
    • 태그: 최신
    • 포트: 80

    웹앱 만들기 마법사와 컨테이너 이미지 및 사이드카 지원에 대한 설정이 강조 표시된 스크린샷

    참고 항목

    이러한 설정은 사이드카 사용 앱에서 다르게 구성됩니다. 자세한 내용은 사이드카 사용 앱 차이점을 참조하세요.

  5. 검토 + 생성를 선택한 다음, 생성를 선택합니다.

  6. 배포가 완료되면 리소스로 이동을 선택합니다.

  7. 새 브라우저 탭에서 https://<app-name>.azurewebsites.net(으)로 이동하여 기본 Nginx 페이지를 확인합니다.

3. 사이드카 컨테이너 추가

이 섹션에서는 사용자 지정 컨테이너 앱에 사이드카 컨테이너를 추가합니다.

  1. 앱의 관리 페이지의 왼쪽 메뉴에서 배포 센터를 선택합니다.

    배포 센터에는 앱의 모든 컨테이너가 표시됩니다. 지금은 기본 컨테이너만 있습니다.

  2. 추가를 선택하고 다음과 같이 새 컨테이너를 구성합니다.

    • 이름: otel-collector
    • 이미지 원본: Azure Container Registry
    • 레지스트리: azd provision에 의해 만들어진 레지스트리
    • 이미지: otel-collector
    • 태그: 최신
  3. 적용을 선택합니다.

    웹앱의 배포 센터에서 사이드카 컨테이너를 구성하는 방법을 보여 주는 스크린샷

    이제 배포 센터에 두 개의 컨테이너가 표시됩니다. 주 컨테이너는 Main으로 표시되고 사이드카 컨테이너는 사이드카로 표시됩니다. 각 앱에는 하나의 기본 컨테이너가 있어야 하지만 여러 사이드카 컨테이너가 있을 수 있습니다.

4. 환경 변수 구성

샘플 시나리오의 경우 otel-collector 사이드카는 OpenTelemetry 데이터를 Azure Monitor로 내보내도록 구성되지만 연결 문자열을 환경 변수로 지정해야 합니다(otel-collector 이미지 대한 OpenTelemetry 구성 파일 참조).

앱 설정을 구성하여 App Service 앱과 같은 컨테이너에 대한 환경 변수를 구성합니다. 앱 설정은 앱의 모든 컨테이너에서 액세스할 수 있습니다.

  1. 앱의 관리 페이지의 왼쪽 메뉴에서 환경 변수를 선택합니다.

  2. 다음과 같이 추가 및 구성을 선택하여 앱 설정을 추가합니다.

    • 이름: APPLICATIONINSIGHTS_CONNECTION_STRING
    • : 출력의 azd provision연결 문자열. Cloud Shell 세션이 손실된 경우 Application Insight 리소스의 개요 페이지(연결 문자열)에서 찾을 수도 있습니다.
  3. 적용을 선택한 다음 적용한 다음 확인을 선택합니다.

    두 개의 앱 설정이 추가된 웹앱의 구성 페이지를 보여 주는 스크린샷

참고 항목

특정 앱 설정은 사이드카 사용 앱에 적용되지 않습니다. 자세한 내용은 사이드카 사용 앱 차이점을 참조하세요.

5. Application Insights에서 확인

이제 otel-collector 사이드카가 Application Insights로 데이터를 내보내야 합니다.

  1. https://<app-name>.azurewebsites.net 브라우저 탭으로 돌아가서 페이지를 몇 번 새로 고쳐 일부 웹 요청을 생성합니다.

  2. 리소스 그룹 개요 페이지로 돌아가서 Application Insights 리소스를 선택합니다. 이제 기본 차트에 일부 데이터가 표시됩니다.

    기본 차트의 데이터를 보여 주는 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_USERNAMEDOCKER_REGISTRY_SERVER_PASSWORD.
  • 컨테이너 포트: WEBSITES_PORT

추가 리소스