Terjemahan artikel disiapkan khusus untuk siswa program Platform Infrastruktur Berbasis Kubernet .

Menyiapkan microservice dasar di Kubernetes tampak sederhana. Dalam sebuah artikel baru-baru ini, kami berbicara tentang betapa mudahnya untuk mulai bekerja dengan wadah. Kami mengumpulkan gambar Docker sederhana, menggunakannya menggunakan Kubernetes, dan menjalankan permintaan aplikasi. Itu tidak sulit, tetapi dalam kehidupan, arsitektur cloud biasanya lebih rumit. Mereka termasuk lusinan dan bahkan ratusan layanan dengan database, otentikasi, dan elemen lain yang diperlukan dalam kenyataan.
Untuk mengelola mereka kadang-kadang sakit kepala terus menerus. Dalam artikel ini, kita akan berbicara tentang Istio, alat untuk jala layanan (kami melihat arsitektur ini sebelumnya ) yang membawa pengelolaan penyebaran cloud besar ke tingkat berikutnya.
Layanan Microsoft memberi Anda skalabilitas yang hebat, dan jala layanan melengkapi mereka dengan manfaat sentralisasi yang tipikal dari lingkungan monolitik (seperti log dan kontrol versi). Kami menulis lebih banyak tentang fitur dan manfaat dari mesh layanan dalam artikel sebelumnya dalam seri ini.
Publikasi yang sama berfokus pada kemampuan Istio untuk menerapkan pola arsitektur cloud menggunakan jaringan mesh. Kita akan belajar cara mengkonfigurasi pesawat kontrol, mempertimbangkan kekuatan Istio dan, akhirnya, mengambil layanan Kubernetes yang kami bekerja dengan terakhir kali, menambahkan proxy sespan untuk itu dan mengaitkannya dengan pesawat kontrol yang baru dibuat.
Memperkenalkan data plane dan proxy sespan
Dua istilah arsitektur utama dalam Istio adalah bidang data dan bidang kontrol. Pesawat data bekerja dengan data yang dipindahkan dalam aplikasi, ditransfer ke berbagai instance layanan, dan diproses oleh layanan itu sendiri. Untuk implementasinya, sebagian besar proxy sespan digunakan. Pada tingkat manajemen, urutan instantiasi layanan, lokasi data telemetri, dan informasi layanan ditentukan. Elemen utama dari pesawat kontrol termasuk Pilot dan Mixer. Mari kita lihat bagaimana semuanya bekerja.
Proksi sespan berjalan bersama dengan perapian yang mendefinisikan layanan Anda di Kubernetes. Itu ditambahkan ke komponen utama dari layanan dan bekerja dengan lalu lintas yang masuk ke layanan ini. Anda dapat menambahkan proxy sespan ke definisi layanan yang ada di perapian: hanya baris yang mendefinisikan proxy sespan yang akan ditambahkan ke layanan dan itu akan mulai berfungsi.

Sebagai gantinya, Anda akan mendapatkan daftar manfaat yang mendasari jaringan cloud cloud Istio. Proksi sespan memotong lalu lintas yang memasuki layanan dan memungkinkan perutean yang cerdas. Kita berbicara tentang tugas-tugas sederhana, seperti load balancing atau penanganan interupsi TLS, yang secara signifikan mempercepat pekerjaan, dan proses yang lebih kompleks, seperti kontrol versi, penyebaran bertahap versi baru suatu layanan, dan mengumpulkan indikator pemanfaatan sumber daya. Sidecar-proxy memungkinkan Anda untuk menambahkan semua fitur ini ke arsitektur layanan microsoft yang ada tanpa mengatur ulang seluruh sistem .
Ketika tujuan awal proxy sespan menjadi jelas, manfaat Istio dan layanan cloud secara umum menjadi jelas. Bahkan, semua arsitektur sidecar-proxy secara agregat, berfungsi sebagai elemen penghubung terpadu antara pod layanan, melewati semua lalu lintas yang melewati aplikasi. Ini berarti, jika perlu, untuk memperkuat perlindungan, mereka bertindak sebagai satu lokasi di mana Anda dapat menambahkan proses otentikasi dan protokol HTTPS di antara layanan, menyimpan log peristiwa untuk memeriksa anomali, dan menggunakan kontrol lalu lintas dan alat penyaringan untuk otentikasi.
Selain itu, karena proxy sespan bertindak sebagai titik akhir sentral untuk komunikasi antara layanan, mereka meningkatkan ketahanan aplikasi dan menambah tingkat skalabilitas tambahan. Salah satu kelemahan dari layanan microser adalah bahwa semua pod server terisolasi, dan jika ada sesuatu yang salah dengan layanan microser, permintaan dapat diproses secara perlahan atau disetel ulang sepenuhnya. Berkat proksi sespan, Anda dapat secara terpusat menambah waktu tunggu, mengonfigurasi keseimbangan muatan cerdas, dan memperluas kemampuan pemantauan.
Sentralisasi: bidang kendali
Selain bidang data, Istio termasuk bidang kontrol. Ia memainkan peran pengontrol untuk semua proxy sespan yang dieksekusi dalam aplikasi, dan repositori pusat untuk semua informasi (seperti entri log dan informasi versi), yang dirasakan oleh layanan pada jaringan sebagai satu-satunya sumber data yang dapat diandalkan.

