Kubernetes

Jala Layanan Kubernetes

Jala Layanan Kubernetes
Kubernetes memiliki banyak jenis sumber daya yang membantu Anda mengabstraksi ide layanan atau layanan mikro. Misalnya, jika frontend aplikasi Anda ingin berinteraksi dengan backend, ia tidak perlu peduli dengan pod mana yang dicarinya, atau bahkan alamat IP mana yang diharapkan akan ditempati oleh pod backend. Pod diekspos melalui layanan. (Jika Anda baru mengenal Kubernetes, saya merekomendasikan posting ini untuk lebih memahami apa itu pod dan konsep penting lainnya.)

Pada dasarnya, Kubernetes mengekspos a layanan backend secara internal di dalam cluster dan front-end berinteraksi dengan layanan ini. Pod yang menawarkan layanan dapat diganti dengan sangat baik dan tidak ada yang akan memperhatikan apa pun. Namun seiring dengan bertambahnya fitur di aplikasi Anda, jumlah layanan yang perlu Anda pertahankan juga bertambah. Setiap layanan berpotensi dapat berbicara dengan setiap layanan lain di cluster, dan jaringan yang dihasilkan disebut sebagai Jala Layanan.

Ada banyak add-on untuk Kubernetes untuk membantu kami menyederhanakan pengelolaan Service Mesh ini. Banyak fitur kunci seperti TLS, Load Balancing otomatis, mengamankan API bahkan di jaringan internal, dll. ditawarkan oleh pengaya ini. Banyak opsi seperti Istio, Linkerd, dan Conduit dapat diintegrasikan dengan Kubernetes untuk mencapai ini. Kami akan melihat Istio di posting ini karena ini versi 1.0 baru-baru ini diumumkan.

Prasyarat

Untuk memulai dengan Istio, Anda memerlukan cluster kubernetes yang berfungsi working. Ada tiga cara untuk mendapatkannya.

  1. Anda dapat menginstal Minikube untuk membuat cluster node tunggal di mesin lokal Anda.
  2. Atau, jika Anda menggunakan Docker di Windows atau Mac, Anda dapat mengaktifkan cluster Kubernetes node tunggal di pengaturan Docker.
  3. Atau Anda dapat menggunakan layanan online seperti taman bermain Katacoda. Kami akan menggunakan ini.

Mengapa menggunakan Layanan Mesh?

Memasang mesh layanan, seperti Istio membuat bekerja dengan layanan mikro menjadi mudah. Saat mengembangkan, Anda tidak perlu khawatir tentang fakta bahwa layanan mikro Anda harus menawarkan dukungan untuk TLS bersama, penyeimbangan beban, atau aspek lain apa pun seperti penemuan layanan. Service Mesh yang ideal memungkinkan Anda untuk menghubungkan layanan mikro, mengamankannya dari satu sama lain dan dari dunia luar, dan mengelolanya dengan cara yang terorganisir. Ini sangat membantu pengembang dan operator.

Memasang Istio

Menginstal Istio memerlukan cluster Kubernetes. Jika Anda memiliki cluster node tunggal seperti yang Anda dapatkan dengan Minikube atau Docker di Desktop maka semua perintah dapat dijalankan di node lokal Anda. Namun, jika Anda menggunakan cluster multi-simpul seperti yang ditawarkan oleh Katacoda playground, ingatlah bahwa sebagian besar perintah dan prosedur pengaturan dilakukan pada node master. Ya, itu memengaruhi seluruh cluster, tetapi kita hanya perlu berinteraksi dengan node master.

Kami mulai dengan mengkloning (atau mengunduh) rilis terbaru Istio dari Github. Pengguna Windows mungkin ingin mengunjungi halaman ini dan mendapatkan yang sesuai .zip mengajukan.

$ curl -L https://git.io/getLatestIstio | SH -
$ cd istio-1.0.0

Nama repo dapat berubah seiring waktu seiring rilis yang lebih baru, pada saat penulisan ini.0.0 adalah rilis stabil terbaru. Repo ini tidak hanya berisi ekstensi mesh layanan tetapi juga aplikasi sampel yang disebut BookInfo untuk tujuan eksperimen. Script juga menambahkan direktori baru $PWD/istio-1.0.0/bin ke variabel PATH Anda.

Direktori ini berisi istioctl biner yang dapat digunakan untuk berinteraksi dengan cluster. Pengguna Windows cukup memanggil biner dengan masuk ke folder istio-1.0.0\bin dan menelepon .\istioctl menggunakan powershell atau command prompt. Tapi ini adalah add-on opsional.

