ブルー/グリーンOKEデプロイメント
Kubernetes Engine (OKE)のブルー/グリーン・リリース戦略を使用して、デプロイメント・パイプラインを作成します
前提条件
前提条件を次に示します。
- デプロイメント・パイプライン、デプロイ先のKubernetesクラスタ環境およびアーティファクトが必要です。アーティファクトは、インラインで定義するか、アーティファクト・レジストリに配置できます。
- OKEクラスタにはデフォルトでイングレス・コントローラがないため、ブルー/グリーン・デプロイメント戦略用にNGINXイングレス・コントローラを設定する必要があります。NGINXイングレス名は、Kubernetesマニフェストで定義する必要があります。イングレス・コントローラは、イングレス仕様に基づいてトラフィックをルーティングするKubernetesアプリケーションです。NGINXイングレス・コントローラは、ロード・バランシングのためにイングレス・リソースを監視します。イングレス・リソースを更新することで、トラフィックはステージング環境から本番環境にシフトされます。詳細は、クラスタでのイングレス・コントローラの設定を参照してください。
- ブルーとグリーンのデプロイメント環境を定義するには、Kubernetesクラスタに2つのネームスペースを作成する必要があります。ネームスペースはコンソールで指定するため、Kubernetesマニフェストに指定しないでください。ネームスペースの詳細は、Kubernetesのドキュメントを参照してください。
デプロイメント後に非アクティブまたはスタンバイ・ネームスペースをスケール・ダウンするには、問題を回避するために少なくとも1つのレプリカを保持する必要があります。
デプロイメント・パイプラインの動的グループおよびポリシーの作成については、デプロイメント・パイプライン・ポリシーを参照してください。詳細は、DevOps IAMポリシーを参照してください。
Oracle Cloudコンソール、REST APIおよびCLIを使用したDevOpsへのアクセスについては、DevOpsへのアクセスを参照してください。
- ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「DevOps」で、「プロジェクト」をクリックします。
- プロジェクトおよびデプロイメント・パイプラインを選択します。
- パイプラインにステージを追加するには、「+」アイコンをクリックし、「ステージの追加」を選択します。
- ステージ・タイプとして「ブルー/グリーン戦略」を選択し、「次」をクリックします。
- デプロイメント・タイプとして「OKE」を選択します。
- ステージの名前と説明を入力します。説明の追加はオプションです。
- 「環境」で、既存のクラスタ環境を選択します。
- 選択したOKE環境に関連付けられているネームスペースAおよびネームスペースBの既存のネームスペースを入力します。たとえば、
blue-env, green-env
です。ネームスペースは、OKEクラスタ内にブルーとグリーンのデプロイメント環境を定義するために使用されます。
- 「アーティファクトの選択」をクリックし、DevOpsプロジェクトから1つ以上のアーティファクト・リソースを選択します。
DevOpsサービスは、Kubernetesマニフェスト・アーティファクトのKubernetesサーバー側の適用を、コンソールに表示されている順序で実行します。また、アーティファクトを削除して別のものを選択したり、アーティファクト・リストを並べ替えたりできます。パイプライン・ステージでアーティファクトを削除しても、アーティファクト・リソースはプロジェクトから削除されません。Kubernetesサーバー側の適用の詳細は、サーバー側の適用を参照してください。
- NGINXイングレス名を入力します。たとえば、
ingress-nginx
です。これは、アプリケーションのイングレス・リソースの名前です。DevOpsサービスは、このイングレス・リソースの注釈を変更してデプロイメント戦略を実行します。NGINXイングレス名は、Kubernetesマニフェストで定義する必要があります。
- 「次へ」をクリックします。
- 配置実行を検証します。パイプラインにカスタム・ファンクションが追加されます。「関数を使用してカスタム・ロジックを実行します」を選択し、次の値を入力します:
- ステージの名前と説明を入力します。説明の追加はオプションです。
- 「環境」で、呼び出す既存のファンクションを選択します。
読取り専用の「ファンクション名」フィールドに、パイプラインでコールされるファンクションが表示されます。
- (オプション)アーティファクトを選択してステージに追加するには、「アーティファクトの選択」をクリックします。
DevOpsプロジェクトから既存のアーティファクト・リソースを選択します。アーティファクトは、汎用(ユニバーサル)ファイル・タイプである必要があります。アーティファクトのパラメータは、JSON形式である必要があり、プレースホルダを持つことができます。DevOpsアーティファクト・リソースの構成中に、「パラメータ化の許可」を選択します。このチェック・ボックスを選択すると、配置時にプレースホルダが引数値で置換されます。詳細は、パラメータの構成を参照してください。
次に、2つのユーザー定義パラメータとその値を渡すための汎用アーティファクト・コンテンツの例を示します:- パラメータ:
test_name
、app_version
- 値:
{"test_name":"verify_production", "app_version":"${app_version}"}
- パラメータ:
- 「ステージ実行モード」で、非同期実行または同期実行を選択します。
「非同期実行」を選択した場合、サービスはファンクションを呼び出しますが、ファンクションの完了を待機しません。「同期実行」を選択した場合、サービスはファンクションを呼び出し、ファンクションの完了を待機します。
- 検証を無効にするか有効にするかを選択します。
検証が有効な場合、サービスはファンクションの戻り値を検証します。戻り値は、UTF-8文字列リテラルの
true
またはfalse
です。戻り値がtrue
の場合、ステージは「成功」としてマークされ、「失敗」としてマークされます。検証が無効な場合、サービスは戻り値を検証しません。
検証は、ステージ実行モードとして「同期実行」オプションを選択した場合にのみ実行されます。
- (オプション)パイプラインにタグを追加するには、「タグ付けオプションの表示」をクリックします。タグ付けとは、テナンシ内のリソースを整理およびトラッキングできるメタデータ・システムです。
タグ・ネームスペースを選択できます。選択しなければ、フリーフォーム・タグが追加されます。対応するタグ・キーおよびタグ値を入力します。複数のタグを追加できます。
ノート
デプロイメント実行を検証しない場合は、「なし」を選択します。 - デプロイメントの手動承認を有効または無効にできます。承認を有効にする場合は、次の値を入力します:
- ステージの名前と説明を入力します。説明の追加はオプションです。
- 承認者の数を入力します。
- (オプション)パイプラインにタグを追加するには、「タグ付けオプションの表示」をクリックします。タグ付けとは、テナンシ内のリソースを整理およびトラッキングできるメタデータ・システムです。
タグ・ネームスペースを選択できます。選択しなければ、フリーフォーム・タグが追加されます。対応するタグ・キーおよびタグ値を入力します。複数のタグを追加できます。
- ステージをパイプラインに追加するには、「追加」をクリックします。
モーダル・ウィンドウが開き、OKEブルー/グリーン・デプロイメント戦略の一部である様々なステージ構成のステータスが表示されます。これには、ブルー/グリーンOKEデプロイメント、ファンクションの呼出し、承認およびトラフィック・シフトのステージが含まれます。検証が成功しなかった場合は、失敗した各ステージに固有のエラー・メッセージを確認し、修正処理を実行できます。
検証が成功した場合は、必要に応じて、デプロイメント・パイプラインを実行するか、パイプラインに順次またはパラレルにステージを追加できます。
OKEブルー/グリーン・ステージを作成するには、
create-deploy-oke-blue-green-stage
コマンドを実行します:oci devops deploy-stage create-deploy-oke-blue-green-stage
必須パラメータ:
--blue-green-strategy
--kubernetes-manifest-artifact-ids
--oke-cluster-environment-id
--pipeline-id
--stage-predecessor-collection
このコマンドのヘルプを表示するには:
oci devops deploy-stage create-oke-blue-green-stage -h
ファンクションの呼出しステージを作成するには、
create-invoke-function-stage
コマンドを実行します:oci devops deploy-stage create-invoke-function-stage
必須パラメータ:
--function-environment-id
--is-async
--is-validation-enabled
--pipeline-id
--stage-predecessor-collection
このコマンドのヘルプを表示するには:
oci devops deploy-stage create-invoke-function-stage -h
ロード・バランサのトラフィック・シフト・ステージを作成するには、
create-load-balancer-traffic-shift-stage
コマンドを実行します:oci devops deploy-stage create-load-balancer-traffic-shift-stage
必須パラメータ:
--blue-backend-ips
--green-backend-ips
--load-balancer-config
--traffic-shift-target
--rollout-policy
--pipeline-id
--stage-predecessor-collection
このコマンドのヘルプを表示するには:
oci devops deploy-stage create-load-balancer-traffic-shift-stage -h
手動承認ステージを作成するには、
create-manual-approval-stage
コマンドを実行します:oci devops deploy-stage create-manual-approval-stage
必須パラメータ:
--approval-policy
--pipeline-id
--stage-predecessor-collection
このコマンドのヘルプを表示するには:
oci devops deploy-stage create-manual-approval-stage -h
deploy-stage
のすべてのコマンドを取得するには:oci devops deploy-stage -h
ステージを作成するには、
CreateDeployStage
操作を使用します。パイプラインに追加するステージに応じて、次の値をステージ・タイプとして選択します:- Kubernetes Engine (OKE)ブルー/グリーン・デプロイメント・ステージ:
OKE_BLUE_GREEN_DEPLOYMENT
- OKEブルー/グリーン・トラフィック・シフト・ステージ:
OKE_BLUE_GREEN_TRAFFIC_SHIFT
- ファンクションの呼出しステージ:
INVOKE_FUNCTION
- 手動承認ステージ:
MANUAL_APPROVAL
- Kubernetes Engine (OKE)ブルー/グリーン・デプロイメント・ステージ: