Praktik terbaik Kubernetes. Pemetaan layanan eksternal

Praktik terbaik Kubernetes. Membuat wadah kecil
Praktik terbaik Kubernetes. Organisasi Kubernetes dengan namespace
Praktik terbaik Kubernetes. Memvalidasi Keaktifan Kubernetes dengan Uji Kesiapan dan Keaktifan
Praktik terbaik Kubernetes. Menyiapkan permintaan dan batasan sumber daya
Praktik terbaik Kubernetes. Shutdown yang benar Hentikan

Jika Anda seperti kebanyakan orang, Anda mungkin menggunakan sumber daya yang berjalan di luar cluster Anda. Mungkin Anda menggunakan Taleo API untuk mengirim pesan teks, atau menganalisis gambar menggunakan Google Cloud Vision API.

Jika Anda menggunakan titik akhir permintaan sisi server yang sama di semua lingkungan Anda dan tidak berencana untuk memigrasikan server Anda ke Kubernetes, maka tidak masalah jika Anda memiliki titik akhir layanan tepat di kode Anda. Namun, ada banyak skenario lain yang mungkin terjadi. Dalam seri Praktik Terbaik Kubernetes ini, Anda akan mempelajari cara menggunakan mekanisme bawaan Kubernetes untuk menemukan layanan baik di dalam maupun di luar cluster.

Contoh layanan eksternal yang umum adalah database yang berjalan di luar cluster Kubernetes. Tidak seperti database cloud seperti Google Cloud Data Store atau Google Cloud Spanner, yang menggunakan satu titik akhir untuk semua akses, sebagian besar database memiliki titik akhir terpisah untuk keadaan berbeda.
Praktik terbaik untuk menggunakan database tradisional seperti MySQL dan MongoDB biasanya berarti Anda terhubung ke komponen berbeda untuk lingkungan berbeda. Anda dapat memiliki mesin besar untuk data produksi dan mesin lebih kecil untuk lingkungan pengujian. Masing-masing dari mereka akan memiliki alamat IP atau nama domainnya sendiri, tetapi Anda mungkin tidak ingin mengubah kode Anda saat berpindah dari satu lingkungan ke lingkungan lainnya. Jadi, daripada melakukan hardcoding pada alamat-alamat ini, Anda dapat menggunakan penemuan layanan eksternal berbasis DNS bawaan Kubernetes dengan cara yang sama seperti layanan asli Kubernetes.

Praktik terbaik Kubernetes. Pemetaan layanan eksternal

Katakanlah Anda menjalankan database MongoDB di Google Compute Engine. Anda akan terjebak di dunia hybrid ini sampai Anda berhasil mentransfernya ke cluster.

Untungnya, Anda dapat menggunakan layanan Kubernetes statis untuk membuat hidup Anda sedikit lebih mudah. Dalam contoh ini, saya membuat server MongoDB menggunakan Google Cloud Launcher. Karena dibuat di jaringan yang sama (atau VPC cluster Kubernetes), maka diakses menggunakan alamat IP internal berkinerja tinggi.

Praktik terbaik Kubernetes. Pemetaan layanan eksternal

Ini adalah setelan default di Google Cloud, jadi Anda tidak perlu mengonfigurasi apa pun. Sekarang Anda memiliki alamat IP, langkah pertama adalah membuat layanan. Anda mungkin memperhatikan bahwa tidak ada pemilih pod untuk layanan ini. Artinya, kami menciptakan layanan yang tidak tahu ke mana harus mengirimkan lalu lintas. Ini akan memungkinkan Anda membuat objek titik akhir secara manual yang akan menerima lalu lintas dari layanan ini.

Praktik terbaik Kubernetes. Pemetaan layanan eksternal

Contoh kode berikut menunjukkan bahwa titik akhir menentukan alamat IP untuk database menggunakan nama mongo yang sama dengan layanan.

Praktik terbaik Kubernetes. Pemetaan layanan eksternal

Kubernetes akan menggunakan semua alamat IP untuk menemukan titik akhir seolah-olah itu adalah Pod Kubernetes biasa, jadi sekarang Anda dapat mengakses database dengan string koneksi sederhana ke nama di atas mongodb://mongo. Tidak perlu menggunakan alamat IP dalam kode Anda sama sekali.

