リソース定義@Argo Rollouts¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. Rollout¶
Rollout とは¶
Kubernetes の Deployment に代わって、Pod のライフサイクルを管理する。
Deployment よりも複雑な手法で Pod をデプロイできる。
.spec.analysis¶
▼ analysis とは¶
Progressive Delivery を使用する場合、詳細を設定する。
▼ successfulRunHistoryLimit¶
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
namespace: argocd
name: foo-rollout
spec:
analysis:
successfulRunHistoryLimit: 10
▼ unsuccessfulRunHistoryLimit¶
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
namespace: argocd
name: foo-rollout
spec:
analysis:
unsuccessfulRunHistoryLimit: 10
.spec.strategy¶
▼ strategy とは¶
デプロイ手法を設定する。
大前提として、そもそも ArgoCD は Kubernetes リソースを同期するため、通常の Kubernetes リソースのデプロイ手法は、Deployment の .spec.strategy キーや、DaemonSet と StatefulSet の .spec.updateStrategy キーの設定値に依存する。
一方、Rollout の .spec.strategy キーを使用すると、ブルー/グリーンデプロイメントやカナリアリリースを実装できる。
▼ blueGreen¶

ブルー/グリーンデプロイメントを使用して、新しい Pod をデプロイする。
| 設定項目 | 説明 |
|---|---|
activeService |
現環境へのルーティングに使用する Service を設定する。 |
autoPromotionEnabled |
現環境から新環境への自動切り替えを有効化するか否かを設定する。もし無効化した場合、autoPromotionSeconds の秒数だけ切り替えを待機する。 |
autoPromotionSeconds |
現環境から新環境への切り替えを手動で実行する場合、切り替えを待機する最大秒数を設定する。最大秒数が経過すると、自動的に切り替わってしまうことに注意する。 |
previewReplicaCount |
新環境の Pod 数を設定する。 |
previewService |
新環境へのルーティングに使用する Service を設定する。 |
scaleDownDelaySeconds |
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
namespace: argocd
name: foo-blue-green-rollout
spec:
strategy:
# ブルー/グリーンデプロイメイト
blueGreen:
activeService: foo-active-service
previewService: foo-preview-service
previewReplicaCount: 1
autoPromotionEnabled: "true"
scaleDownDelaySeconds: 30
template:
# ここで Deployment と同じような設定を実装する
▼ canary¶

カナリアリリースを使用して、新しい Pod をデプロイする。
| キー | 説明 |
|---|---|
steps |
カナリアリリースの手順を設定する。 ・ setWeight:新しい Pod への重み付けを設定する。・ pause:次の手順に移行せずに待機する。待機秒数を設定できる。 |
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
namespace: argocd
name: foo-canary-rollout
spec:
strategy:
# カナリアリリース
canary:
steps:
- setWeight: 25
- setWeight: 75
- pause:
duration: 10
template:
# ここで Deployment と同じような設定を実装する
Istio では、VirtualService と DestinationRule を使用してカナリアリリースを実装できる。
Argo Rollouts と Istio を連携すると、VirtualService の振り分け率を段階的に変更するカナリアリリースを自動化できる。
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
namespace: argocd
name: foo-canary-rollout
spec:
strategy:
# カナリアリリース
canary:
canaryService: foo-canary-service
stableService: foo-stable-service
trafficRouting:
istio:
virtualService:
name: foo-virtual-service
routes:
- primary
steps:
- setWeight: 25
- pause:
duration: 10
.spec.template¶
Deployment の spec.template キーと同じである。
Rollout で管理したい Pod を定義する。
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
namespace: argocd
name: foo-canary-rollout
spec:
template: ...