このページでは、デリバリー パイプライン内の各ターゲットの構成をレンダリングするように 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 の使用を検討してください。