Saat bekerja dengan Istio, Kubernetes adalah cara utama untuk berinteraksi dengan bidang kontrol. Setelah menginstal paket Istio dan menambahkan definisi, Anda dapat menggunakan perintah kubectl
yang mengontrol status sistem untuk mengakses bidang kontrol. Misalnya, proses memperbarui perapian ke versi baru menggunakan kubectl
dimulai dengan memperbarui variabel dari bidang kontrol lokal.
Ini paling mudah dilihat menggunakan perintah get-svc
di kubectl
- Anda akan mendapatkan daftar layanan yang terkait dengan perpustakaan tertentu. Untuk memeriksa komponen Istio mana yang sedang berjalan, Anda dapat menggunakan perintah berikut:
kubectl get svc -n istio-system
Daftar elemen bidang kontrol Istio utama yang berjalan di latar belakang ditampilkan. Anda mungkin sudah terbiasa dengan beberapa dari mereka, seperti Citadel, layanan yang mengelola perlindungan lalu lintas antar layanan.
Instal Istio
Mari kita lihat fitur apa yang didukung Istio secara default. Kami akan menginstal bidang kontrol Istio untuk mengelola API HTTP dasar yang dijelaskan dalam artikel sebelumnya. Layanan API ini didefinisikan dalam Kubernetes dan diimplementasikan sebagai satu-satunya di bawah Kubernetes dengan API berjalan di dalamnya.
Untuk menginstal Istio, ikuti langkah-langkah di panduan resmi cepat. Mulailah dengan mengunduh versi Istio terbaru dari halaman yang sesuai. Program ini masih aktif dikembangkan, jadi bekerja paling baik dengan rilis terbaru. Cukup unduh file dan pastikan tersedia di direktori yang benar.
Kemudian tambahkan definisi Istio ke Kubernetes sehingga Anda dapat menggunakannya dengan kubectl
baris perintah kubectl
. Tambahkan file .yaml
diperoleh sebelumnya ke direktori instalasi menggunakan perintah kubectl apply
:
kubectl apply -f install/kubernetes/helm/istio/templates/crds.yaml
Kemudian aktifkan instalasi Istio dengan memilih metode otentikasi. Saya akan menggunakan otentikasi HTTPS mutual mutual, yang bagus untuk demonstrasi dan memulai. Untuk menambahkan jala layanan ke proyek yang ada, Anda perlu mencari tahu beberapa opsi yang tersedia. Pada tahap ini, Anda dapat menjalankan perintah berikut:
kubectl apply -f install/kubernetes/istio-demo-auth.yaml
Setelah itu Anda bisa melanjutkan. Anda perlu menambahkan struktur Istio ke pod yang dibuat sebelumnya, dan untuk pod baru, tambahkan Istio sebagai ketergantungan.
Penerapan aplikasi Helloworld
Kami akan menggunakan aplikasi uji coba helloworld, yang dijelaskan dalam publikasi kami sebelumnya. Akan dibuat: satu penyebaran, satu layanan, satu gateway, dan satu layanan virtual. Perbarui file konfigurasi agar sesuai dengan yang berikut:
helloworld.yaml
apiVersion: v1 kind: Service metadata: name: helloworld spec: type: ClusterIP ports: - port: 80 targetPort: 8080 selector: app: helloworld --- apiVersion: apps/v1 kind: Deployment metadata: name: helloworld-v1 spec: replicas: 1 selector: matchLabels: app: helloworld template: metadata: labels: app: helloworld version: v1 spec: containers: - name: helloworld-kubernetes - image: haseebm/helloworld-kubernetes ports: - containerPort: 8080 --- apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: helloworld-gateway spec: selector: istio: ingressgateway # use istio default controller servers: - port: number: 80 name: http protocol: HTTP hosts: - "*" --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: helloworld spec: hosts: - "*" gateways: - helloworld-gateway http: route: - destination: host: helloworld port: number: 80
Proxy sesecar Istio manual
Istio menggunakan sampel proxy sespan untuk menempatkan wadah proxy sespan Istio di satu perapian dengan wadah aplikasi helloworld.
$ kubectl apply -f <(istioctl kube-inject -f helloworld.yaml) service/helloworld created deployment.extensions/helloworld-v1 created gateway.networking.istio.io/helloworld-gateway created virtualservice.networking.istio.io/helloworld created
Pastikan pod dan layanan dilakukan:
$ kubectl get pod,svc | grep helloworld pod/helloworld-v1-1cbca3f8d5-achr2 2/2 Running service/helloworld ClusterIP 10.160.58.61
Sekarang periksa lalu lintas untuk aplikasi helloworld:
$ curl a2******.ap-southeast-1.elb.amazonaws.com/api/hello
Halo dunia v1
Langkah selanjutnya
Istio adalah cara yang bagus untuk mengenal jaringan mesh teknologi cloud dan manajemen layanan microser yang cerdas secara umum. Seperti yang telah kami tulis lebih dari sekali, layanan microser yang dikelola dengan baik memiliki banyak keuntungan teknis, termasuk dalam hal penskalaan. Namun, untuk mendapatkan manfaat ini, Anda perlu menggunakan teknologi yang ada secara efektif.
Di masa depan, kita akan melihat skenario lain untuk menggunakan jaringan Istio dan cloud mesh untuk meningkatkan keamanan dan pengelolaan arsitektur percobaan kami. Jadi, artikel selanjutnya akan fokus pada manajemen penyebaran dan versi di Istio untuk secara efisien mendistribusikan pembaruan kode tanpa gangguan dan kerusakan pada penyebaran.
Asad Faizi
Pendiri dan CEO, CloudPlex.io, Inc
asad@cloudplex.io
www.cloudplex.io