컨테이너화된 웹 앱 만들기 및 배포

Cloud Shell 편집기를 사용하여 컨테이너화된 웹 앱을 만들고 로컬에서 테스트한 다음 Google Kubernetes Engine(GKE) 클러스터에 배포하는 방법을 알아봅니다.


Cloud Shell 편집기에서 이 태스크의 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.

둘러보기


시작하기 전에

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Select or create a Google Cloud project.

웹 앱 만들기

Cloud Shell 편집기를 앱 제작 환경으로 사용합니다. 편집기에는 Cloud 개발에 필요한 도구가 미리 로드되어 있습니다.

앱을 만들려면 다음 안내를 따르세요.

  1. Cloud Shell 편집기를 실행합니다.

  2. Cloud Code에서 사용자 인증 정보를 사용하여 Google Cloud API를 호출할 수 있도록 승인하라는 메시지가 표시되면 승인을 클릭합니다.

  3. 상태 표시줄에서 Cloud Code 메뉴를 실행합니다.

  4. 새 애플리케이션을 선택합니다.

  5. 샘플 앱 유형으로 Kubernetes 애플리케이션을 선택합니다.

  6. 샘플 Kubernetes 앱 목록에서 Go: Hello World를 선택합니다.

  7. 앱 위치의 폴더를 선택한 다음 새 애플리케이션 만들기를 클릭합니다.

Cloud Shell 편집기에서 앱이 새로운 작업공간에 로드됩니다. 새로고침하면 탐색기 뷰에서 앱에 액세스할 수 있습니다.

로컬 클러스터에서 앱 테스트

이제 앱을 만들었으므로 Cloud Shell의 로컬 Kubernetes 클러스터에서 앱을 실행할 수 있습니다.

  1. Cloud Shell 터미널을 열려면 터미널 > 새 터미널을 클릭합니다.
  2. 로컬 minikube 클러스터를 시작하려면 terminal 명령 프롬프트에서 다음 명령어를 실행합니다.

    minikube start
    

    minikube 클러스터를 설정하는 데 1분 정도 걸릴 수 있습니다.

  3. Cloud Shell에서 Cloud API를 호출할 수 있도록 승인하라는 메시지가 표시되면 승인을 클릭합니다.

    클러스터가 설정되면 다음과 유사한 메시지가 표시됩니다.

    Done! kubectl is now configured to
    use "minikube" cluster...
    

로컬 클러스터가 구성되면 이 앱을 빌드하고 실행합니다.

  1. 상태 표시줄에서 Cloud Code 메뉴를 실행합니다.
  2. Kubernetes에서 실행을 선택합니다.
  3. 메시지가 표시되면 현재 minikube 컨텍스트를 사용할지 확인합니다.

    이 프로세스는 몇 분 정도 걸리며 개발 세션 뷰에서 배포 상태를 볼 수 있습니다.

    개발 세션 뷰에서 다른 노드를 클릭하면 선택한 배포 단계와 관련된 로그 발췌 화면이 표시됩니다.

  4. 앱 빌드와 배포가 완료되면 개발 세션에서 뷰에서 포트 전달 URL > 서비스 > go-hello-world-external을 펼쳐 서비스의 포트 전달 노드를 찾습니다.

  5. 앱을 실행하려면 go-hello-world-external 위에 포인터를 가져간 다음 URL 열기를 클릭합니다.

앱 수정

Hello World 앱 구성요소를 이해하려면 앱의 readme.md 파일에 있는 다이어그램을 참조하세요. 개략적인 앱의 구성은 다음과 같습니다.

  • 기본 go-hello-world 웹 앱인 main.go는 수신된 모든 요청에 대해 '실행 중입니다'라는 템플릿 기반 응답을 반환합니다.
  • 부하 분산기 go-hello-world-external 서비스인 hello.service.yamlKubernetes 서비스를 설명하여 앱을 노출합니다.

앱을 수정하려면 다음 안내를 따르세요.

  1. '다시 배포되었습니다'를 출력하도록 main.go 파일을 수정합니다. 파일은 자동으로 저장됩니다.
  2. 앱 빌드와 배포가 완료되는 데 1분 정도 걸립니다. 개발 세션 뷰를 사용하여 앱이 다시 빌드되는 과정을 모니터링합니다.

  3. 앱 빌드와 배포가 완료되면 개발 세션 > 포트 전달 URL > 서비스 > go-hello-world-external에서 서비스의 포트 전달 노드를 찾습니다.

  4. 앱을 실행하려면 go-hello-world-external 위에 포인터를 가져가고 URL 열기를 클릭합니다.

