Cloud Shell 편집기를 사용하여 컨테이너화된 웹 앱을 만들고 로컬에서 테스트한 다음 Google Kubernetes Engine(GKE) 클러스터에 배포하는 방법을 알아봅니다.
Cloud Shell 편집기에서 이 태스크의 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.
시작하기 전에
- 
      In the Google Cloud console, go to the project selector page. 
- 
        Select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
웹 앱 만들기
Cloud Shell 편집기를 앱 제작 환경으로 사용합니다. 편집기에는 Cloud 개발에 필요한 도구가 미리 로드되어 있습니다.
앱을 만들려면 다음 안내를 따르세요.
- Cloud Shell 편집기를 실행합니다. 
- Cloud Code에서 사용자 인증 정보를 사용하여 Google Cloud API를 호출할 수 있도록 승인하라는 메시지가 표시되면 승인을 클릭합니다. 
- 상태 표시줄에서 Cloud Code 메뉴를 실행합니다. 
- 새 애플리케이션을 선택합니다. 
- 샘플 앱 유형으로 Kubernetes 애플리케이션을 선택합니다. 
- 샘플 Kubernetes 앱 목록에서 Go: Hello World를 선택합니다. 
- 앱 위치의 폴더를 선택한 다음 새 애플리케이션 만들기를 클릭합니다. 
Cloud Shell 편집기에서 앱이 새로운 작업공간에 로드됩니다. 새로고침하면 
로컬 클러스터에서 앱 테스트
이제 앱을 만들었으므로 Cloud Shell의 로컬 Kubernetes 클러스터에서 앱을 실행할 수 있습니다.
- Cloud Shell 터미널을 열려면 터미널 > 새 터미널을 클릭합니다.
- 로컬 minikube 클러스터를 시작하려면 - terminal 명령 프롬프트에서 다음 명령어를 실행합니다.- minikube start- minikube 클러스터를 설정하는 데 1분 정도 걸릴 수 있습니다. 
- Cloud Shell에서 Cloud API를 호출할 수 있도록 승인하라는 메시지가 표시되면 승인을 클릭합니다. - 클러스터가 설정되면 다음과 유사한 메시지가 표시됩니다. - Done! kubectl is now configured to use "minikube" cluster...
로컬 클러스터가 구성되면 이 앱을 빌드하고 실행합니다.
- 상태 표시줄에서 Cloud Code 메뉴를 실행합니다.
- Kubernetes에서 실행 을 선택합니다.
- 메시지가 표시되면 현재 minikube 컨텍스트를 사용할지 확인합니다. - 이 프로세스는 몇 분 정도 걸리며 - 개발 세션 뷰에서 배포 상태를 볼 수 있습니다.- 개발 세션 뷰에서 다른 노드를 클릭하면 선택한 배포 단계와 관련된 로그 발췌 화면이 표시됩니다. 
- 앱 빌드와 배포가 완료되면 개발 세션에서 뷰에서 포트 전달 URL > 서비스 > - go-hello-world-external 을 펼쳐 서비스의 포트 전달 노드를 찾습니다.
- 앱을 실행하려면 - go-hello-world-external 위에 포인터를 가져간 다음 URL 열기를 클릭합니다.
앱 수정
Hello World 앱 구성요소를 이해하려면 앱의 readme.md
- 기본 go-hello-world웹 앱인main.go
- 부하 분산기 go-hello-world-external서비스인hello.service.yaml
앱을 수정하려면 다음 안내를 따르세요.
- '다시 배포되었습니다'를 출력하도록 main.go
- 앱 빌드와 배포가 완료되는 데 1분 정도 걸립니다. - 개발 세션 뷰를 사용하여 앱이 다시 빌드되는 과정을 모니터링합니다.
- 앱 빌드와 배포가 완료되면 개발 세션 > 포트 전달 URL > 서비스 > - go-hello-world-external 에서 서비스의 포트 전달 노드를 찾습니다.
- 앱을 실행하려면 - go-hello-world-external 위에 포인터를 가져가고 URL 열기를 클릭합니다.
앱 로그 보기
실행 중인 앱을 분석하려면 로그 뷰어를 사용하여 로그를 모니터링합니다.
- 명령어 팔레트( - Ctrl/- Cmd+- Shift+- P또는 보기 > 명령어 팔레트에서 액세스 가능)를 연 다음 Cloud Code: 로그 보기를 실행하여 로그 뷰어를 실행합니다.- 이 뷰를 사용하면 앱의 로그를 필터링하고 탐색할 수 있습니다. 
- 배포 필터를 지정하여 앱- go-hello-world의 로그를 확인합니다.
- '다시 배포되었습니다'라고 표시된 앱 탭으로 전환합니다. 브라우저에서 페이지를 새로고침한 다음 Cloud Shell 탭으로 다시 전환합니다. 
- 로그 뷰어에서 새로 생성된 로그를 보려면 - 새로고침 을 클릭합니다.
Google Kubernetes Engine 클러스터 만들기
앱을 배포할 새 Google Kubernetes Engine 클러스터를 만들려면 다음 안내를 따르세요.
- Cloud Code를 클릭한 다음 Kubernetes 섹션을 펼칩니다. 
- KubeConfig에 클러스터 추가를 클릭한 다음 빠른 선택 메뉴에서 Google Kubernetes Engine을 클릭합니다. 
- container.googleapis.com을 사용 설정하라는 메시지가 표시되면 예를 클릭합니다.
- + 새로운 GKE 클러스터 만들기를 클릭합니다. 
- 클러스터 유형으로 표준을 선택합니다. 
- 열기를 클릭하여 Cloud Shell에서Google Cloud 콘솔을 열 수 있도록 허용합니다. 
- Google Cloud 콘솔에서 만든 프로젝트를 사용하고, 영역을 - us-central1-a로 설정하고, 클러스터 이름을- my-first-cluster로 설정합니다.
- 만들기를 클릭합니다. 클러스터를 만드는 데 몇 분 정도 걸립니다. 
- 클러스터가 생성되면 빠른 선택 메뉴에서 - 새로고침을 클릭합니다. 
- 새 클러스터의 이름이 목록에 표시되면 클러스터 이름을 클릭합니다. 새 클러스터가 구성에 추가되고 활성 컨텍스트로 구성됩니다. 
GKE 클러스터에 앱 배포
새 클러스터에 앱을 배포하려면 다음 안내를 따르세요.
- 상태 표시줄을 통해 액세스할 수 있는 - Cloud Code 메뉴에서- Kubernetes에서 실행 을 선택합니다.
- 새로 만든 클러스터가 앱의 컨텍스트로 되어 있는지 확인합니다. 
- 이미지 레지스트리의 기본 옵션을 확인합니다. 
- 앱 빌드와 배포가 완료되는 데 1분 정도 걸립니다. - 개발 세션 뷰를 사용하여 앱이 다시 빌드되는 과정을 모니터링합니다.
- 앱 빌드와 배포가 완료되면 개발 세션 뷰에서 포트 전달 URL > 서비스 > - go-hello-world-external 을 펼쳐 서비스의 포트 전달 노드를 찾습니다.
- 앱을 실행하려면 - go-hello-world-external 위에 포인터를 가져가고 URL 열기를 클릭합니다.
삭제
이 빠른 시작에서 만든 클러스터만 삭제하려면 다음 안내를 따르세요.
- 클러스터 이름 위에 포인터를 가져가고 Google Cloud 콘솔에서 열기를 클릭합니다. 
- 삭제를 클릭한 다음 삭제를 클릭합니다.
프로젝트 및 클러스터를 포함한 관련 리소스를 삭제하려면 다음 안내를 따르세요.
- Google Cloud 콘솔의 프로젝트 페이지로 이동합니다. 
- 이 빠른 시작에서 만든 프로젝트를 선택한 후 삭제를 클릭합니다. 
- 확인할 프로젝트 ID를 입력한 후 종료를 클릭합니다. - 그러면 프로젝트가 종료되고 삭제 일정이 예약됩니다. 
다음 단계
- Cloud Shell 편집기 인터페이스의 기능 살펴보기 
- Cloud Shell 편집기로 디버깅 및 Cloud Shell 편집기의 Kubernetes 애플리케이션 추가 지원 알아보기