Skip to content

emka.web.id

Menu
  • Home
  • Indeks Artikel
  • Tutorial
  • Tentang Kami
Menu

Cara Menjalankan MySQL di Kubernetes Dengan Operator Oracle

Posted on November 09, 2022 by Syauqi Wiryahasana

Dukungan

Kubernetes untuk aplikasi stateful telah berkembang pesat selama beberapa tahun terakhir. Sekarang memungkinkan untuk menemukan basis data Anda di dalam klaster Anda, memungkinkannya untuk mendapatkan keuntungan dari skalabilitas yang sama seperti beban kerja Anda yang lain. MySQL adalah salah satu mesin basis data relasional paling populer dan sekarang ditambah oleh operator resmi Kubernetes. Proyek open-source yang dipimpin Oracle menyediakan cara sederhana untuk membuat cluster MySQL terkelola di dalam Kubernetes. Dalam artikel ini, Anda akan mempelajari cara menginstal operator dan memulai penyediaan database. Operator secara otomatis membuat layanan sehingga aplikasi di wadah Anda yang lain dapat terhubung ke MySQL.

Apa Itu Operator MySQL?

Operator MySQL Oracle adalah komponen yang berjalan di dalam cluster Anda untuk mengotomatiskan inisialisasi database. Anda tidak memerlukan operator untuk menggunakan MySQL di Kubernetes – Anda dapat men-deploy sendiri image container resmi dengan menggunakan StatefulSet. Pendekatan ini rumit, mengharuskan Anda untuk membuat dan memelihara file manifes yang panjang untuk menciptakan lingkungan yang andal. Operator menyediakan satu set sumber daya khusus yang dapat Anda gunakan untuk membuat database Anda. Menambahkan objek InnoDBCluster ke cluster Kubernetes Anda akan meminta operator untuk menyiapkan StatefulSets, penyimpanan, dan jaringan untuk Anda. Ini juga mengotomatiskan peningkatan dan pencadangan, sangat mengurangi beban administrator.

Menginstal Operator MySQL

Bagan Helm yang disertakan adalah cara paling sederhana untuk menginstal operator di cluster Anda. File manifes tersedia sebagai alternatif jika Anda tidak memiliki Helm di lingkungan Anda. Pertama tambahkan operator ke daftar repositori Helm Anda: $ helm repo tambahkan operator mysql https://mysql.github.io/mysql-operator/ Next update database repositori Helm sehingga menemukan grafik yang tersedia: $ helm repo update Sekarang gunakan perintah berikut untuk menginstal operator ke dalam namespace baru bernama mysql-operator: $ helm install mysql-operator mysql-operator/mysql-operator - -namespace mysql-operator --create-namespace NAMA: mysql-operator TERAKHIR DEPLOYASI: Sab 29 Okt 15:00:26 2022 NAMESPACE: mysql-operator STATUS: disebarkan REVISI: 1 TEST SUITE: None Mungkin perlu beberapa detik untuk proses untuk menyelesaikan.

Membuat Kredensial Pengguna Root Rahasia

Setiap cluster database yang Anda buat harus disertai dengan rahasia Kubernetes yang berisi kredensial untuk pengguna root MySQL. Operator akan membuat akun root-privileged dengan nama pengguna dan kata sandi yang disediakan di secret. Salin manifes YAML berikut dan ubah nilai bidang rootPassword menjadi sesuatu yang aman. Ubah juga pengaturan nama pengguna dan host pengguna jika berlaku untuk situasi Anda. Ingat bahwa akun yang disebutkan di sini akan memiliki kendali penuh atas MySQL; Anda harus mengatur pengguna terpisah untuk aplikasi Anda nanti, menggunakan shell MySQL biasa. apiVersion: v1 kind: Secret metadata: name: mysql-root-user stringData: rootHost: "%" rootUser: "root" rootPassword: "P@ $$w0rd" Simpan file sebagai secret.yaml. Sekarang gunakan Kubectl untuk menambahkan rahasia ke cluster Anda: $ kubectl apply -f secret.yaml secret/mysql-root-user createdMembuat Cluster Dasar Selanjutnya buat file YAML baru bernama mysql.yaml dan salin konten berikut: apiVersion: mysql. oracle.com/v2 jenis: InnoDBCluster metadata: nama: mysql-cluster spec: secretName: mysql-root-user instance: 3 tlsUseSelfSigned: true router: instance: 1 Ini mendefinisikan objek menggunakan sumber daya khusus InnoDBCluster yang ditawarkan oleh operator MySQL. Menerapkan manifes ke cluster Anda akan membuat database MySQL baru dengan replikasi yang dikonfigurasi secara otomatis. Tinjau dan ubah properti berikut dalam manifes sebelum Anda melanjutkan: spec.secretName – Ini harus cocok dengan metadata.name dari rahasia yang Anda buat sebelumnya. Rahasia yang direferensikan akan dibaca untuk menyiapkan akun pengguna root MySQL.spec.instances – Ini menentukan berapa banyak replika MySQL (Pod) yang akan dijalankan. Hingga 10 replika saat ini didukung.spec.tlsUseSelfSigned – Bidang disetel ke true dalam contoh ini untuk menggunakan sertifikat TLS yang ditandatangani sendiri yang disertakan. Secara opsional, Anda dapat memberikan sertifikat Anda sendiri melalui rahasia Kubernetes dengan mengatur field spec.tlsSecretName/spec.tlsCASecretName.spec.router.instances – Komponen Router MySQL bertanggung jawab untuk mengarahkan lalu lintas layanan antara replika MySQL yang tersedia. Bidang ini menentukan berapa banyak contoh router yang akan dijalankan. Beberapa instance akan meningkatkan kinerja dan ketahanan dalam situasi lalu lintas tinggi. Gunakan Kubectl untuk menerapkan manifes dan membuat cluster database Anda: $ kubectl apply -f mysql.yaml innodbcluster.mysql.oracle.com/mysql-cluster Created Proses inisialisasi MySQL dapat mengambil beberapa menit untuk menyelesaikan. Operator menggunakan beberapa wadah init untuk mengatur akun pengguna dan mengkonfigurasi direktori data MySQL. Tunggu beberapa saat sebelum menjalankan kubectl get pods untuk memeriksa apa yang sedang berjalan: $ kubectl get pods NAME READY STATUS RESTARTS USIA mysql-cluster-0 2/2 Menjalankan 0 2m mysql-cluster-1 2/2 Menjalankan 0 2m mysql-cluster- 2 2/2 Menjalankan 0 2m mysql-cluster-router-6b68f9b5cb-wbqm5 1/1 Menjalankan 0 2m Ketiga replika MySQL dan satu router instan semuanya dalam status Berjalan. Basis data sekarang siap digunakan.

