로컬로 원격 모니터링 솔루션 가속기 배포 - Docker
이 문서에서는 테스트 및 개발을 위해 원격 모니터링 솔루션 가속기를 로컬 컴퓨터에 배포하는 방법을 보여줍니다. 마이크로 서비스를 로컬 Docker 컨테이너에 배포하는 방법에 대해 알아봅니다. 로컬 마이크로 서비스 배포는 클라우드에서 IoT Hub, Cosmos DB, Azure Streaming Analytics 및 Azure Time Series Insights 서비스와 같은 클라우드 서비스를 사용합니다.
로컬 머신의 IDE에서 원격 모니터링 솔루션 가속기를 실행하려면 로컬로 원격 모니터링 솔루션 가속기 배포 - Visual Studio를 참조하세요.
사전 요구 사항
원격 모니터링 솔루션 가속기에 사용되는 Azure 서비스를 배포하려면 활성 Azure 구독이 필요합니다.
계정이 없는 경우 몇 분 만에 무료 평가판 계정을 만들 수 있습니다. 자세한 내용은 Azure 평가판을 참조하세요.
머신 설치
로컬 배포를 완료하기 위해 로컬 개발 컴퓨터에 설치되어 있어야 하는 도구는 다음과 같습니다.
- Git
- Docker
- Visual Studio - 마이크로 서비스를 변경하려는 경우
- Node.js v8 - 이 소프트웨어는 스크립트에서 Azure 리소스를 만드는 데 사용하는 PCS CLI에 대한 필수 구성 요소입니다. Node.js v10은 사용하지 마세요.
참고
이러한 도구는 Windows, Linux 및 iOS를 포함한 다양한 플랫폼에서 사용할 수 있습니다.
소스 코드 다운로드
원격 모니터링 소스 코드 리포지토리에는 마이크로 서비스 Docker 이미지를 실행하는 데 필요한 소스 코드 및 Docker 구성 파일이 포함되어 있습니다.
리포지토리의 로컬 버전을 복제하고 만들려면 명령줄 환경을 사용하여 로컬 머신의 적절한 폴더로 이동합니다. 그런 후, 다음 명령 세트 중 하나를 실행하여 NET 리포지토리를 복제합니다.
.NET 마이크로 서비스 구현의 최신 버전을 다운로드하려면 다음을 실행합니다.
git clone --recurse-submodules https://github.com/Azure/azure-iot-pcs-remote-monitoring-dotnet.git
# To retrieve the latest submodules, run the following command:
cd azure-iot-pcs-remote-monitoring-dotnet
git submodule foreach git pull origin master
참고
이러한 명령은 마이크로 서비스를 로컬로 실행하는 데 사용하는 스크립트 외에도 모든 마이크로 서비스에 대한 소스 코드를 다운로드합니다. Docker에서 마이크로 서비스를 실행하는 데는 소스 코드가 필요하지 않지만, 나중에 솔루션 가속기를 수정하고 변경 내용을 로컬로 테스트하려는 경우에는 소스 코드가 유용합니다.
Azure 서비스 배포
이 문서에서는 마이크로 서비스를 로컬로 실행하는 방법을 보여주지만 클라우드에서 실행되는 Azure 서비스를 사용합니다. 다음 스크립트를 사용하여 Azure 서비스를 배포합니다. 다음 스크립트 예제에서는 Windows 머신에서 .NET 리포지토리를 사용한다고 가정합니다. 다른 환경에서 작업하는 경우 경로, 파일 확장명 및 경로 구분 기호를 적절하게 조정합니다.
새 Azure 리소스 만들기
아직 필요한 Azure 리소스를 만들지 않은 경우 다음 단계를 수행합니다.
명령줄 환경에서 리포지토리의 복제된 복사본에 있는 \services\scripts\local\launch 폴더로 이동합니다.
다음 명령을 실행하여 pcs CLI 도구를 설치하고 Azure 계정에 로그인합니다.
npm install -g iot-solutions pcs login
start.cmd 스크립트를 실행합니다. 스크립트에서 다음 정보를 요구하는 메시지가 표시됩니다.
솔루션 이름
사용할 Azure 구독입니다.
사용할 Azure 데이터 센터의 위치
스크립트는 솔루션 이름을 사용하여 Azure에서 리소스 그룹을 만듭니다. 이 리소스 그룹에는 솔루션 가속기에서 사용하는 Azure 리소스가 포함됩니다. 해당 리소스가 더 이상 필요하지 않으면 이 리소스 그룹을 삭제할 수 있습니다.
또한 이 스크립트는 로컬 머신에 PCS 접두사가 있는 환경 변수 세트도 추가합니다. 이러한 환경 변수는 Azure Key Vault 리소스에서 읽을 수 있도록 원격 모니터링에 대한 세부 정보를 제공합니다. 이 Key Vault 리소스는 원격 모니터링에서 해당 구성 값을 읽는 위치입니다.
팁
스크립트가 완료되면 환경 변수도 홈 폴더>\.pcs\<solution name.env>라는< 파일에 저장됩니다. 나중에 솔루션 가속기 배포에 사용할 수 있습니다. docker-compose를 실행할 때 로컬 컴퓨터에 설정된 환경 변수는 services\scripts\local\.env 파일의 값을 재정의합니다.
명령줄 환경에서 나갑니다.
기존 Azure 리소스 사용
필요한 Azure 리소스를 이미 만든 경우 로컬 머신에 해당 환경 변수를 만듭니다. 다음에 대한 환경 변수를 설정합니다.
- PCS_KEYVAULT_NAME - Azure Key Vault 리소스의 이름
- PCS_AAD_APPID - AAD 애플리케이션 ID
- PCS_AAD_APPSECRET - AAD 애플리케이션 비밀
구성 값은 이 Azure Key Vault 리소스에서 읽습니다. 이러한 환경 변수는 배포에서 <홈 폴더>\.pcs\<solution name.env> 파일에 저장될 수 있습니다. 로컬 머신에 설정된 환경 변수는 docker-compose를 실행할 때 services\scripts\local\.env 파일의 값을 재정의합니다.
마이크로 서비스에 필요한 구성 중 일부는 초기 배포 시 생성된 Key Vault 인스턴스에 저장됩니다. keyvault의 해당 변수는 필요에 따라 수정해야 합니다.
Docker에서 마이크로 서비스 실행
start.cmd 스크립트에서 설정한 환경 변수에 액세스할 수 있는지 확인하려면 새 명령 프롬프트를 엽니다. Windows에서는 다음 명령을 실행하여 환경 변수가 설정되어 있는지 확인할 수 있습니다.
set PCS
이 명령은 start.cmd 스크립트에서 설정한 모든 환경 변수를 표시합니다.
Docker가 로컬 머신에서 실행되고 있는지 확인합니다.
참고
Docker가 Windows에서 실행되고 있는 경우 Linux 컨테이너를 실행해야 합니다.
로컬 Docker 컨테이너에서 실행되는 마이크로 서비스에서 Azure 클라우드 서비스에 액세스해야 합니다. 컨테이너 내부에서 인터넷 주소를 ping하려면 다음 명령을 사용하여 Docker 환경의 인터넷 연결을 테스트할 수 있습니다.
docker run --rm -ti library/alpine ping google.com
솔루션 가속기를 실행하려면 명령줄 환경에서 services\scripts\local 폴더로 이동하고 다음 명령을 실행합니다.
docker-compose up
참고
docker-compose up
을 실행하기 전에 Docker와 로컬 드라이브를 공유해야 합니다.
이 명령을 처음 실행하는 경우 Docker는 Docker 허브에서 마이크로 서비스 이미지를 다운로드하여 컨테이너를 로컬로 빌드합니다. 다음 실행에서 Docker는 컨테이너를 즉시 실행합니다.
팁
Microsoft는 종종 새로운 기능이 포함된 새 Docker 이미지를 게시합니다. 다음 명령 세트를 사용하여 최신 Docker 컨테이너를 가져오기 전에 로컬 Docker 컨테이너와 해당 이미지를 정리할 수 있습니다.
docker list
docker rm <list_of_containers>
docker rmi <list_of_images>
별도의 셸을 사용하여 컨테이너에서 로그를 볼 수 있습니다. 먼저 docker ps
명령을 사용하여 컨테이너 ID를 찾습니다. 그런 다음, docker logs {container-id} --tail 1000
을 사용하여 지정된 컨테이너에 대한 마지막 1,000개 항목을 봅니다.
Stream Analytics 작업 시작
다음 단계에 따라 Stream Analytics 작업을 시작합니다.
- Azure Portal로 이동합니다.
- 솔루션에 대해 만든 리소스 그룹으로 이동합니다. 리소스 그룹의 이름은 start.cmd 스크립트를 실행할 때 선택한 솔루션 이름입니다.
- 리소스 목록에서 Stream Analytics 작업을 클릭합니다.
- Stream Analytics 작업 개요 페이지에서 시작 단추를 클릭합니다. 그런 다음, 시작을 클릭하여 지금 작업을 시작합니다.
대시보드에 연결
원격 모니터링 솔루션 대시보드에 액세스하려면 브라우저에서 https://localhost:8080
으로 이동합니다. 이제 웹 UI와 로컬 마이크로 서비스를 사용할 수 있습니다.
정리
불필요한 요금을 방지하려면 테스트를 마친 후 Azure 구독에서 클라우드 서비스를 제거합니다. 서비스를 제거하려면 Azure Portal로 이동하여 start.cmd 스크립트에서 만든 리소스 그룹을 삭제합니다.
docker-compose down --rmi all
명령을 사용하여 Docker 이미지를 제거하고 로컬 컴퓨터의 공간을 확보합니다. 또한 GitHub에서 소스 코드를 복제할 때 만들어진 원격 모니터링 리포지토리의 로컬 복사본을 삭제할 수도 있습니다.
다음 단계
원격 모니터링 솔루션을 배포했으니, 다음 단계는 솔루션 대시보드의 기능을 탐색하는 것입니다.