Share via


AKS를 사용하여 Bridge to Kubernetes 이용

이 자습서에서는 구체적인 AKS 샘플 마이크로 서비스 웹앱을 사용하여, Bridge to Kubernetes를 AKS(Azure Kubernetes Service) 클러스터의 일부인 단일 Pod에 로컬로 디버그하는 방법을 알아봅니다.

시작하기 전에

이 가이드에서는 Todo 앱 샘플 애플리케이션을 사용하여 개발 컴퓨터를 AKS에서 실행되는 Kubernetes 클러스터에 연결하는 방법을 보여 줍니다. Kubernetes 클러스터에서 이미 자체 애플리케이션일 실행하고 있다면 Kubernetes를 사용하여 개발을 참조하세요. 로컬로 실행하는 MiniKube 같은 다른 클러스터를 사용하는 경우에는 예제를 이용해 Bridge to Kubernetes 사용을 참조하세요.

필수 구성 요소

Kubernetes 클러스터 만들기

지원되는 지역에 AKS 클러스터를 만듭니다. 아래 명령은 MyResourceGroup 이라는 리소스 그룹과 MyAKS라는 AKS 클러스터를 만듭니다.

az group create \
    --name MyResourceGroup \
        --location eastus
az aks create \
    --resource-group MyResourceGroup \
    --name MyAKS \
    --location eastus \
    --node-count 3 \
    --generate-ssh-keys

애플리케이션 예제 설치

코드 다운로드 및 종속성 설치

git clone https://github.com/hsubramanianaks/b2k-samples
cd b2k-samples/todo-app
npm install stats-api\

클러스터에 연결하고 앱 배포

개발 컴퓨터에서 Kubernetes CLI를 다운로드 하고 az aks get-credentials을 사용해 Kubernetes 클러스터에 연결되도록 구성합니다.

az aks get-credentials --resource-group MyResourceGroup --name MyAKS
kubectl create namespace todo-app
kubectl config set-context --current --namespace=todo-app
kubectl apply -f deployment.yaml --namespace todo-app

앱 사용해 보기

이전에 사용하던 동일한 터미널에서 아래 명령을 실행하고 외부 IP 열 아래에 프런트 엔드 서비스에 대한 IP를 복사합니다.

kubectl get services

앱을 사용해 보려면 URL을 엽니다. {your external IP from above command goes here}.nip.io

stats-api 서비스 디버그

이전에 사용했던 것과 동일한 터미널에서 다음 명령을 입력하여 VS Code에서 stats-api를 엽니다.

code ./stats-api

먼저, server.js의 줄 17에 중단점을 배치합니다.

그런 다음, MyAKS 클러스터의 todo-app 네임스페이스가 기본값으로 설정되어 있는지 확인합니다(옆에 *가 있는 경우). 기본값으로 설정되지 않은 경우 todo-app 노드를 마우스 오른쪽 단추로 클릭하고 네임스페이스 사용을 선택합니다.

Bridge to Kubernetes 네임스페이스를 보여 주는 스크린샷

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

Bridge to Kubernetes Configure 명령 창을 보여 주는 스크린샷

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

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

연결할 서비스 선택 창을 보여 주는 스크린샷

Important

단일 Pod가 있는 서비스만 리디렉션할 수 있습니다.

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

포트 번호 입력 창을 보여 주는 스크린샷

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

디버거 시작 작업 선택 창을 보여 주는 스크린샷

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

격리 선택 옵션 창을 보여 주는 스크린샷

참고 항목

이후에 시작할 때는 이 설정을 거치지 않고 서비스 이름, 포트, 시작 작업 또는 격리 실행 여부를 묻는 메시지가 표시되지 않는 상태로 디버그 아이콘을 클릭하기만 하면 됩니다. 이러한 값은 .vscode/tasks.json에 저장됩니다. 나중에 이 설정을 변경하려면 명령 팔레트를 열고(CTRL+SHIFT+P, Mac에서는 Cmd+Shift+P) Bridge to Kubernetes: Configure 명령을 실행합니다.

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

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

디버거 시작 프로필 선택 창을 보여 주는 스크린샷

참고 항목

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

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

Bridge to Kubernetes를 사용한 디버깅 선택 창을 보여 주는 스크린샷

앞에서 찾은 외부 IP, {your external IP from get services command}.nip.io을(를) 통해 응용 프로그램의 프런트 엔드 진입점으로 이동합니다. 격리 모드를 선택한 경우 {your prefix - can be found in task.json}.{your external IP from get services command}.nip.io을(를) 사용해야 합니다.

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

실행 중인 웹 사이트 선택 - 상태 링크 선택을 보여 주는 스크린샷

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

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

정리

디버거를 중지하면 클러스터에 대한 모든 변경 내용이 되돌려집니다. 격리된 상태로 실행 중인 경우 다음에 디버거를 신속하게 시작하기 위해 라우팅 관리자 Pod가 남아 있습니다.

향후 디버깅을 위해 AKS 클러스터를 켜두거나 아래 명령을 사용하여 삭제할 수 있습니다.

az aks delete --name MyAKS --resource-group MyResourceGroup

다음 단계

Bridge to Kubernetes 작동 방식에서 Bridge to Kubernetes에 대해 자세히 알아보세요.