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:
- Bikin Naming Convention: Bikin aturan penamaan yang konsisten biar ga bingung.
- Policy As Code: Gunain tools kayak
OPA (Open Policy Agent)
atauKyverno
biar kebijakan bisa diatur lewat kode. - Automation is Key: Automatisasi sebanyak mungkin pake CI/CD seperti Jenkins atau GitLab CI.
- Backup and Restore: Backup semua konfigurasi pake tools kayak
Velero
, biar kalo ada apa-apa bisa balik lagi dengan gampang.
Referensi:
- Open Policy Agent
- Kyverno Kubernetes Policies
- Automate with Kubernetes Operators
- Velero Backup and Restore
Semoga tips ini bantu lo ngelola multi-namespace di Kubernetes biar lebih gampang!