앱 로그 보기

실행 중인 앱을 분석하려면 로그 뷰어를 사용하여 로그를 모니터링합니다.

  1. 명령어 팔레트(Ctrl/Cmd+Shift+P 또는 보기 > 명령어 팔레트에서 액세스 가능)를 연 다음 Cloud Code: 로그 보기를 실행하여 로그 뷰어를 실행합니다.

    이 뷰를 사용하면 앱의 로그를 필터링하고 탐색할 수 있습니다.

  2. 배포 필터를 지정하여 앱 go-hello-world의 로그를 확인합니다.

  3. '다시 배포되었습니다'라고 표시된 앱 탭으로 전환합니다. 브라우저에서 페이지를 새로고침한 다음 Cloud Shell 탭으로 다시 전환합니다.

  4. 로그 뷰어에서 새로 생성된 로그를 보려면 새로고침을 클릭합니다.

Google Kubernetes Engine 클러스터 만들기

앱을 배포할 새 Google Kubernetes Engine 클러스터를 만들려면 다음 안내를 따르세요.

  1. Cloud Code 아이콘 Cloud Code를 클릭한 다음 Kubernetes 섹션을 펼칩니다.

  2. KubeConfig에 클러스터 추가를 클릭한 다음 빠른 선택 메뉴에서 Google Kubernetes Engine을 클릭합니다.

  3. container.googleapis.com을 사용 설정하라는 메시지가 표시되면 를 클릭합니다.

  4. + 새로운 GKE 클러스터 만들기를 클릭합니다.

  5. 클러스터 유형으로 표준을 선택합니다.

  6. 열기를 클릭하여 Cloud Shell에서 Google Cloud 콘솔을 열 수 있도록 허용합니다.

  7. Google Cloud 콘솔에서 만든 프로젝트를 사용하고, 영역을 us-central1-a로 설정하고, 클러스터 이름을 my-first-cluster로 설정합니다.

  8. 만들기를 클릭합니다. 클러스터를 만드는 데 몇 분 정도 걸립니다.

  9. 클러스터가 생성되면 빠른 선택 메뉴에서 Kubernetes 클러스터 뷰 새로고침 새로고침을 클릭합니다.

  10. 새 클러스터의 이름이 목록에 표시되면 클러스터 이름을 클릭합니다. 새 클러스터가 구성에 추가되고 활성 컨텍스트로 구성됩니다.

GKE 클러스터에 앱 배포

새 클러스터에 앱을 배포하려면 다음 안내를 따르세요.

  1. 상태 표시줄을 통해 액세스할 수 있는 Cloud Code 메뉴에서 Kubernetes에서 실행을 선택합니다.

  2. 새로 만든 클러스터가 앱의 컨텍스트로 되어 있는지 확인합니다.

  3. 이미지 레지스트리의 기본 옵션을 확인합니다.

  4. 앱 빌드와 배포가 완료되는 데 1분 정도 걸립니다. 개발 세션 뷰를 사용하여 앱이 다시 빌드되는 과정을 모니터링합니다.

  5. 앱 빌드와 배포가 완료되면 개발 세션 뷰에서 포트 전달 URL > 서비스 > go-hello-world-external을 펼쳐 서비스의 포트 전달 노드를 찾습니다.

  6. 앱을 실행하려면 go-hello-world-external 위에 포인터를 가져가고 URL 열기를 클릭합니다.

삭제

이 빠른 시작에서 만든 클러스터만 삭제하려면 다음 안내를 따르세요.

  1. 클러스터 이름 위에 마우스 포인터를 올려놓고 Google Cloud 콘솔에서 열기 아이콘 Google Cloud 콘솔에서 열기를 클릭합니다.
  2. 삭제를 클릭한 다음 삭제를 클릭합니다.

프로젝트 및 클러스터를 포함한 관련 리소스를 삭제하려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔의 프로젝트 페이지로 이동합니다.

    프로젝트 페이지로 이동

  2. 이 빠른 시작에서 만든 프로젝트를 선택한 후 삭제를 클릭합니다.

  3. 확인할 프로젝트 ID를 입력한 후 종료를 클릭합니다.

    그러면 프로젝트가 종료되고 삭제 일정이 예약됩니다.

다음 단계