Skip to content
Latchkey

Kubernetes の namespace とは?論理的なクラスタ分割

Kubernetes の namespace とは、クラスタ内の論理的な分割です - リソースをグループ化し、名前を scope し、クラスタの一部分に quota とアクセス制御を適用する手段です。

単一のクラスタは、しばしば多数のチーム、環境、アプリをホストします。namespace は、リソースが衝突せず、ポリシーが各セクションを対象にできるよう、そのクラスタを論理的なセクションに切り分けます。それは組織的かつポリシー上の境界であり、node や VM のような堅固なセキュリティの壁ではありません。

namespace が scope するもの

ほとんどのオブジェクト - pod、Service、Deployment、ConfigMap - は namespace 内に存在し、その名前はその中でのみ一意であればよいです。したがって stagingwebprodweb は、同じクラスタ内の別個のオブジェクトです。

隔離しないもの

namespace はそれ自体では強力なセキュリティ隔離を提供しません。namespace ごとに適用される network policy、RBAC、resource quota が本当の境界を加えます。namespace は、それらのポリシーが結びつく単位です。

クラスタ scope と namespaced の違い

一部のオブジェクト(Node、PersistentVolume、namespace 自体)はクラスタ scope で、いかなる namespace の外にも存在します。ほとんどの workload オブジェクトは namespaced です。

一般的なパターン

  • 環境ごとの namespace(devstagingprod)。
  • 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 を対象にします。

関連ガイド