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

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

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

始める前に

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

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

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

ターゲットは、配信パイプラインと同じプロジェクトとリージョンで定義する必要があります。ただし、サービス アカウントがそれらのプロジェクトにアクセスできる限り、ターゲットがデプロイされるクラスタは、異なるプロジェクトとリージョンに配置できます。

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

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

この GKE リソース ID では、次の要素が使用されます。

  • [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 クラスタのプロキシを指定できます。これは、プロキシ経由でのみクラスタにアクセスするように設定されている組織を対象としています。

これを行うには、ターゲット構成の gke スタンザに proxyUrl プロパティを追加します。

gke:
 cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster
 proxyUrl: [URL]

ここで、URL はプロキシの URL です。

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

限定公開 GKE クラスタにアプリケーションをデプロイするには、次のいずれかの方法を使用します。

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 ターゲットと Connect Gateway を使用する

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

このアプローチでは、Virtual Private Cloud または仮想プライベート ネットワーク接続を使用する必要はありません。

次のステップ