Jika alamat IP berubah di masa mendatang, Anda cukup memperbarui titik akhir dengan alamat IP baru dan aplikasi Anda tidak perlu dimodifikasi dengan cara tambahan apa pun.

Jika Anda menggunakan database yang dihosting di host pihak ketiga, kemungkinan besar pemilik host telah memberi Anda Uniform Resource Identifier URI untuk dihubungkan. Jadi jika Anda sudah diberikan alamat IP, Anda bisa langsung menggunakan cara sebelumnya. Contoh ini menunjukkan bahwa saya memiliki dua database MongoDB yang dihosting di host mLab.

Praktik terbaik Kubernetes. Pemetaan layanan eksternal

Salah satunya adalah database pengembang dan yang lainnya adalah database produksi. String koneksi untuk database ini terlihat seperti ini - mLab memberi Anda URI dinamis dan port dinamis. Seperti yang Anda lihat, mereka berbeda.

Praktik terbaik Kubernetes. Pemetaan layanan eksternal

Untuk mengabstraksikannya, mari gunakan Kubernetes dan sambungkan ke database pengembang. Anda dapat membuat nama layanan Kubernetes eksternal, yang akan memberi Anda layanan statis yang akan meneruskan lalu lintas ke layanan eksternal.

Praktik terbaik Kubernetes. Pemetaan layanan eksternal

Layanan ini akan melakukan penerusan CNAME sederhana di tingkat kernel dengan dampak kinerja minimal. Berkat ini Anda dapat menggunakan string koneksi yang lebih sederhana.

Praktik terbaik Kubernetes. Pemetaan layanan eksternal

Namun karena nama eksternal menggunakan penerusan CNAME, maka tidak dapat melakukan penerusan port. Oleh karena itu, solusi ini hanya berlaku untuk port statis dan tidak dapat digunakan dengan port dinamis. Namun mLab Tingkat Gratis memberi pengguna nomor port dinamis secara default dan Anda tidak dapat mengubahnya. Ini berarti Anda memerlukan baris perintah koneksi yang berbeda untuk dev dan prod. Hal buruknya adalah ini mengharuskan Anda melakukan hardcode pada nomor port. Jadi, bagaimana caranya agar penerusan porta berfungsi?

Langkah pertama adalah mendapatkan alamat IP dari URI. Jika Anda menjalankan nslookup, nama host, atau melakukan ping ke URI, Anda bisa mendapatkan alamat IP database. Jika layanan mengembalikan beberapa alamat IP kepada Anda, maka semua alamat ini dapat digunakan pada titik akhir objek.

Praktik terbaik Kubernetes. Pemetaan layanan eksternal

Satu hal yang perlu diingat adalah bahwa IP URI dapat berubah tanpa pemberitahuan, sehingga cukup berisiko untuk digunakan dalam produksi. Dengan menggunakan alamat IP ini, Anda dapat menyambung ke database jarak jauh tanpa menentukan port. Dengan demikian, layanan Kubernetes melakukan penerusan porta dengan cukup transparan.

Praktik terbaik Kubernetes. Pemetaan layanan eksternal

Memetakan, atau memetakan sumber daya eksternal ke sumber daya internal, memberi Anda fleksibilitas untuk menggunakan layanan ini dalam klaster di masa mendatang sambil meminimalkan upaya pemfaktoran ulang. Hal ini juga mempermudah pengelolaan dan memberikan wawasan tentang layanan eksternal apa yang digunakan perusahaan Anda.

Akan segera dilanjutkan...

Beberapa iklan πŸ™‚

Terima kasih untuk tetap bersama kami. Apakah Anda menyukai artikel kami? Ingin melihat konten yang lebih menarik? Dukung kami dengan melakukan pemesanan atau merekomendasikan kepada teman, cloud VPS untuk pengembang mulai $4.99, analog unik dari server level awal, yang kami temukan untuk Anda: Seluruh kebenaran tentang VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps dari $19 atau bagaimana cara berbagi server? (tersedia dengan RAID1 dan RAID10, hingga 24 core dan hingga 40GB DDR4).

Dell R730xd 2x lebih murah di pusat data Equinix Tier IV di Amsterdam? Hanya disini 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV dari $199 di Belanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - mulai $99! Membaca tentang Bagaimana membangun infrastruktur corp. kelas dengan penggunaan server Dell R730xd E5-2650 v4 senilai 9000 euro untuk satu sen?

Sumber: www.habr.com

Tambah komentar