コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。
クイックスタート: Google Cloud Deploy を使用してアプリを GKE にデプロイする

Google Cloud Deploy を使用してアプリを GKE にデプロイする

このページでは、Google Cloud Deploy を使用して、echoserver という名前のサンプル アプリケーション イメージを一連の 2 つの Google Kubernetes Engine クラスタに配信する方法を説明します。

このクイックスタートでは、以下の操作を行います。

  1. 2 つのクラスタを作成します。

  2. Skaffold 構成と Kubernetes マニフェストを作成して、デプロイする(ビルド済みの)コンテナ イメージを指定します。

  3. Google Cloud Deploy デリバリー パイプラインとデプロイ ターゲットを定義します。これらは、2 つのクラスタを指します。

    ターゲットは、デリバリー パイプラインと同じファイルで定義することも、別のファイルで定義することもできます。このクイックスタートではわかりやすくするため、同じファイルに配置します。

  4. リリースを作成して配信パイプラインをインスタンス化します。リリースは、最初のターゲットに自動的にデプロイされます。

  5. リリースを 2 番目のターゲットにプロモートします。

  6. 両方のロールアウトをコンソールに表示します。

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。

  4. Google Cloud Deploy, Cloud Build, GKE, and Cloud Storage API を有効にします。

    API を有効にする

  5. Google Cloud CLI をインストールして初期化します。
  6. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  7. Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。

  8. Google Cloud Deploy, Cloud Build, GKE, and Cloud Storage API を有効にします。

    API を有効にする

  9. Google Cloud CLI をインストールして初期化します。
  10. デフォルトの Compute Engine サービス アカウントに十分な権限があることを確認します。

    サービス アカウントに必要な権限がすでに付与されている可能性があります。以下の手順は、デフォルトのサービス アカウントに対する自動のロール付与を無効にするプロジェクトに含まれます。

    1. clouddeploy.jobRunner ロールを追加します。

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/clouddeploy.jobRunner"
      

    2. Kubernetes デベロッパーの権限を追加します。

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
          --role="roles/container.developer"
      

      これらのロールを追加できない場合は、プロジェクト管理者にお問い合わせください。

Google Kubernetes Engine クラスタを作成する

qsdevqsprod の 2 つのクラスタを作成します。デフォルトの設定を使用します。clusters' Kubernetes API エンドポイントは、公共のインターネットからネットワーク到達可能である必要があります。 GKE クラスタには、デフォルトで外部からのアクセスが可能です。

gcloud container clusters create-auto quickstart-cluster-qsdev --project=PROJECT_ID --region=us-central1 && gcloud container clusters create-auto quickstart-cluster-qsprod --project=PROJECT_ID --region=us-central1

Skaffold 構成と Kubernetes マニフェストを準備する

Google Cloud Deploy では、Skaffold を使用して、デプロイする対象と、個別のターゲットに対して適切にデプロイする方法の詳細が提供されます。

このクイックスタートでは、skaffold.yaml ファイルを作成して、サンプルアプリのデプロイに使用する Kubernetes マニフェストを指定します。

  1. ターミナル ウィンドウを開きます。

  2. deploy-quickstart という名前で新しいディレクトリを作成し、そのディレクトリに移動します。

    mkdir deploy-quickstart
    cd deploy-quickstart
    
  3. 次の内容のファイルを skaffold.yaml という名前で作成します。

    apiVersion: skaffold/v2beta16
    kind: Config
    deploy:
      kubectl:
        manifests:
          - k8s-*
    

    このファイルは最小限の Skaffold 構成で、マニフェストを識別します。このクイックスタートでは、ファイルを作成します。ただし、シンプルな非本番環境アプリケーション用に、Google Cloud Deploy が作成することもできます。

    このファイルの詳細については、skaffold.yaml リファレンスをご覧ください。

  4. 次の内容のファイルを k8s-pod.yaml という名前で作成します。

    apiVersion: v1
    kind: Pod
    metadata:
      name: getting-started
    spec:
      containers:
      - name: echoserver
        image: my-app-image
    

    このファイルはシンプルな Kubernetes マニフェストで、アプリケーションをデプロイするためにクラスタに適用されます。

デリバリー パイプラインとターゲットを作成する

