VS Code용 Cloud Code에서 Kubernetes 애플리케이션 실행

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Cloud Code를 사용하면 skaffold dev를 사용하여 Kubernetes 클러스터에서 애플리케이션을 쉽게 실행하고 라이브로 볼 수 있습니다. Minikube 또는 Docker Desktop과 같은 로컬 클러스터, Google Kubernetes Engine 또는 다른 클라우드 제공업체에서 애플리케이션을 실행할 수 있습니다.

애플리케이션 실행

  1. 명령어 팔레트를 열고(Ctrl/Cmd+Shift+P 누르기) Cloud Code: Kubernetes에서 실행 명령어를 실행합니다.
  2. 현재의 Kubernetes 컨텍스트를 사용하여 앱을 실행할지 또는 선호하는 컨텍스트로 전환할지 확인합니다. Kubernetes 컨텍스트 설정에 대한 자세한 내용은 구성 설정을 참조하세요.
  3. 원격 클러스터를 컨텍스트로 선택한 경우 메시지가 표시되면 이미지를 푸시할 이미지 레지스트리를 선택합니다. Container Registry를 사용하는 경우 기존 레지스트리를 탐색하거나 만들 레지스트리의 이름을 지정할 수 있습니다. 프로젝트에 Artifact Registry API가 사용 설정되어 있고 하나 이상의 Artifact Registry 저장소가 있는 경우 기존 Artifact Registry 저장소를 찾아서 선택할 수 있습니다.

    다음 샘플은 몇 가지 일반적인 레지스트리의 경우 컨테이너 이미지가 저장되는 위치를 지정하는 방법을 보여줍니다.

    Artifact Registry {region}-docker.pkg.dev/{project_id}/{repo-name}
    Container Registry gcr.io/{project_id}
    Docker Hub docker.io/{account}
    비공개 Docker Hub 저장소를 사용하는 경우 적절하게 인증되었는지 확인합니다.
    AWS Container Repository(ECR) {aws_account_id}.dkr.ecr.{region}.amazonaws.com/{my-app}
    Azure Container Registry(ACR) {my_acr_name}.azurecr.io/{my-app}

    Cloud Code는 이 이미지 레지스트리를 Kubernetes 매니페스트에 지정된 이미지 이름과 연결하여 최종 이미지 저장소 이름을 생성합니다.

    자세한 내용은 이미지 레지스트리 처리 가이드를 참조하세요.

    이 선택사항은 cloudcode.kubernetes 시작 구성(.vscode/launch.json에 있음)에 저장됩니다.

    Cloud Code가 컨테이너를 빌드하여 레지스트리로 푸시하고 Kubernetes 구성을 클러스터에 적용하여 출시를 기다립니다.

    출시가 완료되면 Cloud Code는 선언된 모든 컨테이너 포트를 자동으로 머신에 포트 전달하고 출력창에 URL을 표시하여 실시간 애플리케이션을 탐색할 수 있습니다.

  4. 세션이 완료되면 다음 컨텍스트 메뉴 명령어를 사용할 수 있습니다.

    • 배포 로그 열기: Cloud Code 로그 탐색기를 사용하여 특정 배포의 애플리케이션 로그를 엽니다.
    • 서비스 URL 열기: 웹브라우저에서 특정 서비스의 애플리케이션 서비스 URL을 엽니다.
  5. 시작 구성에서 감시 모드를 사용 중지한 상태에서 애플리케이션을 변경하고 애플리케이션을 다시 빌드 및 다시 배포하려면 개발 세션 창에서 실행 작업을 일시중지한 다음 다시 빌드 및 다시 배포 아이콘 애플리케이션 다시 빌드 및 다시 배포를 클릭합니다.

  6. 애플리케이션 실행을 중지하려면 디버그 툴바에서 디버그 중지 아이콘 중지를 클릭합니다.

    애플리케이션을 중지한 후 배포된 모든 Kubernetes 리소스가 클러스터에서 삭제됩니다. 시작 구성에서 cleanUp 플래그를 사용하여 이 동작을 변경할 수 있습니다.

Skaffold 파일 동기화 및 핫 리로드(Hot reloading) 사용 설정

Skaffold는 로컬 개발 워크플로의 효율성을 높이고 포드를 다시 빌드, 다시 배포, 다시 시작할 필요가 없도록 변경된 파일을 배포된 컨테이너에 복사하는 기능을 지원합니다. 즉, 정적 및 소스 코드 파일을 변경하면 몇 초 만에 변경사항이 적용되며 신속한 피드백 루프가 발생합니다.

정적 파일(예: HTML 및 CSS 파일)의 경우 이 파일 복사 동작을 파일 동기화라고 합니다.

소스 코드 파일의 경우 이 동작을 핫 리로드(Hot reloading)라고 하며 다음 파일 유형을 지원합니다.

  • Go: *.go
  • 자바: *.java, *.kt, *.scala, *.groovy, *.clj
  • NodeJS: *.js, *.mjs, *.coffee, *.litcoffee, *.json

