GKE での App Engine アプリの実行

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

始める前に

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

  1. App Engine フレキシブル環境にアプリケーションがデプロイされ、正常に動作していることを確認します。

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

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

    API を有効にする

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

  5. Kubernetes の kubectl ツールをダウンロードしてインストールします。

  6. または、git と Cloud SDK がすでにインストールされている Google Cloud Shell を使用することもできます。Google Cloud Shell は、言語サポートやコードエディタなどの他の多くの機能も備えています。

  7. git をダウンロードしてインストールします

  8. PHP 5.6、7.0 または 7.1 をインストールします。

  9. 依存関係を管理するには、Composer をダウンロードし、Composer 実行ファイルをグローバルにインストールします。

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

    アプリに Docker ファイルを作成するには:

    1. アプリケーションのメイン ディレクトリに移動します。
    2. 次のコマンドを実行して、アプリケーションに Docker ファイルを作成します。
      gcloud beta app gen-config --custom
      app.yaml 内のランタイム フィールドを custom に変更するように求められたら、[Y] を選択します。

    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 run [YOUR-DEPLOYMENT-NAME] --image=gcr.io/[YOUR-PROJECT-ID]/[YOUR-CONTAINER-NAME] --port=8080
      

      [YOUR-DEPLOYMENT-NAME] をデプロイに使用する名前に、[YOUR-PROJECT-ID] を GKE プロジェクト 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. GKE で実行中のアプリを表示します。

      http://EXTERNAL-IP:8080
      

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

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

    次のステップ

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

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