Pada dasarnya, Kubernetes mendedahkan a perkhidmatan backend dalaman dalam kelompok dan bahagian depan berinteraksi dengan perkhidmatan ini. Pod yang menawarkan perkhidmatan ini dapat diganti dengan baik dan tidak ada yang menyedari apa-apa. Tetapi apabila ciri-ciri dalam aplikasi anda bertambah, jumlah perkhidmatan yang perlu anda pertahankan juga bertambah. Setiap perkhidmatan berpotensi berbicara dengan setiap perkhidmatan lain dalam kluster, dan rangkaian yang dihasilkan disebut sebagai Perkhidmatan Mesh.
Terdapat banyak tambahan untuk Kubernetes untuk membantu kami mempermudah pengurusan Mesh Perkhidmatan ini. Banyak ciri utama seperti TLS, Load Balancing automatik, mengamankan API bahkan di rangkaian dalaman, dan lain-lain ditawarkan oleh tambahan ini. Banyak pilihan seperti Istio, Linkerd, dan Conduit dapat disatukan dengan Kubernetes untuk mencapainya. Kami akan melihat Istio dalam catatan ini kerana versi 1.0 diumumkan baru-baru ini.
Prasyarat
Untuk memulakan Istio, anda memerlukan kelompok kubernetes yang berfungsi. Terdapat tiga cara untuk mendapatkannya.
- Anda boleh memasang Minikube untuk membuat kluster nod tunggal pada mesin tempatan anda.
- Atau, jika anda menggunakan Docker pada Windows atau Mac, anda boleh mengaktifkan kluster Kubernetes nod tunggal dalam tetapan Docker.
- Atau anda boleh menggunakan perkhidmatan dalam talian seperti taman permainan Katacoda. Kami akan menggunakan ini.
Mengapa menggunakan Mesh Servis?
Memasang jaring servis, seperti Istio memudahkan kerja dengan perkhidmatan mikro. Semasa membangun, anda tidak perlu bimbang tentang fakta bahawa perkhidmatan mikro anda harus menawarkan sokongan untuk TLS bersama, pengimbangan beban atau aspek lain seperti penemuan perkhidmatan. Service Mesh yang ideal membolehkan anda menghubungkan perkhidmatan mikro, melindungi mereka dari satu sama lain dan dari dunia luar, dan menguruskannya dengan cara yang teratur. Ia sangat membantu kedua-dua pemaju dan pengendali.
Memasang Istio
Memasang Istio memerlukan kluster Kubernetes. Sekiranya anda mempunyai kluster simpul tunggal seperti yang anda dapatkan dengan Minikube atau Docker di Desktop maka semua arahan dapat dijalankan di simpul tempatan anda. Walau bagaimanapun, jika anda menggunakan kluster berbilang nod seperti yang ditawarkan oleh taman permainan Katacoda, ingatlah bahawa kebanyakan perintah dan prosedur penyediaan dilakukan pada nod induk. Ya, ini mempengaruhi keseluruhan kelompok, tetapi kita perlu berinteraksi semata-mata dengan nod induk.
Kita mulakan dengan mengklon (atau memuat turun) siaran terbaru Istio dari Github. Pengguna Windows mungkin ingin mengunjungi halaman ini dan mendapatkan yang sesuai .zip fail.
$ curl -L https: // git.io / getLatestIstio | sh -$ cd istio-1.0.0
Nama repo boleh berubah dari masa ke masa apabila pelepasan baru muncul, pada masa penulisan ini 1.0.0 adalah keluaran stabil terbaru. Repo ini tidak hanya berisi peluasan jaringan perkhidmatan tetapi juga aplikasi contoh yang disebut BookInfo untuk tujuan eksperimen. Skrip juga menambah direktori baru $ PWD / istio-1.0.0 / bin ke pemboleh ubah PATH anda.
Direktori ini mengandungi istioctl binari yang boleh digunakan untuk berinteraksi dengan kluster. Pengguna Windows boleh memanggil perduaan dengan pergi ke folder istio-1.0.Tong sampah dan memanggil .\ istioctl menggunakan powerhell atau command prompt. Tetapi ia adalah tambahan tambahan.
Sekiranya anda menggunakan Mac, anda boleh melakukannya dengan menggunakan arahan berikut:
$ eksport PATH = $ PWD / tong: $ PATHSeterusnya kita perlu memperluaskan API Kubernetes kita dengan Definisi Sumber Kustom (CRD) yang disediakan oleh istio kepada kita.
$ kubectl apply -f install / kubernetes / helm / istio / templates / crds.keladiIni mungkin berlaku dalam beberapa saat dan setelah selesai, kube-apiserver anda akan mempunyai sambungan Istio di dalamnya. Mulai sekarang, pilihan pemasangan berbeza bergantung pada sama ada anda menggunakannya untuk tujuan pengeluaran atau jika anda bereksperimen dengannya di persekitaran terpencil anda sendiri.
Kami akan menganggap yang terakhir adalah masalahnya, dan memasang istio tanpa pengesahan TLS.
$ kubectl apply -f install / kubernetes / istio-demo.keladiIni akan mewujudkan sistem istio ruang nama baru di mana semua komponen seperti istio-pilot dan pintu masuk akan dipasang.
Penerapan Aplikasi dan Istio Injector
Di sinilah utiliti Istio. Istio menambahkan proksi sampingan ke perkhidmatan anda, dan ini dilakukan tanpa mengubah kod sebenar aplikasi anda. Sekiranya istio-sidecar-injector automatik diaktifkan. Anda boleh melabel ruang nama dengan istio-injection = diaktifkan dan apabila aplikasi anda disebarkan di ruang nama ini, pod mereka sendiri akan mempunyai bekas Envoy khusus dan bekas untuk aplikasi inti. Contohnya, mari labelkan ruang nama lalai
$ kubectl label namespace default istio-injection = didayakanSekarang mari kita gunakan contoh aplikasi BookInfo di ruang nama ini. Dari direktori root perwakilan Isitio yang kami kloning, jalankan:
$ kubectl berlaku -f sampel / bookinfo / platform / kube / bookinfo.keladiAnda boleh menyenaraikan semua pod yang berjalan di sini:
$ kubectl dapatkan podPilih mana-mana dari mana-mana dan lihat perinciannya. Sebagai contoh, salah satu pod dari aplikasi BookInfo dalam penyebaran saya bernama detail-v1-6865b9b99d-6mxx9
$ kubectl menerangkan pod / perincian-v1-6865b9b99d-6mxx9Dalam keterangannya, anda akan melihat bahawa pod mengandungi dua bekas, yang pertama adalah komponen sebenar menjalankan aplikasi gambar contoh-bookinfo-details-v1: 1.8.0 dan yang kedua adalah istio-proksi yang menjalankan gcr gambar.io / istio-release / proxyv2: 1.0.0 .
Istio menawarkan kawalan terperinci ke atas jaring perkhidmatan anda kerana menyuntikkan bekas ini ke bahagian yang sangat baik di mana aplikasi anda berada. Ini digabungkan dengan TLS yang mudah digunakan untuk komunikasi dan kawalan lalu lintas yang halus adalah salah satu daripada banyak sebab mengapa aplikasi besar dapat memanfaatkan jaringan perkhidmatan seperti Istio.
Rujukan
Senibina yang sebenarnya mempunyai banyak komponen seperti Pilot, Citadel dan Mixer masing-masing dengan peranan pentingnya untuk dilaksanakan. Anda boleh mengetahui lebih banyak mengenai komponen ini di sini dan cuba menggunakan perkhidmatan mikro anda sendiri di sini.