2022年12月19日
Continuous Delivery
Helm Deployment用のパイプラインをセットアップし、ロールバックを作成して、以前のバージョンを起動して復元できるようにしましょう。
最新のソフトウェア配信システムは複雑で広大であり、失敗が起きると、企業全体の運用能力が失われる可能性があります。予期せぬダウンタイムを防ぐために、システムはロールバックといった組み込みの失敗戦略を設計しています。ロールバックとは、システムが以前の既知の正常な状態に自動的に戻ることです。この復帰により、システムが壊れた状態で機能し続け、さらなる損傷を引き起こすことを防ぎます。
この投稿では、Harnessを使用しHelmチャートのデプロイパイプラインを作成します。HelmはKubernetesのパッケージマネージャーであり、アプリケーションを柔軟にパッケージ化してKubernetes環境にデプロイできます。この例ではHelmチャートとしてNginxを使用します。Helmでデプロイを実行するようにパイプラインをセットアップします。問題が発生した場合は、ロールバックを開始し、以前のバージョンが復元されます。
組織には、顧客に対応し、製品やサービスのアップタイムを提供する責任があります。あなたがソフトウェアエンジニアであろうと、カスタマーサクセスの仕事をしていようと、機能する製品を提供する責任はあなたにあります。経験豊富なエンジニアであっても、全てのシナリオを予測して、起こりうる全ての失敗に耐えられる堅牢なシステムを構築することは不可能です。
失敗戦略は、失敗の影響を最小限に抑え、システムを常に稼働し続けるように設計されています。戦略のタイムリーな実行のために人間に頼るのは現実的ではないため、失敗戦略は自動化する必要があります。人間がコンピューターほど速く動くことはありません。場合によっては、失敗発生の防止に間に合うように介入することもできません。さらに、失敗戦略は組織の失敗管理能力に対する信頼と信頼を築くのにも役立ちます。
デプロイのロールバックは、デプロイを元に戻すプロセスです。これは、新しいデプロイで修正を必要とする予期せぬ問題が発生した場合や、元のデプロイを復元する必要がある場合など、さまざまな理由で実行される可能性があります。
例えば、あるソフトウェア更新が本番環境で何かを壊す場合を考えてみてくだ さい。ロールバックはそんなとき、期待通りに機能する、前のバージョンのソフトウェアに戻すプロセスなのです。
Harnessパイプラインには、次の部分が含まれます。
このデモでは、Executionの部分のみに焦点を当てます。Getting started with Helmの記事で、その他の詳細をお読みいただけます。
Harnessは、パイプラインでHelmチャートを使うために利用できるネイティブのHelmサービスをサポートしています。以下に示すように、「Native Helm」サービスを使ってステージをセットアップします。
サービスをセットアップするには、後のステージでファイルを編集する必要があるため、クローンを作成した後に次のリポジトリーを使います。
実行ステージに移動し、Helm Deploymentが設定されたこと(Configured)を確認します。次に、パイプラインを保存して実行します。
パイプラインを実行すると、実行が成功すると次のようになります。
Harnessはロールバック戦略を提供します 。 Helmのデプロイメントでは、同様のロールバック戦略を使う必要があります。 実装するには、右上隅にある「Rollback」をクリックします。
「Add Step」をクリックし、Step LibraryからHelm Rollbackを選択します。
Helm Rollbackをステップに追加すれば、失敗戦略を使ってパイプラインの実行を処理する準備が整います。
ロールバックは、以前のバージョンに戻ることで機能します。例えば、ポッドが1つあり、それを2つにスケーリングした場合、失敗が検出されると、再び1つのポッドに戻ります。通常、ポッドの代わりに、新しいイメージを使います。シンプルに、ターミナルを介した調査用のビジュアルデータとしてポッドを使っていると考えることができます。
ターミナルを開き、サービスで定義した名前空間にいることを確認しながら、「kubectl get pods –watch」を使います。
次のステップでは、values.yamlファイルを編集して、レプリカの数を2にします。
デプロイすると、クラスターには2つのポッドが入ります。次に、失敗を起こして、ロールバックの動作を確認します。
実行ステージに戻り、もう一度ステップを追加します。
「Shell Script」ステップを選択します。
強制終了できるように、「exit 1」を含むスクリプトを構成します。変更を適用します。
新しい手順は次のようになります。
パイプラインを保存して実行し、ターミナルを監視します。レプリカが2つに増え、終了ステップに到達すると1つに戻ります。終了ステップが失敗すると、ロールバックステップがトリガーされます。
実行フローは次のとおりです。
おめでとうございます!ロールバックを正常に実装できました。
クラスターが操作可能になったので、kubectlユーティリティーを使ってクラスターにリソースを追加できます。Start Deploying in 5 Minutes with a Delegate-first Approachのチュートリアルを確認して、デリゲートをインストールし、CI/CDパイプラインの作成に進みます。
Harness Continuous Deliveryを無料で始めましょう。
コミュニティーで気軽にご質問ください。harness.ioに参加するか、コミュニティーslackに参加して、次のような製品固有のチャネルで当社のエンジニアとチャットしてみましょう。
#continuous-delivery HarnessのCD Moduleに関するサポートを受ける。
#continuous-integration HarnessのCI Moduleに関するサポートを受ける。
# cloud-cost-management HarnessのCCMモジュールに関するサポートを受ける。
この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。