Kubernetes の namespace とは?論理的なクラスタ分割
Kubernetes の namespace とは、クラスタ内の論理的な分割です - リソースをグループ化し、名前を scope し、クラスタの一部分に quota とアクセス制御を適用する手段です。
単一のクラスタは、しばしば多数のチーム、環境、アプリをホストします。namespace は、リソースが衝突せず、ポリシーが各セクションを対象にできるよう、そのクラスタを論理的なセクションに切り分けます。それは組織的かつポリシー上の境界であり、node や VM のような堅固なセキュリティの壁ではありません。
namespace が scope するもの
ほとんどのオブジェクト - pod、Service、Deployment、ConfigMap - は namespace 内に存在し、その名前はその中でのみ一意であればよいです。したがって staging の web と prod の web は、同じクラスタ内の別個のオブジェクトです。
隔離しないもの
namespace はそれ自体では強力なセキュリティ隔離を提供しません。namespace ごとに適用される network policy、RBAC、resource quota が本当の境界を加えます。namespace は、それらのポリシーが結びつく単位です。
クラスタ scope と namespaced の違い
一部のオブジェクト(Node、PersistentVolume、namespace 自体)はクラスタ scope で、いかなる namespace の外にも存在します。ほとんどの workload オブジェクトは namespaced です。
一般的なパターン
- 環境ごとの namespace(
dev、staging、prod)。 - RBAC と quota を伴うチームごとの namespace。
- 隔離ときれいな片付けのためのアプリケーションごとの namespace。
CI/CD における namespace
pipeline は kubectl -n <ns> apply や namespace ごとの Helm release で特定の namespace を対象にします。一時的な preview 環境は、しばしば pull request ごとに独自の namespace として立ち上げられ、その後取り壊されます。
重要なポイント
- namespace は、クラスタ内で名前とポリシーを scope する論理的な分割です。
- 組織的な境界であり、RBAC、quota、network policy が本当の隔離を加えます。
- CI/CD は環境、チーム、preview deploy ごとに namespace を対象にします。