Namespace dibuat untuk digunakan di environment dengan banyak pengguna yang berada di dalam beberapa tim ataupun proyek. Untuk sebuah cluster dengan beberapa pengguna saja, kamu tidak harus membuat ataupun memikirkan tentang namespace. Mulai gunakan namespace saat kamu membutuhkan fitur dari namespace itu sendiri. Show Membuat Namespace BaruBuat satu file YML dengan nama namespace.yml. apiVersion: v1 Lalu, apply file di atas ke dalam cluster kita. kubectl apply -f namespace.yml Pastikan bahwa namespace sudah aktif. amka@Abduls-MacBook-Pro:~$ kubectl get namespaceNAME STATUS AGEMembuat PersistentVolumeClaims untuk menyimpan data MySQL Selanjutnya, kita perlu membuat 1 PVC untuk menyimpan data di dalam direktori /var/lib/mysql. PVC untuk MySQLBuat satu file YML dengan nama mysql-vc.yml dengan isinya. kind: PersistentVolumeClaim Lalu, apply file mysql-vc.yml ke dalam cluster kita. amka@Abduls-MacBook-Pro:~$ kubectl apply -f mysql-vc.ymlpersistentvolumeclaim/mysql-volumeclaim created Pastikan PVC sudah berhasil dibuat dengan namespace. amka@Abduls-MacBook-Pro:~$ kubectl get pvc -n medium-demo
Kita perlu membuat 2 Secret, Karena MySQL memerlukan root password dan user Secret MySQL untuk Root Passwordsecret-mysql-password.ymlapiVersion: v1 Secret MySQL untuk Usersecret-mysql-user.ymlapiVersion: v1 Apply file Secret. kubectl apply -f secret-mysql-password.ymlkubectl apply -f secret-mysql-user.yml Pastikan Secret yang sudah dibuat masuk ke dalam namespace medium-demo. amka@Abduls-MacBook-Pro:~$ kubectl get secret -n medium-demo Membuat ConfigMap untuk Menyimpan Konfigurasi MySQLKita perlu membuat direktori dengan nama mysql-config untuk konfigurasi MySQL yang akan di-mount ke direktori /etc/mysql/conf.d. Setelah masuk ke dalam direktori, tahap selanjutnya adalah pembuatan file konfigurasi MySQL dengan nama max_allowed_packet.cnf. kubectl apply -f namespace.yml 0Membuat ConfigMapSiapkan mysql-conf.yml. kubectl apply -f namespace.yml 1Apply file ConfigMap. kubectl apply -f namespace.yml 2Pastikan ConfigMap sudah masuk ke dalam namespace. kubectl apply -f namespace.yml 3Membuat Deployment MySQLSetelah PVC, Secret, dan ConfigMap, kita siap untuk menggunakan file YML berikut. Pertama, siapkan mysql-cluster.yml. Sebagai referensi, berikut adalah isi file mysql-cluster.yml yang menggunakan private registry. kubectl apply -f namespace.yml 4Untuk yang tidak menggunakan private registry, bisa menggunakan isi di bawah ini. kubectl apply -f namespace.yml 5Beberapa komentar tentang YAML,
kubectl apply -f namespace.yml 6Selanjutnya, kita dapat memeriksa log dari pod MySQL untuk menentukan apakah layanan sudah berjalan. kubectl apply -f namespace.yml 7Publish MySQL via Kubernetes ServiceSetelah MySQL aktif dan berjalan, kita perlu membuat endpoint publik untuk mengakses MySQL. Dimulai dengan membuat 2 file YML dengan nama mysql-service-lb.yml dan mysql-service.yml. kubectl apply -f namespace.yml 8File mysql-service.yml untuk mendapatkan ClusterIP local dari MySQL. kubectl apply -f namespace.yml 9Apply file mysql-service-lb.yml dan mysql-service.yml untuk membuat Service dan pastikan Service tersebut sudah ter-deploy di dalam namespace medium-demo. amka@Abduls-MacBook-Pro:~$ kubectl get namespaceNAME STATUS AGE0 Lalu, gunakan ClusterIP untuk mengakses MySQL melalui CLI. amka@Abduls-MacBook-Pro:~$ kubectl get namespaceNAME STATUS AGE1 Setelah mencoba mengakses melalui CLI, kita dapat pula menggunakan endpoint publik EXTERNAL-IP untuk mengakses MySQL dari database client. Itu dia! Setelah mengikuti tahapan tersebut, kita memiliki MySQL yang berjalan di Kubernetes. Jika salah satu node gagal, pod akan secara otomatis dipindahtugaskan ke node yang sehat. |