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 CLI をダウンロードして、インストールした後、gcloud ツールを初期化します。
    SDK をダウンロード

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

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

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

  8. PHP 7.2 または 7.3 をインストールします。

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

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 PHP アプリが正常にデプロイされ、実行されます。

次のステップ

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

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