このガイドでは、GKE で App Engine フレキシブル環境のアプリケーションを実行する方法を示します。GKE でアプリケーションを実行するには、そのアプリケーション用に Dockerfile を作成する必要があります。そして、その Dockerfile を使用してコンテナを作成し、GKE でコンテナを実行します。コードを変更する必要はありません。
始める前に
このページの説明に沿って操作を行う前に、次の手順を実行してください。
App Engine フレキシブル環境にアプリケーションがデプロイされ、正常に動作していることを確認します。
以下の説明では、App Engine アプリに同じプロジェクトを使用します。必要であれば、いつでも新しいプロジェクトを作成し、使用できます。
GKE, Cloud Build API を有効にします。
Google Cloud CLI をダウンロードして、インストールした後、gcloud ツールを初期化します。
SDK をダウンロードKubernetes の
kubectl
ツールをダウンロードしてインストールします。または、git と gcloud CLI がすでにインストールされ、言語サポートやコードエディタなど他の多くの機能を備えている Google Cloud Shell を使用することもできます。
Node.js と NPM をダウンロードしてインストールします。通常は Node.js と一緒に NPM(Node Package Manager)がインストールされますが、代わりに Yarn Package Manager をインストールし、チュートリアル全体で Yarn を使用することもできます。 重要: Windows での最適な動作を実現するには、
npm install -g npm
を実行して最新バージョンの Node.js パッケージ マネージャー(npm
)にアップグレードしてください。最新のnpm
では、フラットなディレクトリ構造に依存関係がインストールされます。そのため通常は、インストールによって Windows でのパスの最大長である 255 文字の文字数との競合が生じることはありません。引き続き古いバージョンのnpm
を使用する場合は、プロジェクトをドライブのルート(例:C:\
)に移動することでパスの長さを短くできます。App Engine アプリに Dockerfile を作成する
Dockerfile の作成の説明に従って、アプリ用の Dockerfile を作成します。
Dockerfile からコンテナを構築する
コンテナを構築するには:
Dockerfile のある App Engine アプリケーション ディレクトリに移動します。
gcloud
ツールで使用されるデフォルトのプロジェクトを変更して、GKE でアプリを実行するために使用するプロジェクトをポイントするようにします。gcloud config set project [YOUR-PROJECT-ID]
[YOUR-PROJECT-ID]
を使用している GKE プロジェクト ID に置き換えます。次のコマンドでコンテナを構築します。
gcloud builds submit --tag gcr.io/[YOUR-PROJECT-ID]/[YOUR-CONTAINER-NAME] .
[YOUR-PROJECT-ID]
を使用する実際の GKE プロジェクトのプロジェクト ID に、[YOUR-CONTAINER-NAME]
をアプリコンテナとして使用するコンテナの名前に置き換えます。コンテナの完成を待ちます。時間がかかる場合もあります。正常に終了すると、次のようなメッセージが表示されます。
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 でのアプリの実行
アプリケーションを含むコンテナを実行するには:
クラスタを作成します(数分かかる場合があります)。
gcloud container clusters create [YOUR-CLUSTER-NAME]
[YOUR-CLUSTER-NAME]
をクラスタに付ける名前に置き換えます。コマンドラインでコンピューティング ゾーンを設定します。
gcloud config set compute/zone us-central1-b
GKE の
kubectl
ツールが承認されていることを確認します。gcloud container clusters get-credentials [YOUR-CLUSTER-NAME]
プロンプトの指示に沿って、ツールを承認します。
アプリを含むコンテナを実行します。
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]
をアプリ用に作成したコンテナの名前に置き換えます。一般公開用としてコンテナを公開します。
kubectl expose deployment [YOUR-DEPLOYMENT-NAME] --type="LoadBalancer" --port=8080
[YOUR-DEPLOYMENT-NAME]
を前の手順で使用した名前に置き換えます。外部 IP が表示されるまで、数分かかる場合があります。アプリの外部 IP アドレスを表示します。
kubectl get service [YOUR-DEPLOYMENT-NAME]
[YOUR-DEPLOYMENT-NAME]
を前の手順で使用した名前に置き換えます。EXTERNAL IP
フィールドが空の場合、しばらく待機してからコマンドを再度実行します。GKE で実行中のアプリを表示します。
http://EXTERNAL-IP:8080
EXTERNAL-IP
を前の手順でコピーした外部 IP アドレスに置き換えます。
これで、App Engine の Node.js アプリを GKE にデプロイして実行することができました。
次のステップ
必要に応じて、Kubernetes と
kubectl
コマンドの詳細を確認してください。Google Container Engine では、コンテナの管理、デプロイ、スケーリングに Kubernetes を使用します。Kubernetes について詳しくは、外部 Kubernetes サイトをご覧ください。このガイドでは、
kubectl
、コマンドライン インターフェースを使用して、Kubernetes クラスタを管理しています。kubectl
の詳細については、kubectl リファレンスをご覧ください。