Google Kubernetes Engine クイックスタート

このクイックスタートでは、Google Cloud Shell を使用して、Go で記述されたシンプルなウェブ アプリケーションが格納された構築済みの Docker コンテナ イメージをデプロイする方法について説明します。

始める前に

次の手順で Google Kubernetes Engine API を有効にします。
  1. Google Cloud Platform Console で Kubernetes Engine のページにアクセスします。
  2. プロジェクトを作成または選択します。
  3. API と関連サービスが有効になるのを待ちます。これには数分かかることがあります。
  4. プロジェクトの課金を有効にします。

    課金の有効化

このチュートリアルで使用されている次のコマンドライン ツールをインストールします。

  • gcloud は Kubernetes Engine クラスタの作成と削除に使用されます。gcloudGoogle Cloud SDK に含まれています。
  • kubectl は、Kubernetes Engine で使用されるクラスタ オーケストレーション システムである Kubernetes を管理するために使用されます。gcloud を使用して kubectl をインストールできます。
    gcloud components install kubectl

Google Cloud Shell を使用する

kubectl をすぐに使うには、Google Cloud Shell を使用します。これは、gcloud および kubectl のコマンドライン ツールと一緒にプリインストールされます。Google Cloud Shell を起動する手順は次のとおりです。

  1. Google Cloud Platform Console に移動します。
  2. コンソール ウィンドウの上部にある「Google Cloud Shell をアクティブにする」ボタンをクリックします。

    Google Cloud Platform Console 

    コンソールの一番下にある新しいフレームの中で Cloud Shell セッションが開き、コマンドライン プロンプトが表示されます。

    Cloud Shell セッション

gcloud コマンドライン ツールのデフォルトの設定

デフォルトのコンピューティング ゾーンを設定します。次のコマンドでは、デフォルトのゾーンが us-central1-b として設定されます。

gcloud config set compute/zone us-central1-b

コンテナ イメージを実行する

次の手順に沿ってクラスタを作成し、Google Container Registry で事前作成されたコンテナ イメージを使用して、サンプルの「Hello App」ウェブコンテナを実行します。サンプルアプリのソースコードを表示する場合は、Hello App コードレビューをご覧ください。

  1. クラスタを作成します(このステップには数分かかることがあります)。

    gcloud container clusters create example-cluster
    

  2. コンテナを実行します。

    kubectl run hello-web --image=gcr.io/google-samples/hello-app:1.0 --port=8080
    
  3. コンテナを公開します。kubectltype="LoadBalancer" オプションは、通常のロードバランサの料金に従って課金されるロードバランサをコンテナ用に提供するよう Google Cloud Platform に対して要求しています。

    kubectl expose deployment hello-web --type="LoadBalancer"
    
  4. hello-web アプリの外部 IP アドレスをコピーします。

    kubectl get service hello-web
    
  5. アプリを表示します(EXTERNAL-IP を前のステップで取得した外部 IP アドレスに置き換えます)。

    http://EXTERNAL-IP:8080
    

クリーンアップ

このクイックスタートで使用したリソースについて、Google Cloud Platform アカウントに課金されないようにする手順は次のとおりです。

  1. 作成したサービスを削除して、サービスを提供するようにプロビジョニングされた負荷分散リソースを削除します。

    kubectl delete service hello-web
    
  2. サービスが終了するまで数分待ってから、次のコマンドを使用して作成したクラスタを削除します。

    gcloud container clusters delete example-cluster
    

オプション: Hello App コードレビュー

Hello App はシンプルなウェブサーバー アプリケーションで、2 つのファイルで構成されています。

このセクションでは、アプリケーションのソースコードについて説明します。

main.go

このファイルは、Go プログラミング言語で記述されたシンプルなウェブサーバー実装です。このサーバーは、HTTP リクエストに「Hello, world!」と応答します。メッセージで応答するハンドラが登録されています。

package main

import (
  "fmt"
  "log"
  "net/http"
  "os"
)

func main() {
  port := "8080"
  if fromEnv := os.Getenv("PORT"); fromEnv != "" {
    port = fromEnv
  }

  server := http.NewServeMux()
  server.HandleFunc("/", hello)
  log.Printf("Server listening on port %s", port)
  log.Fatal(http.ListenAndServe(":"+port, server))
}

func hello(w http.ResponseWriter, r *http.Request) {
  log.Printf("Serving request: %s", r.URL.Path)
  host, _ := os.Hostname()
  fmt.Fprintf(w, "Hello, world!\n")
  fmt.Fprintf(w, "Hostname: %s\n", host)
}

Dockerfile

Dockerfile には、構築するイメージを定義し、アプリがリッスンするポートを指定します。

FROM golang:1.8-alpine
ADD . /go/src/hello-app
RUN go install hello-app

FROM alpine:latest
COPY --from=0 /go/bin/hello-app .
ENV PORT 8080
CMD ["./hello-app"]

オプション: gcloud を使用してこのチュートリアルをローカルで実行する

Cloud Shell の代わりに、gcloud コマンドライン ツールをローカルのパソコンにインストールすることができます。Kubernetes Engine API は、gcloud コマンドライン ツールを使用してクラスタ オペレーションと認証情報の管理を行います。

  1. gcloud コマンドライン ツールに含まれている Google Cloud SDK をインストールします。
  2. gcloud コマンドライン ツールを使用して、kubectl コマンドライン ツールをインストールします。

    gcloud components install kubectl
    
  3. gcloud コマンドラインのデフォルトのプロジェクトをプロジェクト ID として設定し、デフォルトのコンピューティング ゾーンus-central1-b として設定します。

    gcloud config set project PROJECT_ID
    gcloud config set compute/zone us-central1-b
    
  4. コンテナ イメージを実行するセクションの手順に沿います。

次のステップ

以下のチュートリアルのいずれかを使用し、アプリケーションのビルドからデプロイまでを行ってみてください。

アプリケーションを独自に構築する場合は、最初にコンテナ クラスタを作成します。

Kubernetes Engine では、コンテナの管理、デプロイ、スケーリングに Kubernetes を使用します。Kubernetes について詳しくは、外部 Kubernetes サイトをご覧ください。

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

フィードバックを送信...

Kubernetes Engine ドキュメント