Setelah berhasil memasang minikube dan kubectl pada lokal mesin kita, sekarang kita akan belajar apa saja resource yang ada pada Kubernetes. Resource pertama yang akan kita pelajari adalah namespace.
Pengertian dan Kegunaan Kubernetes Namespace
Kubernetes namespace adalah resource yang digunakan untuk mengelompokkan beberapa resource lainnya. Namespace dapat diibaratkan seperti wadah yang digunakan untuk menyimpan barang-barang berdasarkan kelompoknya. Pengelompokan barang dapat dilakukan sesuai dengan keinginan kita. Misalnya kita ingin mengelompokkan barang berdasarkan warna, berdasarkan bulan pembelian, berdasarkan masa kadaluarsa, dan berdasarkan hal lainnya.
Sama dengan pengelompokan barang, Kubernetes resource juga dapat dikelompokkan sesuai dengan keinginan kita. Misalnya teman-teman ingin mengelompokkan berdasarkan tim, berdasarkan environment, berdasarkan bahasa pemrogramannya, dan berdasarkan hal lainnya. Perlu diingat bahwa satu resource hanya bisa berada pada satu namespace pada satu waktu. Teman-teman bisa memindahkan resource dari satu namespace ke namespace lainnya jika memang dibutuhkan.
Cara Membuat Kubernetes Namespace
Untuk membuat Kubernetes namespace, teman-teman perlu mendefenisikan namespace yang teman-teman inginkan menggunakan yaml file. Berikut adalah contoh pendefinisian Kubernetes namespace menggunakan yaml file.
apiVersion: v1
kind: Namespace
metadata:
name: tutorial
Mari kita bedah yaml file diatas.
apiVersionadalah atribut yang kita gunakan untuk menentukan versi dari API yang akan kita gunakan untuk mengolah suatu resource. Pada yaml diatas, nilai dariapiVersionadalahv1, artinya kita akan menggunakan API v1 untuk mengolah resource.kindadalah atribut yang kita gunakan untuk menentukan tipe dari resource yang akan kita olah. Pada yaml diatas, nilai darikindadalahNamespace, artinya kita akan mengolah namespace.metadataadalah atribut yang kita gunakan untuk menentukan metadata dari resource yang akan diolah. Pada yaml diatas, value darimetadataadalah suatu objek lain. Penggunaan objek sebagai value darimetadatamemungkinkan kita menentukan lebih dari satu metadata untuk untuk suatu resource. Dari contoh diatas, metadata yang kita berikan dalahname: tutorial. Artinya nama darinamespaceyang kita olah adalahtutorial.
Sebenarnya ada atribut lain yang bisa kita gunakan untuk membuat satu namespace. Tetapi untuk series ini, kita akan menggunakan atribut minimal yang diperlukan untuk membuat suatu resource.
Setelah selesai mendefenisikan namespace yang akan kita buat, maka sekarang kita akan membuat namespace kita dengan bantuan kubectl. Untuk membuat namespace, jalankan perintah berikut.
$ kubectl apply -f namespace.yaml
Mari kita bedah perintah diatas.
kubectladalah perintah yang kita gunakan untuk berinteraksi dengan Kubernetes klaster.applyadalah perintah yang akan diterima oleh kubectl yang menyiaratkan bahwa kubectl perlu memasang satu atau beberapa resource berdasarkan yaml file yang kita berikan.-fadalah argumen yang menentukan yaml file mana yang akan digunakan untuk perintahapply.namespace.yamladalah lokasi yang menunjukkan dimana yaml file kita berada. Jika teman-teman ingin menjalankan perintah kubectl diluar direktori dimana yaml file berada, maka teman-teman perlu memberikan lokasi relatif yaml file secara penuh misalnya-f ../resources/namespace.yaml, tergantung dimana teman-teman menjalankan perintah kubectl.
Jika berhasil, maka akan keluar pesan seperti berikut.
namespace/tutorial created
Untuk melihat semua namespace yang sudah ada pada klaster, jalankan perintah berikut.
$ kubectl get namespace
Mari kita bedah perintah diatas.
getadalah perintah yang akan diterima oleh kubectl yang menyiaratkan bahwa kubectl perlu mengeluarkan daftar dari suatu tipe resource.namespaceadalah tipe resource yang ingin kita lihat daftarnya.
Jika berhasil, maka akan keluar daftar dari namespace yang ada pada klaster.
NAME STATUS AGE
default Active 341d
kube-node-lease Active 341d
kube-public Active 341d
kube-system Active 341d
tutorial Active 9m21s
Pada daftar namespace yang ada, bisa kita lihat namespace tutorial sudah dibuat beberapa menit yang lalu dan statusnya aktif. Artinya namespace tutorial sudah dapat digunakan untuk mengelompokkan resource lainnya.
Cara Menghapus Kubernetes Namespace
Untuk menghapus namespace, kita bisa menggunakan yaml file yang sudah kita buat sebelumnya. Untuk menghapus namespace, jalankan perintah berikut.
$ kubectl delete -f namespace.yaml
Mari kita bedah perintah diatas.
deleteadalah perintah yang menyiaratkan kubectl perlu menghapus resource berdasarkan yaml file yang diberikan.-fadalah argumen yang menentukan yaml file mana yang akan digunakan untuk perintahdelete.namespace.yamladalah lokasi yang menunjukkan dimana yaml file kita berada.
Jika berhasil, maka akan keluar pesan seperti berikut.
namespace "tutorial" deleted
Perlu diingat, menghapus suatu namespace akan menghapus resource lainnya yang berada pada namespace tersebut. Jadi harap digunakan dengan teliti.
Kubernetes resource dapat digolongkan dalam dua kelompok yaitu resource yang bisa dimasukan kedalam namespace dan yang tidak bisa dimasukkan dalam namespace. Untuk melihat resource mana saja yang bisa dimasukkan dalam namespace, jalankan perintah berikut.
$ kubectl api-resources --namespaced=true
Mari kita bedah perintah diatas.
api-resourcesadalah perintah yang menyiarakan kubectl perlu menampilkan daftar tipe resource yang bisa digunakan pada klaster.--namespaced=trueadalah argumen yang menentukan bahwa kubectl hanya perlu menampilkan daftar tipe resource yang bisa dimasukkan ke dalam namespace. Untuk daftar tipe resource yang tidak bisa dimasukkan kedalam namespace maka ubah value--namespacedmenjadifalse.
Kubernetes namespace akan menjadi resource yang akan sering kita gunakan selama series ini. Sebenarnya kita bisa menggunakan namespace default yang sudah ada ketika klaster kita dibuat, hanya saja biar teman-teman lebih terbiasa menggunakan namespace.
Sekian perkenalan dengan Kubernetes namespace, sampai jumpa di part berikutnya.
Cappy Hoding! ๐๐พ