Menghubungkan ke Cluster Anda

Operator MySQL membuat layanan Kubernetes yang mengarahkan lalu lintas dari Pod aplikasi Anda ke basis data Anda. Layanan diberi nama host dengan format berikut: ..svc.cluster.local Nama host yang benar untuk contoh cluster yang ditunjukkan di atas adalah mysql-cluster.default.svc.cluster.local. Konfigurasikan aplikasi Anda untuk terhubung ke MySQL di alamat ini menggunakan port 3306 dan kredensial pengguna yang Anda tetapkan di rahasia Anda.

Mengakses Database Anda Secara Eksternal

Anda dapat mengakses MySQL dari luar cluster Anda menggunakan kemampuan penerusan port Kubectl. Jalankan perintah berikut untuk membuka sesi penerusan port baru: $ kubectl port-forward service/mysql-cluster 3306 Ganti mysql-cluster dengan nama InnoDBCluster yang ingin Anda sambungkan. Sekarang Anda dapat menggunakan alat lokal Anda untuk berinteraksi dengan database Anda: $ mysql -h127.0.0.1 -u root -p Menekan Ctrl+C di jendela terminal menjalankan perintah kubectl port-forward akan menutup koneksi.

Menyesuaikan Pengaturan Server MySQL

Anda dapat menyediakan opsi file konfigurasi MySQL apa pun yang diperlukan aplikasi Anda dengan menyetel bidang spec.mycnf di manifes objek InnoDBCluster Anda: apiVersion: mysql.Oracle.com/v2 jenis: InnoDBCluster spec: # ... mycnf: | [mysqld] max_connections=500 innodb_ft_min_token_size=5 Operator akan menggunakan nilai bidang ini untuk menulis file my.cnf di sistem file database Anda Pods.

Menyetel Kapasitas Penyimpanan

Operator secara otomatis membuat Persistent Volume (PV) dan Persistent Volume Claim ( PVC) untuk menyimpan data database Anda. Standarnya adalah menyediakan 2Gi penyimpanan. Ini dapat diubah menggunakan bidang manifes datadirVolumeClaimTemplate yang memungkinkan Anda mengganti properti sumber daya PVC yang dihasilkan oleh operator. Setel properti resources.requests.storage ke kapasitas yang Anda butuhkan. apiVersion: mysql.Oracle.com/v2 kind: InnoDBCluster spec: # ... datadirVolumeClaimTemplate: resources: request: storage: 10Gi Anda harus mengatur ini cukup tinggi sehingga ada banyak ruang bagi data Anda untuk berkembang di masa mendatang. Operator tidak mendukung pengubahan ukuran volume di tempat sehingga Anda akan melihat kesalahan jika mencoba menambah kapasitas di masa mendatang. Beralih ke volume yang lebih besar akan memerlukan langkah migrasi manual.

Menyematkan Versi MySQL

Anda dapat menyematkan ke rilis MySQL tertentu dengan bidang spec.version dan spec.router.version. Ini akan mencegah pemutakhiran otomatis yang tidak disengaja. Pilih versi yang sama untuk MySQL Pods dan instans router Anda untuk menjamin compatibility. apiVersion: mysql.oracle.com/v2 kind: InnoDBCluster spec: # ... version: 8.0.31 router: instances: 1 version: 8.0.31Summary Oracle's MySQL Operator menyediakan mekanisme yang nyaman untuk menjalankan database MySQL dalam cluster Kubernetes. Anda dapat menyediakan database baru yang direplikasi dengan membuat objek InnoDBCluster. Ini jauh lebih sederhana daripada membuat StatefulSets dan layanan secara manual yang mengekspos container MySQL biasa. Menggunakan operator tidak menghalangi kemampuan Anda untuk mengontrol MySQL atau lingkungan Kubernetes Anda. Anda dapat menyesuaikan Pod Anda dengan menyediakan properti manifes Anda sendiri di bidang spec.podSpec dan menggunakan file konfigurasi MySQL Anda sendiri dengan langkah-langkah yang ditunjukkan di atas. Operator juga menawarkan dukungan pencadangan terintegrasi, memungkinkan Anda menyalin database ke penyimpanan eksternal pada jadwal yang berulang. Disadur dari HowToGeek.com.
Seedbacklink

Recent Posts

TENTANG EMKA.WEB>ID

EMKA.WEB.ID adalah blog seputar teknologi informasi, edukasi dan ke-NU-an yang hadir sejak tahun 2011. Kontak: kontak@emka.web.id.

©2024 emka.web.id Proudly powered by wpStatically