リソース定義@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はkubectl apply
コマンドでリソースを作成しているだけなため、デプロイ手法は、Deploymentの.spec.strategy
キーや、DaemonSetとStatefulSetの.spec.updateStrategy
キーの設定値に依存する。
ArgoCDのstrategy
オプションを使用することにより、これらのKubernetesリソース自体を冗長化し、より安全にapplyを行える。
▼ 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
▼ canary¶
カナリアリリースを使用して、新しいPodをデプロイする。
キー | 説明 |
---|---|
step |
カナリアリリースの手順を設定する。 ・ setWeight :新しいPodへの重み付けを設定する。・ pause :次の手順に移行せずに待機する。待機秒数を設定できる。 |
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
namespace: argocd
name: foo-canary-rollout
spec:
strategy:
# カナリアリリース
canary:
steps:
- setWeight: 25
- pause:
duration: 10
サービスメッシュツールでは手動カナリアリリースを実装できるが、これと連携し、サービスメッシュツールで自動カナリアリリースを実現できる。
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
namespace: argocd
name: foo-canary-rollout
spec:
strategy:
# カナリアリリース
canary:
steps:
canaryService: canary-virtual-service
stableService: stable-virtual-service
.spec.template¶
Deploymentのspec.template
キーと同じである。
Rolloutで管理したいPodを定義する。
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
namespace: argocd
name: foo-canary-rollout
spec:
template: ...