Share via


예제를 이용해 Bridge to Kubernetes 사용

이 샘플에서는 Bridge to Kubernetes를 사용하여 Kubernetes 클러스터에서 간단한 TODO 애플리케이션의 마이크로 서비스 버전을 개발하는 방법을 보여 줍니다. Visual Studio Code를 사용하는 이 샘플은 TodoMVC에서 제공하는 코드를 수정한 것입니다. 이 예제에서는 MiniKube를 사용하여 애플리케이션을 호스트하지만 이러한 단계는 모든 Kubernetes 클러스터에 적용됩니다.

TODO 애플리케이션 샘플은 프런트 엔드와 영구 저장소를 제공하는 백 엔드로 구성됩니다. 이 확장 샘플에서는 통계 구성 요소를 추가하고 애플리케이션을 여러 마이크로 서비스로 분할합니다.

  • 프런트 엔드는 database-api를 호출하여 할 일 항목을 유지 및 업데이트합니다.
  • database-api 서비스는 Mongo 데이터베이스를 사용하여 할 일 항목을 유지합니다.
  • 프런트 엔드는 RabbitMQ 큐에 추가, 완료 및 삭제 이벤트를 씁니다.
  • 통계 작업자는 RabbitMQ 큐에서 이벤트를 수신하고 Redis 캐시를 업데이트합니다.
  • 통계 API는 프런트 엔드가 표시할 캐시된 통계를 노출합니다.

결국, 이 확장된 TODO 애플리케이션은 6개의 상호 관련된 구성 요소로 구성됩니다.

필수 구성 요소

  • 모든 Kubernetes 클러스터 또는 MiniKube를 설치할 Chocolatey 패키지 관리자
  • Windows 10의 경우 Hyper-V
  • 원하는 명령줄 환경에 있는 경로에 설치된 Kubectl
  • Bridge to Kubernetes Visual Studio Code 확장

MiniKube 설치

모든 Kubernetes 공급자를 Bridge to Kubernetes와 함께 사용할 수 있습니다. 이 문서에서는 MiniKube를 사용합니다. MiniKube는 로컬 컴퓨터에서 Kubernetes를 호스트하는 데 사용할 수 있는 가벼운 Kubernetes 공급자입니다. 설치 지침에 따라 Windows 10, Linux 또는 macOS에 MiniKube를 설치합니다.

Windows 10에서 최상의 결과를 얻으려면 Hyper-V VM 관리자를 사용하고 가상 스위치를 만들어야 합니다.

설치가 끝나면 MiniKube를 시작하고 Hyper-V를 사용하도록 지정한 다음 기본 가상 스위치의 이름을 입력합니다. 이 명령은 명령 프롬프트에서 관리자 권한으로 실행해야 합니다.

minikube start --vm-driver hyperv --hyperv-virtual-switch "Primary Virtual Switch"

애플리케이션 배포

Bridge to Kubernetes 리포지토리를 복제하고 todo-app을 현재 작업 폴더로 하여 명령 창을 엽니다.

샘플을 위한 네임스페이스를 만듭니다.

kubectl create namespace todo-app

그런 다음 배포 매니페스트를 적용합니다.

kubectl apply -n todo-app -f deployment.yaml

이는 LoadBalancer 유형의 서비스를 사용하여 프런트 엔드를 노출하는 간단한 배포입니다. 모든 Pod가 실행 중이고 frontend 서비스의 외부 IP를 사용할 수 있을 때까지 기다립니다.

MiniKube를 사용하여 테스트하는 경우에는 minikube tunnel을 사용하여 외부 IP를 확인해야 합니다.

kubectl get services -n todo-app

NAME          TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
frontend      LoadBalancer   10.0.49.177    127.0.0.1   80:30145/TCP   18h

외부 IP 및 로컬 포트(포트 열의 첫 번째 숫자)를 사용하여 애플리케이션으로 이동합니다.

http://{external-ip}:{local-port}

브라우저에서 실행 중인 애플리케이션을 테스트합니다. 할 일 항목을 추가, 완료 및 삭제하면 통계 페이지가 예상된 메트릭을 사용하여 업데이트됩니다.

stats-api 서비스 디버그

