다음을 통해 공유


샘플과 함께 Bridge to Kubernetes 사용

메모

Bridge to Kubernetes는 2025년 4월 30일에 사용 중지됩니다. 사용 중지 및 오픈 소스 대안에 대한 자세한 내용은 GitHub문제를 참조하세요.

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

TODO 애플리케이션 샘플은 영구 스토리지를 제공하는 프런트 엔드 및 백 엔드로 구성됩니다. 이 확장 샘플은 통계 구성 요소를 추가하고 애플리케이션을 다양한 마이크로 서비스로 나눕니다. 특히 다음을 수행합니다.

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

전체적으로 이 확장된 TODO 애플리케이션은 6개의 상호 관련된 구성 요소로 구성됩니다.

필수 구성 요소

  • MiniKube를 설치하기 위해 모든 Kubernetes 클러스터 또는 Chocolatey 패키지 관리자를 사용하세요.
  • Windows 10에서 Hyper-V
  • Kubectl 선택한 명령줄 환경의 경로에 설치되어 있습니다.
  • Bridge to Kubernetes Visual Studio Code 확장

MiniKube 설치

Bridge to Kubernetes와 함께 모든 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 및 로컬 포트(PORT(S) 열의 첫 번째 번호)를 사용하여 애플리케이션으로 이동합니다.

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 또는 Cmd+Shift+P Mac)를 열고 Bridge to Kubernetes를 입력합니다. Bridge to Kubernetes: 구성 옵션을 선택합니다.

Bridge to Kubernetes: 명령어 설정

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

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

연결할 서비스를 선택합니다.

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

포트 번호 입력

런치 작업으로 "Run Script: dev"을(를) 선택하세요.

디버거 시작 작업 선택

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

격리 선택

메모

VS Code는 EndpointManager가 관리자 권한으로 실행되고 호스트 파일을 수정할 수 있도록 허용하라는 메시지를 표시합니다.

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

왼쪽에서 디버그 아이콘을 선택한 다음 Run Script: dev with Kubernetes를 선택합니다. 스크립트 실행 옆에 있는 시작 단추를 클릭합니다. kubernetes를 사용하여 개발.

디버그 시작 프로필 선택

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

Bridge to Kubernetes를 사용한 디버깅

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

통계 링크를 선택하여 stats-api에 요청을 만드세요.

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

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

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

이 예제는 AKS가 아닌 클러스터에서 Bridge to Kubernetes를 사용하는 방법에 대한 하나의 그림일 뿐입니다. 직접 프로젝트에서 시도해 보세요!

정리

이 샘플에서 생성된 자산을 정리하려면 다음을 실행합니다.

kubectl delete namespace todo-app

다음 단계

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