Cloud Code를 사용한 개발

1. 목표

이 실습에서 학습할 내용은 다음과 같습니다.

  • Cloud Code 플러그인 살펴보기
  • Kubernetes 클러스터에 배포
  • Kubernetes 로그 스트리밍
  • 변경사항의 핫 리로드 활용
  • 실시간 Kubernetes 앱 디버그

2. 작업공간 준비 중

앱 클론

저장소를 클론하고 개발 환경에서 열려면 다음 안내를 따르세요.

  1. 다음 URL로 이동하여 Cloud Shell 편집기를 엽니다.

https://ide.cloud.google.com

  1. 터미널 창에서 다음 명령어를 사용하여 애플리케이션 소스를 클론합니다.

git clone https://github.com/viglesiasce/sample-app.git -b golden-path

  1. 디렉터리로 변경하고 IDE 작업공간을 저장소 루트로 설정합니다.

cd sample-app && cloudshell workspace .

Minikube 시작

이 섹션에서는 Minikube라는 로컬 버전의 Kubernetes를 사용하여 애플리케이션을 빌드, 테스트, 배포, 액세스합니다.

  1. 터미널에서 다음을 실행하여 minikube를 시작합니다.

minikube start

Minikube는 Cloud Shell에 로컬 Kubernetes 클러스터를 설정합니다. 이 설정은 몇 분 정도 걸립니다. 시작하는 동안 잠시 시간을 내어 다음 단계에서 Cloud Code에서 제공하는 다양한 인터페이스를 검토합니다.

3. Cloud Code 플러그인 살펴보기

Cloud Code는 기존 템플릿에서 애플리케이션 만들기부터 배포된 앱의 리소스 모니터링에 이르기까지 Kubernetes 및 Cloud Run 애플리케이션의 전체 개발 주기에서 IDE를 지원합니다. Cloud Code에서 제공하는 다양한 명령어와 뷰를 사용합니다. 이 단계에서는 기본 인터페이스에 대해 알아봅니다.

활동 표시줄에서 탐험가 뷰 검토

작업 표시줄에서 여러 사용자 인터페이스 패널에 액세스할 수 있습니다. 다양한 뷰에 익숙해지려면 각 뷰의 아이콘을 클릭하세요.

API 탐색기:

  • 작업 표시줄에서 Cloud Code - Cloud API 아이콘 Cloud Code 를 클릭합니다. 이 뷰에서 작업하는 방법에 대한 자세한 내용은 문서에서 확인할 수 있습니다.

ded1723c524edd72.png

Secret Manager 탐색기:

  • 작업 표시줄에서 Secret Manager 뷰 를 클릭합니다. 이 뷰에서 작업하는 방법에 대한 자세한 내용은 문서에서 확인할 수 있습니다.

89f88159bcf79fa9.png

Cloud Run 탐색기:

  • 왼쪽의 작업 표시줄에 있는 Cloud Run 아이콘을 사용해 Cloud Run 탐색기로 이동합니다. 이 뷰에서 작업하는 방법에 대한 자세한 내용은 문서에서 확인할 수 있습니다.

a1d583fd06413011.png

Kubernetes 탐색기:

  • 왼쪽의 작업 표시줄에 있는 아이콘 을 사용하여 Kubernetes 탐색기로 이동합니다. 이 뷰에서 작업하는 방법에 대한 자세한 내용은 문서에서 확인할 수 있습니다.

b2b8ab3975c5b0c9.png

상태 표시줄 명령어 검토

자주 사용하는 명령어는 상태 표시줄의 표시기를 통해 빠르게 액세스할 수 있습니다.

  • 상태 표시줄 d61e85cf23a32a40.png에서 Cloud Code 확장 프로그램 표시기를 찾아 클릭합니다.
  • CloudRun 및 Kubernetes에서 실행 및 디버그할 수 있는 다양한 명령어를 검토합니다.
  • 추가 세부정보 및 샘플 활동을 보려면 '시작 페이지 열기'를 클릭하세요.

명령어 팔레트 명령어 검토

명령어 팔레트에서 추가 명령어를 사용할 수 있습니다. 액세스할 수 있는 명령어 목록을 검토합니다.

  • 명령어 팔레트를 열고 (Ctrl/Cmd+Shift+P를 누름) Cloud Code를 입력하여 사용 가능한 명령어를 필터링합니다.
  • 화살표 키를 사용하여 명령어 목록을 순환하세요.

4. Kubernetes 클러스터에 배포

이 섹션에서는 애플리케이션을 빌드, 테스트, 배포, 액세스합니다.

아래 단계에서는 소스 코드 빌드를 시작한 후 테스트를 실행합니다. 빌드 및 테스트를 실행하는 데 몇 분 정도 걸립니다. 이러한 테스트에는 단위 테스트와 배포 환경에 설정된 규칙을 확인하는 유효성 검사 단계가 포함됩니다. 이 검증 단계는 이미 구성되어 있으며 개발 환경에서 작업하는 동안에도 배포 문제에 대한 경고를 받을 수 있습니다.

  1. Cloud Shell 편집기 하단의 창에서 Cloud Code × d61e85cf23a32a40.png을 선택합니다.
  2. 상단에 표시되는 패널에서 'Kubernetes에서 실행'을 선택합니다. 메시지가 표시되면 예를 선택하여 minikube Kubernetes 컨텍스트를 사용합니다.
  3. 하단 창 4866761cb9c691e2.png에서 Output 탭을 선택하여 진행 상황과 알림을 확인합니다.
  4. 'Kubernetes: Run/Debug - DETAILS(Kubernetes: 실행/디버그 - 세부정보)'를 선택합니다. 채널 드롭다운에서 오른쪽 c5e31091d464dbcf.png을 클릭하면 추가 세부정보와 컨테이너에서 라이브 스트리밍되는 로그를 볼 수 있습니다.

