このページでは、デリバリー パイプライン内の各ターゲットの構成をレンダリングするように Cloud Deploy を構成する方法について説明します。
Cloud Deploy は Skaffold を使用して Kubernetes マニフェストをレンダリングします。このサービスは、未加工のマニフェストと Helm、Kustomize、kpt などの高度なマニフェスト管理ツールのレンダリングをサポートしています。
レンダリング プロセスには 2 つのステージがあります。
マニフェスト管理ツールがマニフェストを生成します。
Skaffold は、マニフェストのイメージ参照を、リリースにデプロイするイメージに置き換えます。
このページでは、Helm と Kustomize を使用した構成の例を示します。
Skaffold を使用して構成を生成する
Skaffold 構成ファイル(skaffold.yaml
)がまだない場合は、Skaffold を使用して、リポジトリの内容に基づいて Skaffold を生成できます。
Google Cloud CLI を使用して Skaffold をインストールします。
gcloud components install skaffold
マニフェストを含むリポジトリで
skaffold init
を実行します。skaffold init --skip-build
このコマンドにより、リポジトリに skaffold.yaml
ファイルが作成されます。このファイルは、そのリポジトリのマニフェストを参照します。内容は次のようになります。
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: sample-app
manifests:
rawYaml:
- k8s-manifests/deployment.yaml
- k8s-manifests/rbac.yaml
- k8s-manifests/redis.yaml
- k8s-manifests/service.yaml
未加工マニフェストのレンダリング
未加工のマニフェストは Helm や Kustomize などのツールによって管理されないマニフェストであるため、ハイドレートやクラスタへのデプロイの前に前処理は不要です。
デフォルトでは、Cloud Deploy は skaffold render
を使用して Kubernetes マニフェストをレンダリングし、タグ付けされていないイメージ名を、デプロイするコンテナ イメージのタグ付きイメージ名に置き換えます。リリースを昇格すると、Cloud Deploy は skaffold apply
を使用してマニフェストを適用し、イメージを Google Kubernetes Engine クラスタにデプロイします。
基本構成の manifests
スタンザは次のようになります。
manifests:
rawYaml:
- PATH_TO_MANIFEST
ここに渡すことができる値の詳細については、Skaffold のドキュメントをご覧ください。
Helm を使用したレンダリング
Cloud Deploy を使用して Helm チャートをレンダリングできます。これを行うには、Skaffold プロファイルの deploy
スタンザに Helm チャートに関する詳細情報を含めます。
各定義は次のようになります。
apiVersion: skaffold/v4beta7
kind: Config
manifests:
helm:
releases:
- name: RELEASE_NAME
chartPath: PATH_TO_HELM_CHART
ここで
RELEASE_NAME は、このリリースの Helm チャート インスタンスの名前です。
PATH_TO_HELM_CHART は、パッケージ化された Helm チャートまたは解凍された Helm チャート ディレクトリへのローカルパスです。
Skaffold のドキュメントに記載されているように、追加の Helm 構成オプションを使用できます。
Kustomize を使用したレンダリング
Cloud Deploy では Kustomize を使用できます。これを行うには、skaffold.yaml
プロファイル構成の deploy
スタンザ内から Kustomization ファイルを参照します。
Kustomize を使用するターゲットごとに、skaffold.yaml
の対応する profile
の下に個別の Kustomize 構成を含めます。
各定義は次のようになります。
apiVersion: skaffold/v4beta7
kind: Config
manifests:
kustomize:
paths:
- PATH_TO_KUSTOMIZE
ここで
PATH_TO_KUSTOMIZE は Kustomization ファイルを指定します。デフォルト値は ["."]
です
Skaffold のドキュメントで説明されているように、追加の Kustomize 構成オプションを使用できます。
ターゲットごとに異なるマニフェストの構成
多くの場合、各ターゲットには若干異なる構成が必要です。たとえば、本番環境のデプロイには、ステージング デプロイよりも多くのレプリカがある場合があります。
各バリエーションを異なる Skaffold プロファイルとして指定すると、ターゲットごとに異なるマニフェスト セットをレンダリングできます。
未加工マニフェストを含むプロファイル
未加工のマニフェストを使用する場合は、ターゲットに応じて Cloud Deploy を別のファイルに指すことができます。次のように構成できます。
apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: prod
manifests:
rawYaml:
- prod.yaml
- name: staging
manifests:
rawYaml:
- staging.yaml
Kustomize を使用したプロファイル
Kustomize を使用してステージングと本番環境のプロファイルが異なる skaffold.yaml
の例を示します。各プロファイルは異なる Kustomization を指定します。
apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: prod
manifests:
kustomize:
paths:
- environments/prod
- name: staging
manifests:
kustomize:
paths:
- environments/staging
デリバリー パイプラインで参照されるプロファイル
skaffold.yaml
で定義されている次のプロファイルは、ターゲットごとにデリバリー パイプライン構成で参照されます。
serialPipeline:
stages:
- targetId: staging-target
profiles:
- staging
- targetId: prod-target
profiles:
- prod
次のステップ
- Cloud Deploy デリバリー パイプラインの構成の詳細を確認する。
- Cloud Deploy Skaffold プロファイルのチュートリアルを試す
- Kustomize の詳細を確認する。
- Helm の詳細を学習する。
- Kpt の詳細を学習する
- Helm チャートや Kustomization などのアーティファクトを保存するには、Artifact Registry の使用を検討してください。