Kubernetesは諸刃の剣 ― 正しく導入すれば IT プロセスを劇的に効率化、でも方法を間違うと・・・


ステートレスからステートフルへ ― Kubernetes環境の複雑化

Kubernetesは元来ステートレス アプリケーションに最適なシステムです。ロードバランスに応じて、コンテナを含むPodを自動的に起動したり、削除したりしてくれるので、アプリケーションのステータスはコンテナとともに消え去ります。つまり、コンテナの稼働中だけ有効な一時的(ephemeral)なステータスを前提とするアプリケーションであれば、よりシンプルに効率よくサポートされます。

しかし、コンテナ環境を基盤とするマイクロサービスとKubernetesの普及が加速する中、ステートフル アプリケーションへの適用も拡大してきました。ビジネス アプリケーションはほとんどの場合、ステータスを永続的に(コンテナが削除されて、別のコンテナが起動されても)維持するように設計されています。したがって、データサービスとの接続を抜きにして、ビジネス アプリケーションは語れません。Kubernetes環境にデータベースが参画するのは、当然の成り行きと言えます。

もともとはステートフルを深く考慮していなかったKubernetesがステートフルなアプリケーションに応用される過程で、コンテナ ストレージ インターフェース(Container Storage Interface)を通じた永続的なデータ アクセスがサポートされるようになり、Kubernetesを取り巻くエコシステムが複雑化してきました。

さらに、その複雑化に拍車をかけているのが、クラウド環境の多様化です。オンプレミスとの併用やマルチクラウドの活用が当たり前のようになり、コンテナ環境に展開されたアプリケーションは、その構成要素が異なるプラットフォームにまたがって分散されることも珍しくありません。そのような環境でアプリケーションの可搬性を実現するのが、クラウド ネイティブのアプローチであり、それを効率化するためにKubernetesが使用されます。アプリケーションの可搬性が確立されれば、セキュリティ、コスト、パフォーマンス面の効果はもちろん、特定ベンダーに縛られるリスクをなくし、将来の拡張性が保証されます。

つまり、元来は単純であったはずのKubernetes環境は、本質的に、より複雑に多様化する運命にあり、複雑だからこそ、Kubernetesがますます活きるしくみになっています。

既存のセキュリティ対策とKubernetes環境のギャップ

Kubernetesの最大の利点はデプロイメントの柔軟性ですが、それはDevOpsの「Dev」の部分に過ぎません。Kubernetesがもたらすコンテナのポータビリティはそれ自体とても有効なセキュリティ対策になり得ますが、本番環境のモニタリングやセキュリティ、特にデータ保護  ― すなわちDevOpsの「Ops」部分を担うDay2オペレーション ―  は、Kubernetes任せにはできません。データベースの管理がもともとはKubernetesの領域外だったこともそうですが、多様化したエコシステムは個々の企業に特有の環境であり、業界独特のコンプライアンス要件や企業独自のセキュリティ ポリシーを適用しなければなりません。

データ保護には、プラットフォーム単位でバックアップとリカバリを行う既存のセキュリティ対策を適用すれば良いという考え方もあります。すでにあるリソースを活用して、すでに機能しているプロセスを適用するのは、経営上、当然の判断です。しかし、仮想マシン(VM)全体やディスクをまるごとバックアップする従来式のデータ保護は、アプリケーションの構成要素を臨機応変に分散するKubernetesの動的な特性に適合しません。Kubernetes環境では、一つのアプリケーションをバックアップするのに、複数のVMや複数のプラットフォームを網羅しながら、そのときどきで臨機応変に対応しなければなりません。これを効率よく実行できる唯一の方法は、VMやプラットフォーム単体の視点ではなく、アプリケーションの視点に立ち、その構成要素がどこに散らばっていても全体を俯瞰して個々の所在を把握できるしくみです。つまり、多様な環境をすべて可視化して、アプリケーションの構成要素を自動的に発見でき、Kubernetesのポータビリティに対応できる『Kubernetesネイティブ』なバックアップとリカバリを提供できるツールが必要になります。

アプリケーションの視点に立ち、その構成要素がどこに散らばっていても全体を俯瞰して個々の所在を把握できるしくみが必要

このようなツールをKubernetesのエコシステムに最初から組み込み、ポリシーベースで自動的に実行されるセキュリティ対策を構築すれば、CI/CD(継続的インテグレーション/継続的デリバリー)の実践と相まって、IT管理プロセスが劇的に効率化されます。Kubernetesを導入する意義は、プロセスの自動化による効率化にあり、それを実現できなければKubernetesの価値が半減してしまいます。

Kubernetes導入時にKubernetes環境に適したセキュリティ対策を講じず、本番環境に移行してはじめて、その管理とセキュリティ対策に直面することだけは絶対に避けなければなりません。もし、そこで付け焼き刃の不適合なデータ保護プロセスを無理やり適用したら、アプリケーションの整合性を保つために余計なプロセスが必要になり、Day 2オペレーションが効率化されるどころか、逆に複雑化を極めます。本来なら、システム管理者の業務が軽減されるはずなのに、煩雑化されてしまっては、本末転倒です。それを防ぐためにも、アプリケーションの視点からポリシーベースでセキュリティ プロセスを適用できる『Kubernetesネイティブ』なツールの使用は不可欠です。

つまり、Kubernetesの導入を成功に導くカギは、Kubernetes仕様のツールを活用したセキュリティ プロセスを最初からKubernetesのエコシステムに組み込むことです。備えあれば憂いなし、どころか、備えあれば楽あり、を実現してくれるのがKubernetesですが、備えなかった場合の憂いも相当に深刻なので気をつけましょう。

関連トピックス

コメントを残す

メールアドレスが公開されることはありません。

 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください