Google Kubernetes Engine クラスタにデプロイする

このドキュメントでは、アプリケーションを Google Kubernetes Engine クラスタにデプロイする方法について説明します。

Cloud Deploy では、コンテナベースのワークロードを任意の Google Kubernetes Engine クラスタにデプロイできます。GKE ターゲットにデプロイする場合、Cloud Deploy のすべての機能がサポートされています。

始める前に

この skaffold.yaml ファイル内の deploy スタンザには kubectl が含まれています。これは、Skaffold が Kubernetes(GKE)に対してレンダリングとデプロイを行うことを示します。そのアプリに使用するマニフェストもその下に表示されます。

ターゲット構成を作成する

各ターゲットは、デリバリー パイプライン YAML で構成することも、別のファイルで構成することもできます。また、同じファイルに複数のターゲットを構成できますが、それぞれ異なる kind: Target スタンザに存在する必要があります。

ターゲットの定義で、GKE クラスタを指す gke スタンザを作成します。

GKE クラスタを指定する構文は次のとおりです。

gke:
 cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]

この GKE リソース識別子では、次の要素を使用します。

  • [project_name] は、このクラスタを実行している Google Cloud プロジェクトの名前です。

    デプロイするクラスタは、デリバリー パイプラインと同じプロジェクトにある必要はありません

  • [location] は、クラスタが作成されたリージョンです。

  • [cluster_name] は、クラスタの作成時に付けられた名前です。

    この名前は、Google Cloud コンソールのプロジェクトのクラスタのリストで確認できます。

    Google Cloud コンソールのクラスタのリスト

GKE クラスタを指すターゲット構成の例を次に示します。

      apiVersion: deploy.cloud.google.com/v1
      kind: Target
      metadata:
       name: dev
      description: development cluster
      gke:
       cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster

Skaffold 構成を作成する

このセクションでは、GKE クラスタへのデプロイ時に使用するシンプルな Skaffold 構成の例について説明します。

GKE クラスタにデプロイする skaffold.yaml ファイルのを次に示します。

apiVersion: skaffold/v4beta7
kind: Config
metadata:
  name: gke-application
manifests:
  rawYaml:
  - deployment.yaml
deploy:
  kubectl: {}

Cloud Deploy での Skaffold の使用では、デリバリー パイプラインで Skaffold を使用する方法について説明します。

Kubernetes マニフェストを準備する

アプリケーションを GKE にデプロイするには、Cloud Deploy に 1 つ以上の Kubernetes マニフェストを指定します。このマニフェストをレンダリングしてから、アプリケーションをデプロイするターゲット クラスタに適用します。

そのようなマニフェストがない場合は、Cloud Deploy デリバリー パイプラインを使用してデプロイを試みる前に作成します。

Kustomize または Helm を使用して、マニフェストを作成できます。マニフェストがテンプレート化されていて、レンダリングが必要な場合、Kustomize または Helm を使用することもできます。

すべてを組み合わせる

Kubernetes マニフェスト、skaffold.yaml 構成、Cloud Deploy ターゲット定義を作成し、Cloud Deploy リソースとしてターゲットを登録したため、デリバリー パイプラインを呼び出して、リリースを作成し、パイプラインで定義されたターゲットの進行状況に沿って進めることができます。

限定公開クラスタにデプロイする

限定公開 GKE クラスタに、次の 2 つのオプションのいずれかを使用してアプリケーションをデプロイできます。

Virtual Private Cloud ネットワークを使用する

Virtual Private Cloud ネットワークに接続された限定公開 GKE クラスタにデプロイするターゲットを構成できます。

  1. 限定公開クラスタを作成する

    限定公開クラスタは、ノードと Pod がデフォルトで公共のインターネットから分離される VPC ネイティブ クラスタです。

    限定公開クラスタ ターゲットの内部 IP を使用する場合は、ターゲット構成gkeinternalIptrue に設定します。

  2. Cloud Build で、この限定公開クラスタへのデプロイに使用できるプライベート ワーカープールを作成します。

  3. そのプライベート プールを使用するように実行環境を構成します

    RENDER には、このプールを使用する必要があります。DEPLOYVERIFY にも使用できます。RENDERDEPLOY を使用する例を次に示します。

    executionConfigs:
    - usages:
      - RENDER
      - DEPLOY
      workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
    

詳細は、GKE 用 Identity Service を使用して Cloud Build プライベート プールから限定公開 GKE クラスタにアクセスするおよび Cloud Build プライベート プールで限定公開 GKE クラスタにアクセスするをご覧ください。

プロジェクトと権限に関する考慮事項

限定公開クラスタにデプロイできるプライベート ワーカープールを使用するようにターゲットを構成できます。ただし、リソースが別のプロジェクトにある場合は、注意が必要です。

  • Cloud Deploy とワーカープールが別々のプロジェクトにある場合

VPC にアクセスでき、ターゲットとは異なるプロジェクトにあるプライベート プールと通信するには、Cloud Deploy サービス エージェントに通信するための十分な権限が必要です。

実行サービス アカウントには、Cloud Storage バケットにアクセスするための権限も必要です。

  • ワーカープールとクラスタが別々のプロジェクトにある場合

限定公開 GKE クラスタが限定公開のワーカープールとは異なるプロジェクトにある場合、実行サービス アカウントには、クラスタが存在するプロジェクトと通信するための十分な権限が必要です。

GKE Enterprise ターゲットを使用してゲートウェイを接続する

Anthos ターゲット接続ゲートウェイを使用して、限定公開 GKE クラスタにデプロイするターゲットを構成できます。

このアプローチでは、Virtual Private Cloud または Virtual Private Network 接続を使用する必要はありません。

次のステップ