第4章 Kubernetesでデータベースのデプロイを自動化する HelmでKubernetes上のデータベースデプロイを自動化する
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
前章では、Kubernetes上に単一ノードとマルチノードのデータベースをデプロイする方法を、手作業で1つずつ要素を作成しながら学んだ。データベースが必要とするコンピューティングリソース、ネットワークリソース、ストレージリソースをセットアップするためにKubernetesプリミティブを使用することを最大限に理解してもらうために、あえて "難しい方法 "をとったのだ。もちろん、いくつかの理由から、これはKubernetes上でデータベースを本番運用する経験を表しているわけではない。
第一に、チームは通常データベースを手作業でデプロイしない。それはとても面倒なことだ。また、特に高度なデプロイの場合は、構成を1つのファイルにまとめるだけでもかなり複雑になり始める可能性がある。第3章で、マルチノード・データベースとしてのCassandraに必要なコンフィギュレーションの量が、単一ノードMySQLデプロイと比較して増えていることを考えてみよう。これでは大企業ではスケールしない。
第二に、データベースをデプロイすることは素晴らしいが、それを長期にわたって稼働させ続けることはどうだろうか?データインフラは、長期にわたって信頼性とパフォーマンスを維持する必要がある。別の言い方をすれば、システムを運用するタスクはしばしば「1日目」(アプリケーションを本番環境にデプロイする喜ばしい日)と「2日目」(1日目以降、高可用性を維持しながらアプリケーションを運用し、進化させる必要のある毎日)に分けられる。
データベースのデプロイと運用に関するこのような考察は、開発チームが本番環境でのアプリケーションのサポートにおいてより積極的な役割を担うアプローチであるDevOpsに向けた、より大きな業界のトレンドを反映している。DevOpsのプラクティスには、アプリケーションのCI/CDのための自動化ツールの使用が含まれ、コードが開発者のデスクトップから本番環境に入るまでの時間を短縮する。
この章では、データベースやその他のアプリケーションのデプロイを標準化するのに役立つツールを見ていく。これらのツールはコードとしてのインフラ(IaC)アプローチをとっており、ソフトウェアのインストールや設定オプションを、自動的に実行できる形式で表現することができる。次の2章では、データ・インフラの演算子にも重点を置き、本書の残りの部分でもこのテーマを扱っていく。
Helmチャートでアプリケーションをデプロイする
まずは、コンフィギュレーションの複雑な管理を助けてくれるツールから見ていこう:Helmだ。Kubernetes用のこのパッケージマネージャーはオープンソースで、CNCFの卒業プロジェクトだ。パッケージマネージャーの概念は、Pythonのpip 、JavaScriptのNode Package Manager(NPM)、RubyのGems機能など、複数のプログラミング言語に共通するものだ。LinuxのAptやmacOSのHomebrewのように、特定のオペレーティングシステム用の演算子も存在する。図4-1に示すように、パッケージ・マネージャー・システムの必須要素は、パッケージ、パッケージが保存されるレジストリ、パッケージ・マネージャー・アプリケーション(または ...