Jika Anda menggunakan Mac, Anda dapat melakukannya menggunakan perintah berikut:

$ekspor PATH=$PWD/bin:$PATH

Selanjutnya kita perlu memperluas API Kubernetes kita dengan Definisi Sumber Daya Kustom (CRD) yang disediakan oleh istio.

$ kubectl apply -f install/kubernetes/helm/istio/template/crds.yaml

Ini mungkin berlaku dalam beberapa detik dan setelah selesai kube-apiserver Anda akan memiliki ekstensi Istio yang terpasang di dalamnya. Dari sini, opsi penginstalan bervariasi tergantung pada apakah Anda menggunakan ini untuk tujuan produksi atau jika Anda bereksperimen dengannya di lingkungan terisolasi Anda sendiri.

Kami akan menganggap yang terakhir adalah masalahnya, dan menginstal istio tanpa otentikasi TLS.

$ kubectl apply -f install/kubernetes/istio-demo.yaml

Ini akan membuat sistem istio namespace baru di mana semua berbagai komponen seperti istio-pilot dan gateway ingress akan diinstal.

Penerapan Aplikasi dan Injektor Istio

Inilah kegunaan Istio. Istio menambahkan proxy sespan ke layanan Anda, dan ini dilakukan tanpa mengubah kode sebenarnya dari aplikasi Anda. Jika injektor istio-sidecar-otomatis diaktifkan. Anda dapat memberi label namespace dengan istio-injection=enabled dan ketika aplikasi Anda di-deploy pada namespace ini, pod itu sendiri akan memiliki wadah Envoy khusus bersama dengan wadah untuk aplikasi inti. Misalnya, mari beri label namespace default

$ kubectl label namespace default istio-injection=diaktifkan

Sekarang mari kita gunakan contoh aplikasi BookInfo di namespace ini. Dari direktori root rep Isitio yang kami kloning, jalankan:

$ kubectl apply -f sample/bookinfo/platform/kube/bookinfo.yaml

Anda dapat membuat daftar semua pod yang berjalan di sini:

$ kubectl dapatkan pod

Pilih pod apa saja dari yang ada dan lihat detailnya. Misalnya, salah satu pod dari aplikasi BookInfo dalam penerapan saya bernama details-v1-6865b9b99d-6mxx9

$ kubectl mendeskripsikan pod/details-v1-6865b9b99d-6mxx9

Dalam deskripsi, Anda akan melihat bahwa pod berisi dua wadah, pertama adalah komponen yang menjalankan aplikasi gambar yang sebenarnya example-bookinfo-details-v1:1.8.0 dan yang kedua adalah istio-proxy yang menjalankan gambar  gcr.io/istio-release/proxyv2:1.0.0 .

Istio menawarkan kontrol berbutir halus atas mesh layanan Anda karena ia menyuntikkan container ini ke pod tempat aplikasi Anda berada. Ini dikombinasikan dengan TLS yang mudah digunakan untuk komunikasi dan kontrol lalu lintas berbutir halus adalah salah satu dari banyak alasan mengapa aplikasi besar dapat mengambil manfaat dari mesh layanan seperti Istio.

Referensi

Arsitektur sebenarnya memiliki banyak komponen seperti Pilot, Citadel dan Mixer masing-masing dengan peran penting untuk dilakukan. Anda dapat mempelajari lebih banyak tentang komponen ini di sini dan mencoba menerapkan layanan mikro Anda sendiri di sini.

Cara Mengubah Pengaturan Mouse dan Touchpad Menggunakan Xinput di Linux
Sebagian besar distribusi Linux dikirimkan dengan pustaka "libinput" secara default untuk menangani kejadian input pada sistem. Ini dapat memproses ke...
Petakan ulang tombol mouse Anda secara berbeda untuk perangkat lunak yang berbeda dengan Kontrol Tombol X-Mouse
Mungkin Anda membutuhkan alat yang dapat membuat kontrol mouse Anda berubah dengan setiap aplikasi yang Anda gunakan. Jika demikian, Anda dapat mencob...
Ulasan Mouse Nirkabel Microsoft Sculpt Touch
Saya baru-baru ini membaca tentang Microsoft Sculpt Touch mouse nirkabel dan memutuskan untuk membelinya. Setelah menggunakannya untuk sementara waktu...