このドキュメントでは、アプリケーションを Google Kubernetes Engine クラスタにデプロイする方法について説明します。
Cloud Deploy を使用すると、コンテナベースのワークロードを任意の Google Kubernetes Engine クラスタにデプロイできます。GKE ターゲットにデプロイする場合、Cloud Deploy のすべての機能がサポートされます。
始める前に
デプロイ先の GKE クラスタが 1 つ以上ある。
デプロイする GKE クラスタがない場合は、作成できます。
実行サービス アカウントに必要なロールと権限があることを確認します。
この skaffold.yaml ファイルの deploy スタンザには kubectl が含まれています。これは、Skaffold が Kubernetes(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 コンソールのプロジェクトのクラスタのリストで確認できます。

次に、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 クラスタのプロキシを指定できます。これは、HTTP プロキシ経由でのみクラスタにアクセスするように設定されている組織を対象としています。
これを行うには、ターゲット構成の gke スタンザに proxyUrl プロパティを追加します。
gke:
cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster
proxyUrl: [URL]
ここで、URL はプロキシの URL です。
限定公開クラスタにデプロイする
次の 3 つのオプションのいずれかを使用して、限定公開 GKE クラスタにアプリケーションをデプロイできます。
DNS エンドポイントを使用する
これは、プライベート クラスタに接続する最も簡単な方法です。
ターゲット構成の
gkeでdnsEndpointをtrueに設定します。クラスタに IP ベースのエンドポイントが構成されていない場合は、この手順をスキップできます。Cloud Deploy は、コントロール プレーンの唯一のエンドポイントである DNS エンドポイントにデフォルトで接続します。
Virtual Private Cloud ネットワークを使用する
Virtual Private Cloud ネットワークに接続されたプライベート GKE クラスタにデプロイするようにターゲットを構成できます。
-
限定公開クラスタは、ノードと Pod がデフォルトで公共のインターネットから隔離されている VPC ネイティブ クラスタです。
限定公開クラスタ ターゲットの内部 IP を使用する場合は、ターゲット構成の
gkeでinternalIpをtrueに設定します。 Cloud Build で、このプライベート クラスタへのデプロイに使用できるプライベート ワーカープールを作成します。
そのプライベート プールを使用するように実行環境を構成します。
このプールは
RENDERに使用する必要があります。DEPLOYとVERIFYにも使用できます。RENDERとDEPLOYを使用した例を次に示します。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 接続クラスタのターゲットと Connect Gateway を使用する
GKE 接続クラスタと Connect Gateway を使用するターゲットを使用して、限定公開 GKE クラスタにデプロイするターゲットを構成できます。
このアプローチでは、Virtual Private Cloud または仮想プライベート ネットワーク接続を使用する必要はありません。
次のステップ
デリバリー パイプラインを呼び出してリリースを作成する
Cloud Deploy ターゲットの構成の詳細を確認する
Cloud Deploy の実行環境について学習する。
GKE の詳細を確認する