Cloud Code는 디버거를 Kubernetes pod에 연결하는 기능을 지원합니다. 디버그 가능 컨테이너와 cloudcode.kubernetes
유형의 연결 구성만 있으면 됩니다.
컨테이너 설정
디버그할 컨테이너가 디버그 준비가 되었는지 확인해야 합니다. 다음은 컨테이너를 설정하기 위한 언어별 지침입니다.
Node.js
--inspect=<debugPort>
로 Node.js 애플리케이션을 시작합니다. 여기서debugPort
는 연결 구성에서 가져옵니다. 예시:CMD ["node", "--inspect=9229", "index.js"]
Python
Go
자바
- 머신에 JVM이 설치되어 있는지 확인합니다.
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<debugPort>,quiet=y
로 자바 애플리케이션을 시작합니다. 여기서debugPort
는 연결 구성에서 가져옵니다.예를 들어 디버그 모드에서 자바 애플리케이션을 시작하고 포트
debugPort
에서 연결을 리슨하려면 다음 안내를 따르세요.ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<debugPort>,quiet=y", "-jar", "my-app-1.0.jar"]
.NET Core
Kubernetes 컨테이너에 Microsoft의 .NET Core 명령줄 디버거인
vsdbg
가 설치되어 있는지 확인합니다.예를 들면 다음과 같습니다.
RUN apt-get update
&& apt-get install -y --no-install-recommends unzip
&& apt-get install -y procps
&& rm -rf /var/lib/apt/lists/*
&& curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l /vsdbg
연결 구성 설정
디버그 가능 컨테이너에 연결하려면 cloudcode.kubernetes
유형의 연결 구성이 있어야 합니다.
.vscode/launch.json 파일이 없는 프로젝트
프로젝트의 .vscode
폴더에 시작 파일이 없는 경우 디버그 패널을 사용하여 파일을 추가할 수 있습니다.
디버그 패널(작업 표시줄의 디버그 뷰 아이콘
사용)로 이동하여 드롭다운 메뉴에서
Add Configuration
을 선택합니다.환경으로
Cloud Code: Kubernetes
를 선택합니다.Attach to Kubernetes Pod
옵션 선택해당 프로그래밍 언어를 선택합니다.
그러면 프로젝트의
launch.json
파일이 생성되어 열리고 연결 구성이 생성됩니다. 이제 프로젝트의 구성 속성과 일치하도록 이 파일에서 구성 속성을 업데이트할 수 있습니다. 구성 속성에 대한 자세한 내용은 이 표를 참조하세요.
.devcode/launch.json 파일이 있는 프로젝트
기존 .devcode/launch.json에 새 연결 구성을 추가하려면 다음 절차를 따르세요.
- launch.json 파일을 엽니다.
- 스니펫 Intelliense를 호출하는
Add Configuration
버튼을 누릅니다. - 원하는 언어에 대해
Cloud Code: Attach to Kubernetes Pod
스니펫 중 하나를 선택합니다. 그러면 연결 구성이 추가됩니다. 이제 프로젝트의 속성과 일치하도록 이 구성의 속성을 업데이트할 수 있습니다. 구성 속성에 대한 자세한 내용은 이 표를 참조하세요.
구성 속성
속성 | 설명 |
---|---|
debugPort | 컨테이너에서 사용되는 디버그 포트입니다. |
podSelector | 디버그 pod를 선택하는 데 사용되는 키-값 쌍 집합입니다(자세한 내용은 선택기 가이드를 참조). 일반적인 podSelector는 대개 다음과 같습니다.
|
localRoot | 디버깅할 프로그램이 있는 로컬 디렉터리 경로입니다. 기본값은 ${workspaceFolder}입니다. |
remoteRoot | 디버깅할 프로그램이 있는 (Kubernetes 컨테이너의) 원격 디렉터리의 절대 경로입니다. |
Kubernetes pod에 디버거 연결
구성 및 컨테이너를 설정한 후에는 다음 안내를 따르세요.
- 디버그 뷰
를 엽니다.
F5
키를 사용하여 구성을 선택하고 시작합니다.- 디버깅 중에
localhost:${debugPort}
가 컨테이너의debugPort
로 포트 전달됩니다.
- 디버깅 중에
- 이제 디버깅 세션이 성공적으로 설정되었습니다.
- 이제 중단점 설정 및 단계별 코드 실행과 같이 로컬 코드를 디버깅할 때 일반적으로 하는 모든 작업을 수행할 수 있습니다.
변수 및 스택 정보를 검사하려면 디버그 사이드바를 사용합니다. 디버깅 세션과 상호작용하려면 하단 창 디버거에 있는 디버그 콘솔을 사용합니다.
디버깅 세션을 종료하려면 디버그 툴바에서 중지 아이콘을 클릭합니다.
Kubernetes pod 연결과 Kubernetes 애플리케이션 디버깅
Kubernetes pod에 연결 | Kubernetes 애플리케이션 디버깅 |
---|---|
단일 Kubernetes pod 디버깅 | 애플리케이션에서 디버그 가능한 모든 컨테이너 디버깅 |
디버깅하기 전에 애플리케이션이 Kubernetes pod에서 실행 중인지 확인해야 합니다. | Kubernetes 클러스터에서 애플리케이션을 실행하고 디버거를 연결합니다. |
'cloudcode.kubernetes' 유형의 구성(.vscode/launch.json)을 사용하고 'attach'를 요청합니다. | 'cloudcode.kubernetes' 유형의 구성(.vscode/launch.json)을 사용하고 'launch'를 요청합니다. 실행 대 연결 구성. |
샘플 구성:
{ "name": "Attach to Kubernetes Pod (NodeJS)", "type": "cloudcode.kubernetes", "request": "attach", "language": "Node", "debugPort": 9229, "podSelector": { "app": "hello-world" }, "localRoot": "${workspaceFolder}", "remoteRoot": "/app" } |
샘플 구성:
{ "name": "Run/Debug on Kubernetes", "type": "cloudcode.kubernetes", "request": "launch", "skaffoldConfig": "${workspaceFolder}/skaffold.yaml", "watch": true, "cleanUp": true, "portForward": true } |
이 구성은 애플리케이션을 실행하는 데 사용할 수 없습니다. | 이 구성은 애플리케이션 실행 또는 디버깅에 모두 사용할 수 있습니다. |
이 구성은 언어별로 다릅니다. | 이 구성은 언어별로 다르지 않습니다. |
전용 명령어 없음 | 'Kubernetes의 디버그' 명령어 |