빌드와 테스트가 완료되면 출력 탭에 Resource deployment/sample-app-dev status completed successfully이 표시되고 URL 두 개가 나열됩니다.

  1. Cloud Code 터미널에서 출력의 첫 번째 URL (http://localhost:8080)에 마우스를 가져간 다음 표시되는 도움말에서 '웹 미리보기 열기'를 선택합니다.

애플리케이션의 로컬 버전이 브라우저에서 열립니다. 이 버전의 앱은 minikube의 Kubernetes 클러스터에서 실행됩니다.

  1. 브라우저에서 페이지를 새로고침합니다. 카운터 옆의 숫자가 증가하면 앱이 새로고침에 반응하고 있음을 나타냅니다.

로컬 환경에서 변경사항을 적용할 때 애플리케이션을 볼 수 있도록 브라우저에서 이 페이지를 열어 두세요.

5. 변경사항의 핫 리로드 활용

이 섹션에서는 애플리케이션을 변경하고 앱이 로컬 Kubernetes 클러스터에서 실행될 때 변경사항을 확인합니다. Kubernetes: Run/Debug 채널의 출력 탭에 애플리케이션 URL 외에도 Watching for changes.라고 표시되어 있습니다. 이는 감시 모드가 사용 설정되었음을 의미합니다. Cloud Code가 감시 모드인 동안 Cloud Code는 저장소에 저장된 변경사항을 감지하고 최신 변경사항으로 앱을 자동으로 다시 빌드하고 다시 배포합니다.

  1. Cloud Shell 편집기에서 main.go 파일로 이동합니다.
  2. 이 main.go 파일의 23번 줄에서 색상을 녹색에서 파란색으로 변경합니다.
  3. 파일을 저장합니다.

Cloud Code가 앱 변경사항이 저장된 것을 감지하고 자동으로 변경사항을 다시 배포합니다. 출력 탭에 업데이트가 시작되었음을 보여줍니다. 재배포를 실행하는 데 몇 분 정도 걸립니다.

이러한 자동 재빌드는 일부 애플리케이션 유형 및 프레임워크에서 사용할 수 있는 기능인 핫 코드 리로드와 유사합니다.

  1. 빌드가 완료되면 앱이 열려 있는 브라우저로 이동하여 페이지를 새로고침합니다.

새로고침하면 표 상단의 색상이 파란색에서 녹색으로 변경됩니다.

이 설정에서는 모든 아키텍처와 구성요소를 자동으로 새로고침합니다. Cloud Code와 minikube를 사용할 때 Kubernetes에서 실행되는 모든 항목에는 이 핫 코드 리로드 기능이 있습니다.

6. 실시간 Kubernetes 앱 디버깅

애플리케이션을 실행하고, 변경하고, 실행 중인 앱을 살펴봤습니다. 이 섹션에서는 기본 저장소에 다시 커밋할 준비가 되었는지 확인할 수 있도록 애플리케이션을 디버그합니다.

이 디버그 예에서는 페이지 카운터에 대한 코드 섹션에 중점을 둡니다.

  1. Cloud Shell 편집기에서 main.go 파일을 엽니다.
  2. 82번 줄의 왼쪽 번호를 클릭하여 애플리케이션에 중단점을 설정합니다 (err != nil {인 경우).
  3. Cloud Shell 편집기 하단의 파란색 창에서 Cloud Code d61e85cf23a32a40.png를 선택합니다.
  4. 상단에 표시되는 패널에서 'Kubernetes에서 디버그'를 선택합니다.

Cloud Code가 디버거를 실행하고 연결하므로 사용자에게 표시되는 애플리케이션 동작뿐 아니라 애플리케이션의 메모리 내 상태에 액세스할 수 있습니다.

  1. 배포 프로세스가 끝나면 애플리케이션이 배포된 컨테이너의 디렉터리를 확인하라는 메시지가 창 상단에 표시됩니다. f96e9a814edb44f4.png

값이 /go/src/app으로 설정되어 있는지 확인하고 Enter 키를 눌러 값을 수락합니다.

  1. 디버거가 배포가 완료될 때까지 기다립니다. 상태 표시줄이 주황색으로 바뀌고 출력이 "Attached debugger to container "sample-app-dev-..." successfully로 표시되면 완료된 것입니다."
  2. Cloud Code 터미널에서 출력의 첫 번째 URL (http://localhost:8081)에 마우스를 가져간 다음 표시되는 도움말에서 '웹 미리보기 열기'를 선택합니다. 페이지 로드가 예상대로 완료되지 않습니다.
  3. 디버거가 표시되는 IDE로 다시 전환합니다. 코드가 탭에 나타나고 호출 스택, 즉 코드의 해당 부분에서 사용할 수 있는 변수가 표시됩니다. Variables - Local을 펼치면 현재의 카운터 변수 값을 확인할 수 있습니다.
  4. 페이지가 계속 로드되도록 하려면 '계속'을 선택하세요. 아이콘 8f395391c4828528.png을 설정하여 디버깅합니다.
  5. 디버깅이 끝나면 중지 버튼을 클릭하여 실행 중인 각 스레드를 종료합니다. 81d142a9e1a2c01b.png