Apa itu Namespace dalam Kubernetes
Di Kubernetes, Namespace adalah abstraksi tingkat tinggi yang memungkinkan beberapa virtual cluster ada dalam satu cluster fisik yang sama. Ini adalah mekanisme untuk membagi resource cluster antara beberapa pengguna atau tim. Namespace menyediakan cakupan untuk nama, sehingga lebih mudah mengelola dan mengisolasi resource dalam cluster yang sama.
Tujuan dan Manfaat Namespace
Namespace memiliki berbagai tujuan dalam cluster Kubernetes. Mereka memungkinkan Anda membagi resource, mengelola kontrol akses, dan memberikan cara untuk membagi resource cluster menjadi grup yang diberi nama secara logis. Hal ini sangat berguna ketika sebuah cluster digunakan oleh beberapa tim atau proyek, masing-masing dengan set resource mereka sendiri.
Ada beberapa manfaat dalam menggunakan Namespace. Pertama, mereka dapat membantu mengelola alokasi resource dan penggunaan dalam cluster yang besar. Mereka juga dapat mengisolasi proses, membantu memastikan bahwa proses dalam satu namespace tidak mengganggu proses dalam namespace lainnya. Hal ini sangat berguna dalam lingkungan multi-tenant di mana banyak pengguna atau tim membagi satu cluster Kubernetes.
Membuat Namespace
Memulai Minikube
Sebelum membuat Namespace, pastikan bahwa cluster Kubernetes Anda sedang berjalan. Minikube, sebuah alat yang memungkinkan Anda menjalankan Kubernetes secara lokal, dapat diinisialisasi dengan perintah berikut:
$ minikube start
Setelah menjalankan perintah ini, Minikube akan memulai mesin virtual dan menginstal cluster Kubernetes satu node di dalamnya.
Memeriksa Namespace yang Ada
Sebelum membuat Namespace baru, kita perlu mengidentifikasi namespace yang ada dalam cluster kita. Hal ini dapat dilakukan dengan menjalankan perintah berikut:
$ kubectl get namespace
NAME STATUS AGE
default Active 8h
kube-node-lease Active 8h
kube-public Active 8h
kube-system Active 8h
Menjalankan perintah ini akan menghasilkan daftar semua namespace yang ada dalam cluster Anda.
Membuat Namespace Baru: staging
Setelah kita mengetahui namespace yang sudah ada, sekarang kita dapat membuat namespace baru. Ini dapat dicapai dengan perintah kubectl create namespace
diikuti dengan nama yang diinginkan untuk namespace tersebut. Untuk membuat namespace bernama staging
, gunakan perintah berikut:
$ kubectl create namespace staging
namespace/staging created
Perintah di atas akan membuat Namespace baru dengan nama staging
di dalam cluster Anda.
Mendeploy Aplikasi di dalam Namespace
Menjalankan Aplikasi
Setelah memiliki Namespace, kita dapat mendeploy aplikasi di dalam Namespace tersebut. Dalam contoh ini, kita akan mendeploy aplikasi contoh yang disebut helloworld
.
Pendeployan dapat dilakukan menggunakan perintah kubectl run
, seperti yang ditunjukkan di bawah ini:
$ kubectl run \
--image gcr.io/google-samples/hello-app:1.0 \
--restart Never \
--namespace staging \
helloworld
pod/helloworld created
Menjalankan perintah ini akan memulai pendeployan baru dari aplikasi 'helloworld' di dalam Namespace staging
.
Memverifikasi Pendeployan di staging
Perintah berikut akan mencantumkan semua pod yang sedang berjalan di dalam Namespace staging
, mengkonfirmasi apakah aplikasi helloworld
telah berhasil didapatkan.
$ kubectl get pod --namespace staging
NAME READY STATUS RESTARTS AGE
helloworld 1/1 Running 0 14s
Namespace default
tidak menunjukkan apa pun karena Pod belum dibuat.
$ kubectl get pod --namespace default
No resources found in default namespace.
Menghapus Namespace
Ketika suatu namespace tidak lagi diperlukan, Anda dapat menghapusnya. Di Kubernetes, Anda dapat melakukannya menggunakan perintah kubectl delete namespace
diikuti dengan nama namespace. Misalnya, untuk menghapus namespace staging
, gunakan perintah berikut:
$ kubectl delete namespace staging
namespace "staging" deleted
Ingatlah, menghapus sebuah namespace juga akan menghapus semua resource di dalam namespace tersebut. Oleh karena itu, pastikan semua data dan aplikasi penting telah dibackup dengan aman atau dipindahkan ke namespace lain sebelum melakukan operasi ini. Setelah namespace staging
dihapus, semua Pod yang menjalankan aplikasi helloworld
di dalam namespace ini juga akan dihapus.