1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初心者でもわかる!EKS道場【Day10】Namespaceで領域を分けよ!Kubernetes流チーム戦の極意

Posted at

【Day10】Namespaceで領域を分けよ!Kubernetes流チーム戦の極意

「開発チームAとチームBがPod名を取り合ってケンカしてるんですが…」
「リソースがどの環境に属してるか分からなくなってきました…」

そんなあなたに届けたい、Kubernetesの“空間分け”の術=Namespace

🧭 はじめに:なぜNamespaceが必要なのか?

クラスタが大きくなり、複数のチームや環境が混在してくると、リソースの混乱が始まります。
Namespaceはそんなカオスを論理的に整理する空間です!

  • チームごとにリソースを分けたい!
  • 開発・本番環境を分けたい!
  • アクセス制御を範囲限定で行いたい!

こういった要望を実現するのがNamespaceです。

🧱 Namespaceとは何か?基本のキ

Namespaceとは、Kubernetes上の仮想的なリソースの区切りです。
1つのクラスタ内に、複数のNamespaceを作成することで、以下のような分離が可能になります。

  • PodやService、ConfigMapなどが名前空間で隔離される
  • 同じ名前のリソースが他のNamespaceで共存可能
  • RBACやリソースクォータをNamespace単位で制御可能
    image.png

EKS構築時にすでにデフォルトのNamespaceができています。

名前 用途
default 何も指定しなかった場合のデフォルト
kube-system Kubernetesのシステムコンポーネント
kube-public 全ユーザーに公開される情報(ほぼ使われない)

🗂️ Namespaceを使うと何が嬉しいのか?

以下のようなシーンでNamespaceが役立ちます:

  • 開発/ステージング/本番の環境を論理的に分離
  • チーム単位でのリソース管理(例:team-a、team-b)
  • ユーザーごとのアクセス制御(RBAC)
  • リソース使用量の制限(ResourceQuota)

🧪 実践編:Namespaceを作ってリソースを分けよう!

🔨 Namespaceを作成する

kubectl create namespace team-a

📦 Namespaceにリソースをデプロイする

簡単なアプリケーションをapp.yamlとして保存

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
    - name: my-container
      image: nginx
kubectl apply -f app.yaml -n team-a

-n オプションでNamespaceを指定できます!

📂 YAMLでNamespaceを明示的に指定するには?

YAMLマニフェストでも、以下のようにNamespaceを指定可能です:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
  namespace: team-a #ここでNamespaceを指定!
spec:
  containers:
    - name: my-container
      image: nginx

🛡️ RBACとNamespaceの関係性

RBACでアクセス権を設定する場合、Namespace単位にスコープを絞ることが可能です。
例えば、team-a Namespace内のPodだけを管理できるようにする設定ができます。

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: team-a
  name: pod-reader
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["get", "watch", "list"]
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: read-pods
  namespace: team-a
subjects:
  - kind: User
    name: alice
    apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

✅ まとめ:Namespaceはクラスタ運用の土台!

NamespaceはKubernetesにおける空間の仕切り

初心者でも環境分離にすぐ使える!

RBACやResourceQuotaと連携することで真価を発揮

次回予告 📢:EKSログ監視道場:CloudWatch LogsでPodの声を聞け!

EKSのPodのログを効率的に収集する方法を学んでいきます!
2024年にリリースされた、EKSのアドオン機能も利用して、効率よく学んでいきましょう!

よければフォロー&いいねお願いします🙏

  • 「面白かった」「続きが気になる!」と思ったらLGTM👍
  • コメントで「聞きたい内容」「つまずきポイント」などもぜひ教えてください!

それではまた明日、EKS道場でお会いしましょう!押忍🔥

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?