2022年6月10日
Continuous Delivery
宣言型、不変型、継続的に調整可能なインフラは、GitOpsのベストプラクティスで管理することで多くのメ リットをもたらします。ここでは、これらのパイプラインで使われるコードを管理するための4つのアプローチを紹介します。
GitOpsのプラクティスを導入することで、ソフトウェアデリバリーパイプラインを次のレベルへと引き上げることができます。宣言的で、不変的で、継続的に調整されるインフラは、GitOpsのベストプラクティスによって管理されると、多くの利益をもたらします。長年にわたり、私は多くの開発チームがGitOpsのワークフローを構築し、改善するのを支援してきました。このブログでは、パイプラインで使われるコードを管理するための4つのアプローチについて紹介します。
「GitOps」の後半「Ops」は、構成コード、またはInfrastructure as Code(IaC)のことを指しています。ソフトウェアは、このコードによって管理されるリソースに依存して機能します。この構成をGitリポジトリーで管理することは、多くの利点をもたらします。多くの場合、このコードの構造 は後回しにされ、将来的に重要なリファクタリングにつながることになります。
最初の例では、アプリケーションのコードとインフラのコードを同じリポジトリーで管理しています。長寿命ブランチが1つだけ存在します(main)。
以下はNode.jsのプロジェクトで、rootにアプリケーションコード、kubernetesディレクトリにYAMLファイルを置いています。development.yamlの変更は開発環境、production.yamlの変更は本番環境に適用されます。
組織によっては、アプリケーションとインフラストラクチャーのコードを分離する必要があります。以下の例では、アプリケーションとインフラのコードをそれぞれ専用のリポジトリーで管理しています。Gitリポジトリーごとにユーザー権限を設定できるため、権限分離がうまくいきます。
GitflowなどのGit分岐ワークフローをご存知でしょうか。Gitflowは、トランクベースの開発に人気が出てきたため、最近ではあまり使われなくなっています。Gitリポジトリーで複数の長寿命ブランチを使わないほうがよいというのは、それなりの理由があるからです。しかし、場合によっては複数の長寿命ブランチを使うことも検討する価値があります。
以下は、developmentとproductionという2つの長寿命ブランチを持つHelmチャートリポジトリーです。変更は常にdevelopmentブランチから行われます。本番環境に移行するには、developmentをproductionにマージする必要があります。開発環境では、developmentブランチにあるdevelopment-values.yamlという値ファイルが使用されます。本番環境では、productionブランチにあるproduction-values.yamlという値ファイルを使用します。
さて、長寿命ブランチが1つだけ存在するリポジトリー(main)を考えてみましょう。それぞれの環境には、そ れぞれのディレクトリーがあります。
以下はTerraformのリポジトリーで、開発用と本番用のディレクトリーが分かれています。開発環境への変更には、developmentディレクトリーにあるdevelopment.tfvarsというtfvarsファイルが使われます。本番環境への変更はproductionディレクトリーにあるproduction.tfvarsというtfvarsファイルを使用します。
各環境がそれぞれ専用のリポジトリーを持っている場合のアプローチを考えてみましょう。各リポジトリーには、1つの長寿命ブランチ(main)があります。
ここでは、Terraformプロジェクトの例として、developmentとproductionが別々のリポジトリーになっているものを示します。開発環境への変更には、developmentリポジトリーにあるdevelopment.tfvarsというtfvarsファイルを使用します。本番環境への変更には、productionリポジトリーのproduction.tfvarsというtfvarsファイルを使用します。
私の経験では、GitOpsのコード管理は環境ごとに1つのリポジトリーで行うのが最も将来性のある方法です。権限や環境を分けることで得られる利点は、潜在的な欠点を上回ります。将来的に分離が必要ないと判断した場合は、複数のリポジトリーを1つにまとめることができます。どの方法を選んでも、Harnessの製品群は全てサポートしているのが良い点です。
Harness CIによる構築、テスト、アーティファクトの公開、Harness CDによるデプロイ、Harness GitOps(現在ベータ版)によるパイプラインのレベルアップなど、Harnessはあらゆるニーズに対応します。また、全てのHarnessパイプラインは、ガバナンスやカオスエンジニアリングなどの先進的な機能を利用することができます。
GitOpsの旅を加速させるHarnessの魅力をご覧ください。14日間の無料トライアルに登録し、Kubernetes CDクイックスタートガイドに従って、アプリケーションをクラスターにデプロイしてください。ガイド付きツアーをご希望の場合は、デモをご予約ください。
フォーラム、コミュニティーSlack、またはHarness & Drone User Groupのバーチャルミートアップで、ご質問にお答えします。
この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。