パイプラインとターゲットは、1 つのファイルでも別のファイルでも定義できます。このクイックスタートでは、ファイルを 1 つ作成します。

  1. deploy-quickstart ディレクトリに、以下の内容の新しいファイル clouddeploy.yaml を作成します。

    apiVersion: deploy.cloud.google.com/v1
    kind: DeliveryPipeline
    metadata:
     name: my-demo-app-1
    description: main application pipeline
    serialPipeline:
     stages:
     - targetId: qsdev
       profiles: []
     - targetId: qsprod
       profiles: []
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: Target
    metadata:
     name: qsdev
    description: development cluster
    gke:
     cluster: projects/PROJECT_ID/locations/us-central1/clusters/quickstart-cluster-qsdev
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: Target
    metadata:
     name: qsprod
    description: production cluster
    gke:
     cluster: projects/PROJECT_ID/locations/us-central1/clusters/quickstart-cluster-qsprod
    
  2. Google Cloud Deploy サービスにパイプラインとターゲットを登録します。

    gcloud deploy apply --file clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
    

    これで、ターゲットを持つパイプラインが完成し、アプリケーションを最初のターゲットにデプロイする準備が整いました。

  3. パイプラインとターゲットを確認します。

    Console で、Google Cloud Deploy の [デリバリー パイプライン] ページに移動し、使用可能なデリバリー パイプラインのリストを表示します。

    [デリバリー パイプライン] ページを開く

    作成したデリバリー パイプラインが表示され、[ターゲット] 列に 2 つのターゲットが一覧表示されます。

    Google Cloud コンソールでのデリバリー パイプラインの可視化

リリースを作成する

リリースとは、デプロイされる変更を表す中央の Google Cloud Deploy リソースです。デリバリー パイプラインは、そのリリースのライフサイクルを定義します。そのライフサイクルの詳細については、Google Cloud Deploy サービスのアーキテクチャをご覧ください。

deploy-quickstart ディレクトリから次のコマンドを実行して、デプロイするコンテナ イメージを表す release リソースを作成します。

gcloud deploy releases create test-release-001 \
  --project=PROJECT_ID \
  --region=us-central1 \
  --delivery-pipeline=my-demo-app-1 \
  --images=my-app-image=k8s.gcr.io/echoserver:1.4

このリリースは最初のリリース(進行状況の最初のターゲットにデプロイするため)であるため、Google Cloud Deploy では rollout リソースも自動的に作成されます。アプリケーションは、進行中の最初のターゲットに自動的にデプロイされます。

リリースを昇格する

  1. [デリバリー パイプライン] ページで、my-demo-app-1 パイプラインをクリックします。

    [デリバリー パイプライン] ページを開く

    デリバリー パイプラインの詳細ページには、デリバリー パイプラインの進行状況がグラフで表示されます。この例では、リリースが qsdev ターゲットにデプロイされたことを示しています。

    Google Cloud コンソールでのデリバリー パイプラインの可視化

  2. デリバリー パイプラインの可視化の最初のターゲットで、[Promote] をクリックします。

    [リリースをプロモート] ダイアログが表示されます。プロモートしているターゲットの詳細が表示されます。

  3. [Promote] をクリックします。

    リリースが qsprod へのデプロイ待ちになる。デプロイが完了すると、デリバリー パイプラインの可視化によりデプロイ済みとして表示されます。

    Google Cloud コンソールでのデリバリー パイプラインの可視化

コンソールで結果を表示する

  1. Console で、Google Cloud Deploy の [デリバリー パイプライン] ページに移動し、my-demo-app-1 デリバリー パイプラインを表示します。

    [デリバリー パイプライン] ページを開く

  2. デリバリー パイプラインの名前「my-demo-app-1」をクリックします。

    パイプラインの可視化には、アプリのパイプラインの進行状況が表示されます。

    Google Cloud コンソールでのデリバリー パイプラインの可視化

    リリースは、[デリバリー パイプラインの詳細] の [リリース] タブに表示されます。

  3. リリース名(test-release-001)をクリックします。

    [ロールアウト] に、ロールアウトが表示されます。ロールアウトをクリックすると、デプロイログなどの詳細を確認できます。

    Google Cloud Console でのロールアウト

クリーンアップ

このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。

  1. qsdev クラスタを削除します。

    gcloud container clusters delete quickstart-cluster-qsdev --region=us-central1 --project=PROJECT_ID
    
  2. qsprod クラスタを削除します。

    gcloud container clusters delete quickstart-cluster-qsprod --region=us-central1 --project=PROJECT_ID
    
  3. デリバリー パイプラインを削除します。

    gcloud deploy delivery-pipelines delete my-demo-app-1 --force --region=us-central1 --project=PROJECT_ID
    

    このコマンドを実行すると、デリバリー パイプライン自体と、そのパイプライン用に Google Cloud Deploy によって作成されたすべての release リソースと rollout リソースが削除されます。

  4. Google Cloud Deploy によって作成された Cloud Storage バケットを削除します。

    1 つは _clouddeploy で終わり、もう 1 つは [region].deploy-artifacts.[project].appspot.com で終わります。

    Cloud Storage ブラウザページを開く

これでクイックスタートの演習はすべて終了です。

次のステップ