이제 Bridge to Kubernetes 확장을 사용하여 Kubernetes 클러스터의 트래픽을 stats-api의 로컬 실행 버전으로 리디렉션하는 방법을 보여줄 수 있습니다.

cd stats-api/

VS Code에서 stats-api용 소스 코드를 엽니다.

code .

VS Code가 시작되면 VS Code의 왼쪽 사이드바에서 Kubernetes 창을 열고 MiniKube 클러스터에서 todo-app 네임스페이스를 선택합니다. todo-app 노드를 마우스 오른쪽 단추로 클릭하고 네임스페이스 사용을 선택합니다.

네임스페이스 선택

터미널 창에서 npm install을 실행하여(CTRL + ~) 종속성을 설치합니다.

npm install

그럼 다음 server.js의 줄 17에 중단점을 배치합니다.

명령 팔레트를 열고(CTRL+SHIFT+P, Mac에서는 Cmd+Shift+P) Bridge to Kubernetes를 입력합니다. Bridge to Kubernetes: Configure 옵션을 선택합니다.

Bridge to Kubernetes: Configure 명령

교체할 서비스, 개발 컴퓨터에서 전달할 포트 및 사용할 시작 작업을 구성하라는 메시지가 표시됩니다.

stats-api 서비스를 선택합니다.

연결할 서비스 선택

서비스를 선택하면 로컬 애플리케이션의 TCP 포트를 입력하라는 메시지가 표시됩니다. 이 예에서는 3001을 입력합니다.

포트 번호 입력

Run Script: dev를 시작 작업으로 선택합니다.

디버거 시작 작업 선택

격리 실행 또는 비격리 실행 옵션을 선택할 수 있습니다. 격리 실행의 경우 사용자의 요청만 로컬 프로세스로 라우팅됩니다. 다른 개발자는 영향받지 않고 클러스터를 사용할 수 있습니다. 격리를 실행하지 않으면 모든 트래픽이 로컬 프로세스로 리디렉션됩니다. 이 옵션에 대한 자세한 내용은 격리 상태로 개발하기 위한 라우팅 기능 사용을 참조하세요. 이 예에서는 비격리를 사용하겠습니다.

격리 선택

참고 항목

EndpointManager가 관리자 권한으로 실행되고 hosts 파일을 수정할 수 있게 허용하라는 VS Code가 표시됩니다.

Bridge to Kubernetes 디버깅 프로필이 구성되었습니다.

왼쪽에 있는 디버그 아이콘을 선택하고 Run Script: dev with Kubernetes를 선택합니다. Run Script: dev with Kubernetes 옆에 있는 시작 단추를 클릭합니다.

디버그 시작 프로필 선택

VS Code 상태 표시줄이 주황색으로 바뀌고 Kubernetes 확장에서 연결되었다고 표시되면 개발 컴퓨터가 연결된 것입니다. 개발 컴퓨터가 연결되면 바꾸려는 stats-api에 대한 트래픽이 개발 컴퓨터로 리디렉션되기 시작합니다.

Bridge to Kubernetes를 사용한 디버깅

todo-app의 프런트 엔드 진입점으로 이동합니다. minikube의 경우에는 127.0.0.1을 사용합니다. 앱의 로컬 엔드포인트 URL에 액세스하려면 상태 표시줄에서 Kubernetes 메뉴를 열고 엔드포인트 항목을 선택합니다.

stats 링크를 선택하여 stats-api에 대한 요청을 합니다.

웹 사이트 실행 - 상태 링크 선택

클러스터에서 처음 시작된 트래픽이 중단점이 트리거되었던 (클러스터 외부에 있는) 로컬 실행 버전으로 리디렉션되었는지 확인합니다.

재생을 누르고 요청이 투명하게 완료되게 합니다.

이것은 AKS가 아닌 클러스터에서 Bridge to Kubernetes를 사용하는 한 가지 설명일 뿐입니다. 다음에는 자체 프로젝트에서 사용해 보세요!

정리

이 예제에서 생성한 자산을 정리하려면 다음을 실행하세요.

kubectl delete namespace todo-app

다음 단계

Bridge to Kubernetes를 사용하여 앱을 AKS(Azure Kubernetes Service)에 배포할 수도 있습니다. AKS를 이용해 Bridge to Kubernetes 사용을 참조하세요