Kubernetes Engine에서 App Engine 앱 실행

이 가이드는 Kubernetes Engine에서 App Engine 가변형 환경 애플리케이션을 실행하는 방법을 보여 줍니다. Kubernetes Engine에서 앱을 실행하려면 Dockerfile을 만들고 이 Dockerfile을 사용하여 컨테이너를 빌드한 후 Kubernetes Engine에서 컨테이너를 실행해야 합니다. 코드를 변경할 필요가 없습니다.

시작하기 전에

이 페이지의 안내를 따르기 전에 다음 단계를 수행하세요.

  1. App Engine 가변형 환경에서 애플리케이션이 성공적으로 배포 및 실행되는지 확인합니다.

  2. 이 안내에서는 App Engine 앱에 사용한 프로젝트와 동일한 프로젝트를 사용합니다. 원하는 경우 언제든지 새 프로젝트를 만들어 사용할 수 있습니다.

  3. {% dynamic if "no_credentials" in setvar.task_params %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %}{% dynamic if not setvar.redirect_url %}{% dynamic setvar redirect_url %}https://console.cloud.google.com{% dynamic endsetvar %}{% dynamic endif %}{% dynamic endif %}{% dynamic if setvar.in_henhouse_no_auth_whitelist %}{% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %}{% dynamic endif %}{% dynamic elif setvar.in_henhouse_service_account_whitelist %}{% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}SERVICE_ACCOUNT{% dynamic endsetvar %}{% dynamic endif %}{% dynamic endif %}{% dynamic if not setvar.service_account_roles and setvar.credential_type == "SERVICE_ACCOUNT" %}{% dynamic setvar service_account_roles %}{% dynamic endsetvar %}{% dynamic endif %}{% dynamic setvar console %}{% dynamic if "no_steps" not in setvar.task_params %}

  4. {% dynamic endif %}{% dynamic if setvar.api_list %}{% dynamic if setvar.in_henhouse_no_auth_whitelist or setvar.in_henhouse_service_account_whitelist %}GCP Console 프로젝트를 설정합니다.

    프로젝트 설정

    다음을 수행하려면 클릭:

    • 프로젝트를 만들거나 선택합니다.
    • 해당 프로젝트에 {% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}필요한{% dynamic endif %}{% dynamic if "," in setvar.api_list %} API{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} API{% dynamic endif %}를 사용 설정합니다.
    • {% dynamic if setvar.credential_type == 'SERVICE_ACCOUNT' %}
    • 서비스 계정을 만듭니다.
    • 비공개 키를 JSON으로 다운로드합니다.
    • {% dynamic endif %}

    언제든지 GCP Console에서 이 리소스를 보고 관리할 수 있습니다.

    {% dynamic else %}{% dynamic if "no_text" not in setvar.task_params %}{% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}필요한{% dynamic endif %}{% dynamic if "," in setvar.api_list %} APIs{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} API{% dynamic endif %}를 사용 설정합니다. {% dynamic endif %}

    {% dynamic if "," in setvar.api_list %} APIs{% dynamic else %} API{% dynamic endif %} 사용 설정

    {% dynamic endif %}{% dynamic endif %}{% dynamic if "no_steps" not in setvar.task_params %}
  5. {% dynamic endif %}{% dynamic endsetvar %}{% dynamic print setvar.console %}

  6. Google Cloud SDK를 다운로드하여 설치한 후 gcloud 도구를 초기화합니다.
    SDK 다운로드
  7. Kubernetes kubectl 도구를 다운로드하고 설치합니다.
  8. 또는 git 및 Cloud SDK가 설치되어 있는 Google Cloud Shell과 언어 지원 및 코드 편집기와 같은 다양한 기타 기능을 사용할 수 있습니다.
  9. git을 다운로드하고 설치합니다.
  10. Node.js 및 NPM을 다운로드하고 설치합니다. Node.js와 함께 일반적으로 NPM(Node 패키지 관리자)이 설치되지만 원할 경우 Yarn 패키지 관리자를 대신 설치하여 가이드 전체에서 Yarn을 사용할 수도 있습니다. 중요: 최상의 Windows 환경을 위해 npm install -g npm을 실행하여 최신 npm으로 업그레이드하세요. 최신 npm은 플랫 디렉토리 구조에 종속성을 설치하므로 설치 시 Windows 경로 이름의 최대 길이인 255자와 충돌하지 않습니다. 이전 버전의 npm을 계속 사용하려면 프로젝트를 드라이브의 루트(예: c:\)로 옮겨 경로 이름의 길이를 줄이세요.

App Engine 앱용 Dockerfile 만들기

앱에 사용할 Dockerfile을 만들려면 다음 단계를 따르세요.

  1. 애플리케이션 기본 디렉토리로 변경합니다.
  2. 다음 명령어를 실행하여 앱용 Dockerfile을 빌드합니다.
    gcloud beta app gen-config --custom
    app.yaml의 런타임 필드를 커스텀으로 변경하라는 메시지가 표시되면 Y를 선택하여 확인합니다.

Dockerfile에서 컨테이너 빌드

컨테이너를 빌드하려면 다음 단계를 따르세요.

  1. 현재 디렉토리가 Dockerfile이 포함된 App Engine 애플리케이션 디렉토리인지 확인합니다.

  2. gcloud 도구에서 사용하는 기본 프로젝트를 변경하여 Kubernetes Engine에서 앱을 실행하는 데 사용 중인 프로젝트를 가리키도록 합니다.

    gcloud config set project [YOUR-PROJECT-ID]
    

    [YOUR-PROJECT-ID]를 Kubernetes Engine 프로젝트 ID로 바꿉니다.

  3. 다음 명령어를 사용하여 컨테이너를 빌드합니다.

    gcloud container builds submit --tag gcr.io/[YOUR-PROJECT-ID]/[YOUR-CONTAINER-NAME] .
    

    [YOUR-PROJECT-ID]를 Kubernetes Engine 프로젝트의 프로젝트 ID로 바꾸고 [YOUR-CONTAINER-NAME]을 앱 컨테이너에 사용할 컨테이너 이름으로 바꿉니다.

  4. 컨테이너가 빌드될 때까지 기다립니다. 시간이 다소 걸릴 수 있습니다. 성공적으로 완료되면 다음과 같은 메시지가 표시됩니다.

    Created [https://cloudbuild.googleapis.com/v1/projects/YOUR-PROJECT-ID/builds/xxxxxxx-xxxx-xxx-xxx-xxxxxxxxxxxx].
    Logs are permanently available at [https://console.developers.google.com/logs/viewer?resource=build&project=YOUR-PROJECT-ID&filters=text:xxxx-xxx-xxx-xxxxxxxxxxxx]].
    
    ID  CREATE_TIME DURATION  SOURCE                                                     IMAGES                               STATUS
    xxxxxxx-xxxx-xxx-xxx-xxxxxxxxxxxx  2017-03-04T00:42:10+00:00  1M32S     gs://YOUR-PROJECT-ID_cloudbuild/source/xxxxxxx.08.tgz  gcr.io/YOUR-PROJECT-ID/YOUR-CONTAINER-NAME  SUCCESS<
    

    컨테이너 이름을 적어 둡니다. Kubernetes Engine에서 컨테이너를 실행할 때 이 이름을 지정해야 합니다.

Kubernetes Engine에서 앱 실행

애플리케이션이 포함된 컨테이너를 실행하려면 다음 단계를 따르세요.

  1. 클러스터를 만듭니다. 몇 분 정도 걸릴 수 있습니다.

    gcloud container clusters create [YOUR-CLUSTER-NAME]
    

    [YOUR-CLUSTER-NAME]을 클러스터에 지정할 이름으로 바꿉니다.

  2. 명령줄에서 컴퓨팅 영역을 설정합니다.

    gcloud config set compute/zone us-central1-b
    
  3. Kubernetes Engine kubectl 도구가 승인되었는지 확인합니다.

    gcloud container clusters get-credentials [YOUR-CLUSTER-NAME]
    

    표시되는 메시지에 따라 도구를 승인합니다.

  4. 앱이 포함된 컨테이너를 실행합니다.

    kubectl run [YOUR-DEPLOYMENT-NAME] --image=gcr.io/[YOUR-PROJECT-ID]/[YOUR-CONTAINER-NAME] --port=8080
    

    [YOUR-DEPLOYMENT-NAME]을 배포에 사용할 이름으로, [YOUR-PROJECT-ID]를 Kubernetes Engine 프로젝트 ID로, [YOUR-CONTAINER-NAME]을 앱용으로 만든 컨테이너 이름으로 바꿉니다.

  5. 공개적으로 액세스할 수 있도록 컨테이너를 노출합니다.

    kubectl expose deployment [YOUR-DEPLOYMENT-NAME] --type="LoadBalancer"
    

    [YOUR-DEPLOYMENT-NAME]을 이전 단계에서 사용한 이름으로 바꿉니다. 외부 IP를 확인하려면 몇 분 정도 기다려야 할 수 있습니다.

  6. 앱의 외부 IP 주소를 확인합니다.

    kubectl get service [YOUR-DEPLOYMENT-NAME]
    

    [YOUR-DEPLOYMENT-NAME]을 이전 단계에서 사용한 이름으로 바꿉니다. EXTERNAL IP 필드가 비어 있으면 잠시 기다린 다음 명령어를 다시 호출합니다.

  7. Kubernetes Engine에서 실행 중인 앱을 확인합니다.

    http://EXTERNAL-IP:8080
    

    EXTERNAL-IP를 이전 단계에서 얻은 외부 IP 주소로 바꿉니다.

Kubernetes Engine에 App Engine Node.js 앱을 성공적으로 배포하고 실행했습니다.

다음 단계

Kubernetes 및 kubectl 명령어에 대해 더 자세히 알고 싶을 수 있습니다. Kubernetes Engine은 컨테이너 관리, 배포, 확장에 Kubernetes를 사용합니다. Kubernetes에 대한 자세한 내용은 외부 Kubernetes 사이트에서 확인할 수 있습니다.

이 가이드는 Kubernetes 클러스터 관리용 명령줄 인터페이스인 kubectl을 사용합니다. kubectl에 대한 자세한 내용은 kubectl 참조 문서를 확인하세요.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Node.js 문서용 App Engine 가변형 환경