Panduan Linux

Lupa Ngasih Nama pada Namespace di Kubernetes? Siap-siap Pusing!

Kalo lo lagi ngoprek sama Kubernetes, pasti kenal banget sama yang namanya Namespace. Namespace ini kaya gated community buat resources di Kubernetes. Jadi, bisa dipake buat ngebagi cluster jadi beberapa section yang terisolasi, bikin lebih rapi gitu.

Tapi kalo lo punya banyak namespace, bisa jadi kewalahan tuh ngelolanya. Ini nih tips dan trik buat ngelola multi-namespace di Kubernetes biar ga keder.

Pahami Dulu Apa Itu Namespace

Sebelum loncat ke ngatur namespace, lo harus ngerti dulu konsepnya. Namespace itu semacam “virtual cluster” dalam satu physical cluster. Bayangin aja kaya gini: punya apartemen, trus mau bagi jadi beberapa kamar. Nah, namespace itu kamarnya.

Contohnya, lo bisa bikin namespace buat development, staging, dan production. Jadi resources yang lo deploy di development ga akan ganggu yang di production. Keren kan?

Referensi: Kubernetes Namespaces Documentation

Cara Bikin Namespace Baru

Bikin namespace baru itu gampang banget. Cukup pake perintah kubectl aja.

kubectl create namespace nama-namespace-mu

Jadi kalo misalnya lo mau bikin namespace buat development, tinggal gini:

kubectl create namespace development

Atau bisa juga pake file YAML, contoh development-ns.yaml:

apiVersion: v1
kind: Namespace
metadata:
  name: development

Terus apply pake kubectl apply -f development-ns.yaml.

Ngatur Resource Quota di Namespace

Kalo lo punya banyak namespace, harus pinter-pinter bagi resource kayak CPU dan memory. Biar ga ada namespace yang nyedot semua resources, lo bisa atur pake Resource Quota.

Contohnya, lo mau batasi namespace development biar cuma bisa pake maksimum 4 CPU dan 8Gi memory. Caranya bikin file quota-dev.yaml kayak gini:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: dev-quota
  namespace: development
spec:
  hard:
    requests.cpu: "2"
    requests.memory: 4Gi
    limits.cpu: "4"
    limits.memory: 8Gi

Terus tinggal apply pake kubectl apply -f quota-dev.yaml.

Referensi: Kubernetes Resource Quotas Documentation

Limit Akses Pake RBAC

Selain resource, lo juga perlu ngatur siapa aja yang boleh akses namespace tertentu. Nah, ini bisa pake RBAC (Role-Based Access Control).

Misalnya lo mau kasih akses cuma baca (read-only) ke namespace development untuk user tertentu. Coba deh bikin Role dan RoleBinding kayak gini:

File developer-role.yaml:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: development
  name: developer-role
rules:
- apiGroups: [""]
  resources: ["pods", "services", "configmaps"]
  verbs: ["get", "list", "watch"]

File developer-role-binding.yaml:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: developer-role-binding
  namespace: development
subjects:
- kind: User
  name: <nama-user>
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: developer-role
  apiGroup: rbac.authorization.k8s.io

Ganti <nama-user> dengan nama user yang mau lo kasih akses. Kalo udah, apply lagi pake kubectl.

Referensi: Using RBAC Authorization

Monitor Namespace Pake Kube-ops-view atau Lens

Monitoring multi-namespace bisa tricky kalo ga pake tools yang bener. Tools kayak Kube-ops-view atau Lens bisa bantu lo ngecek status semua namespace dalam satu dashboard.

Kube-ops-view itu open-source, bisa lo pasang di cluster sendiri. Atau kalo males setup, bisa pake Lens yang lebih user-friendly dan punya banyak fitur tambahan.

Contoh nih, lo bisa langsung liat resource usage tiap namespace paka Lens.

Referensi:

Kasih Label buat Lebih Teratur

Kadang lo perlu ngelompokin resources yang berhubungan walau beda namespace. Nah, ini bisa pake label.

Contohnya, semua resources yang berhubungan sama aplikasi backend bisa lo kasih label app=backend, termasuk yang ada di namespace development atau production.

metadata:
  labels:
    app: backend

Terus time mau filter, tinggal pake perintah kayak gini:

kubectl get pods -l app=backend --all-namespaces

Tips Ngelola Multi-Namespace

Ini nih beberapa tips biar ga kewalahan:

  1. Bikin Naming Convention: Bikin aturan penamaan yang konsisten biar ga bingung.
  2. Policy As Code: Gunain tools kayak OPA (Open Policy Agent) atau Kyverno biar kebijakan bisa diatur lewat kode.
  3. Automation is Key: Automatisasi sebanyak mungkin pake CI/CD seperti Jenkins atau GitLab CI.
  4. Backup and Restore: Backup semua konfigurasi pake tools kayak Velero, biar kalo ada apa-apa bisa balik lagi dengan gampang.

Referensi:

Semoga tips ini bantu lo ngelola multi-namespace di Kubernetes biar lebih gampang!

#Kubernetes #Tutorial