핫 리로드를 구성하면 Skaffold는 지원되는 파일의 변경사항을 감지하고 이러한 변경사항을 클러스터에서 실행 중인 컨테이너와 동기화합니다. 핫 리로드를 지원하지 않는 파일 유형 변경사항은 이미지 다시 빌드 및 포드 다시 시작을 트리거합니다.

기본 빌더로 Buildpacks를 사용하면 자동 파일 동기화와 핫 리로드는 기본적으로 사용 설정됩니다. Docker와 같은 다른 빌더의 경우 맞춤설정할 아티팩트에 skaffold.yaml 파일에서 sync 섹션을 지정할 수 있습니다.

동기화 설정은 다음 중 하나일 수 있습니다(선호도 순서).

  • auto(Jib 및 Buildpacks 아티팩트에만 해당합니다. Buildpacks에 지정되지 않은 경우 기본값입니다.)
  • infer
  • manual

skaffold.yaml 파일에서 다음 샘플 sync 섹션은 모든 /static-html HTML 파일을 컨테이너의 static 폴더에 동기화하기 위해 manual 동기화를 지정합니다.

build:
  artifacts:
    - image: gcr.io/k8s-skaffold/node-example
      context: node
      sync:
        manual:
          - src: 'static-html/*.html'
            dest: static

파일 동기화 및 동기화 규칙 지정에 대한 자세한 내용은 파일 동기화에 대한 Skaffold 가이드를 참조하세요.

보안 비밀 저장

코드에 API 키, 비밀번호, 인증서와 같이 민감할 수 있는 데이터가 포함된 경우 이를 보안 비밀로 저장하는 것이 좋습니다. Cloud Code를 사용하면 이러한 보안 비밀을 Secret Manager에 안전하게 저장하고 필요할 때 프로그래매틱 방식으로 가져올 수 있습니다. Cloud Code를 사용하여 보안 비밀을 만들고 관리하는 방법에 대한 자세한 내용은 Secret Manager 가이드를 참조하세요.

빌더 및 빌드 환경 선택

루트에 skaffold.yaml 파일이 없거나 .vscode/launch.json 파일에서 skaffold.yaml을 참조하지 않는 프로젝트에서 Cloud Code UI를 사용하여 빌더 및 빌드 환경을 선택할 수 있습니다. 로컬 빌드는 자체 리소스를 사용하므로 무료입니다. Cloud Build를 사용하여 빌드하는 것은 대상 클러스터의 프로세서 아키텍처와 일치하지 않는 머신 또는 느린 머신에 적합합니다. Cloud Build를 사용하여 애플리케이션을 빌드하는 비용에 대한 자세한 내용은 Cloud Build 가격 책정을 참조하세요.

샘플 중 하나를 사용하는 경우 UI를 사용하려면 빌드 작업을 실행하기 전 skaffold.yaml 파일을 삭제합니다. UI를 사용하지 않고 빌더 및 빌드 환경을 선택하는 단계는 수동으로 Skaffold 구성 만들기를 참조하세요.

  1. skaffold.yaml 파일이 없는 프로젝트에서 명령어 팔레트를 연 다음(Ctrl/Cmd+Shift+P 키를 누르거나 > 명령어 팔레트 클릭) Cloud Code: Kubernetes에서 실행 또는 Cloud Code: Kubernetes에서 디버그를 실행합니다.

  2. 빌드 환경을 선택합니다.

    Cloud Build를 선택하는 경우 이미지 레지스트리를 지정합니다.

  3. 각 이미지 및 설정에 빌더(Docker 또는 Buildpack)를 지정합니다.

  4. 구성 옵션을 선택하거나 선택 해제한 후 디버그 또는 실행을 클릭합니다.

선택한 옵션은 skaffold.yaml 파일에 저장되며 이 파일을 직접 수정하여 추가로 맞춤설정할 수 있습니다.

실행 구성 맞춤설정

애플리케이션 실행 방법을 구성하려면 skaffold.yaml 파일을 맞춤설정하면 됩니다.

.vscode/launch.json 파일의 cloudcode.kubernetes 구성에서 다음 필드를 지정하여 실행을 구성할 수도 있습니다.

  • skaffoldConfig: 빌드 및 배포 설정이 포함된 Skaffold 구성 파일을 지정합니다.
  • profile: 원하는 Skaffold 프로필을 지정합니다. 정의되지 않으면 기본 프로필이 사용됩니다.
  • imageRegistry: 이미지를 푸시할 이미지 레지스트리를 지정합니다.
  • watch: 작업 공간에서 변경사항을 감시할지 여부를 지정하고 애플리케이션을 다시 실행합니다. 명시적으로 false로 설정하지 않는 한 기본적으로 true입니다.
  • cleanUp: 애플리케이션이 종료된 후 클러스터에서 배포된 Kubernetes 리소스를 삭제할지 여부를 지정합니다. 명시적으로 false로 설정하지 않는 한 기본적으로 true입니다.
  • portForward: 클러스터에서 노출된 Kubernetes 리소스에 대해 로컬 머신으로 포트를 전달할지 여부를 지정합니다. 명시적으로 false로 설정하지 않는 한 기본적으로 true입니다.

지원 받기

의견을 보내려면 GitHub에서 문제를 신고하거나 Stack Overflow에서 질문하세요.