Member-only story
マルチテナントのKubernetesクラスタ:課題と便利なツール
Kubernetesのマルチテナンシーは、多くの問題に対する魅力的なソリューションのように思えるかもしれません。開発者に干渉せずに、それを単一のクラスター内で行うことでコストを削減するからかもしれません。顧客にサービスを提供したり、製品をホストしたりする場合、それを単一のクラスターでホストすることが理にかなっているのかもしれません。マルチテナンシーを使うかどうかは、通常、コストの削減と管理の容易さのどちらを優先するかで決まります。
Kubernetesでワークロードを実行することに注力する企業が増えている中、単一のクラスターで実行できることに人気が集まるのは当然のことです。コスト削減のためには当然といえば当然なのですが。
しかし、思ったほど管理は簡単ではないかもしれませんし、単純にコスト削減ができるケースでもないでしょう。この記事では、マルチテナント化する際に発生しうる課題と、それを回避するためのツールをご紹介します。
課題と解決策
マルチテナントの世界に飛び込むと、すぐに解決しなければならない課題が見つかります。その中には、マルチテナンシーという状況に特有のものもあれば、このシナリオでより一般的なものもあります。ここでは、どのような問題に注目し、どのように対処すべきかを説明します。
役割に応じたアクセス制御
最初に直面する課題は、必ずしもマルチテナント特有のものではありませんが、マルチテナント以外の場合に比べ、より重要であることは間違いありません。ロール・ベース・アクセス・制御(RBAC)とは、ユーザーが誰であるかに基づいてアクセス権を与えるのではなく、ユーザーに割り当てられたロールに基づいてアクセス権を与えるプロセスです。
Roleを作成したら、RoleBindingsを使用して、Roleが指定したものに対して特定のユーザーにアクセス権を与えることができます。Kubernetesには多くの組み込みRoleがありますが、独自のRoleを指定することも可能で、ほとんどのマルチテナンシー環境で必要になると思われます。KubernetesのRBACの管理は特に重要で、あるテナントが他のテナントにアクセスできないようにしたいのです。
RBACはマルチテナンシーで特に難しい点ではありませんが、それを支援するツールがあります。 RBAC Manager は、セキュリティをほんの少し簡単にするためにFairwinds が開発したものです。
ネットワークの分離
制限されたリソースにアクセスできるユーザーがいないことを確認したら、ネットワーク・トラフィックが他のテナントに渡らないようにする必要があります。最初は問題にならないかもしれませんが、あるテナントが他のテナントの内部APIにアクセスし始める…