GKE で App Engine アプリを実行する

このガイドでは、GKE で App Engine フレキシブル環境のアプリを実行する方法について説明します。GKE でアプリを実行するには、Dockerfile を作成し、Cloud Build でコンテナをビルドして、そのコンテナを GKE で実行する必要があります。コードを変更する必要はありません。

始める前に

このページの説明に沿って操作を行う前に、次の手順を行ってください。

  1. App Engine フレキシブル環境でアプリがデプロイされ、正常に実行されることを確認します。

  2. 以下の説明では、App Engine アプリケーションに同じプロジェクトを使用します。必要であれば、いつでも新しいプロジェクトを作成し、使用できます。

  3. GKE, Cloud Build API を有効にします。

    API を有効にする

  4. Google Cloud CLI をダウンロードしてインストールし、gcloud ツールを初期化します: Google Cloud SDK をダウンロードします。

    または、Cloud Shell(gcloud CLI に付属)gitなど、プリインストールされている特徴(言語サポート、ツール、エディタなど)を使用できます。

  5. kubectl コマンドライン ツールをインストールします。

    gcloud components install kubectl
    
  6. git をダウンロードしてインストールします

App Engine アプリに Dockerfile を作成する

Dockerfile の作成の説明に従って、アプリ用の Dockerfile を作成します。

Dockerfile からコンテナを構築する

コンテナを構築するには:

  1. Dockerfile が含まれる App Engine アプリのディレクトリにいることを確認します。

  2. gcloud ツールで使用されるデフォルトのプロジェクトを変更して、GKE でアプリを実行するために使用するプロジェクトをポイントするようにします。

    gcloud config set project [YOUR-PROJECT-ID]
    

    [YOUR-PROJECT-ID] を使用している GKE プロジェクト ID に置き換えます。

  3. 次のコマンドでコンテナを構築します。

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

    [YOUR-PROJECT-ID] を使用する実際の GKE プロジェクトのプロジェクト 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<
    

    コンテナ名をメモします。GKE で実行する際に、この名前を指定する必要があります。

GKE でのアプリの実行

アプリケーションを含むコンテナを実行するには:

  1. クラスタを作成します(数分かかる場合があります)。

    gcloud container clusters create [YOUR-CLUSTER-NAME]
    

    [YOUR-CLUSTER-NAME] をクラスタに付ける名前に置き換えます。

  2. コマンドラインでコンピューティング ゾーンを設定します。

    gcloud config set compute/zone us-central1-b
    
  3. GKE の kubectl ツールが承認されていることを確認します。

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

    プロンプトの指示に沿って、ツールを承認します。

  4. アプリを含むコンテナを実行します。

    kubectl create deployment [YOUR-DEPLOYMENT-NAME] --image=gcr.io/[YOUR-PROJECT-ID]/[YOUR-CONTAINER-NAME]
    

    [YOUR-DEPLOYMENT-NAME] をデプロイに使用する名前に、[YOUR-PROJECT-ID] を GKE プロジェクト ID に、[YOUR-CONTAINER-NAME] をアプリ用に作成したコンテナの名前に置き換えます。

  5. 一般公開用としてコンテナを公開します。

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

    [YOUR-DEPLOYMENT-NAME] を前の手順で使用した名前に置き換えます。外部 IP が表示されるまで、数分かかる場合があります。

  6. アプリの外部 IP アドレスを表示します。

    kubectl get service [YOUR-DEPLOYMENT-NAME]
    

    [YOUR-DEPLOYMENT-NAME] を前の手順で使用した名前に置き換えます。EXTERNAL IP フィールドが空の場合、しばらく待機してからコマンドを再度実行します。

  7. GKE で実行中のアプリを表示します。

    http://EXTERNAL-IP:8080
    

    EXTERNAL-IP を前の手順でコピーした外部 IP アドレスに置き換えます。

GKE に App Engine アプリが正常にデプロイされ、実行されます。

次のステップ

必要に応じて、Kubernetes と kubectl コマンドの詳細を確認してください。Google Container Engine では、コンテナの管理、デプロイ、スケーリングに Kubernetes を使用します。Kubernetes について詳しくは、外部 Kubernetes サイトをご覧ください。

このガイドでは、kubectl、コマンドライン インターフェースを使用して、Kubernetes クラスタを管理しています。kubectl の詳細については、kubectl リファレンスをご覧ください。