Menurut dokumentasi, Istio adalah aplikasi yang membantu anda untuk menghubungkan, mengamankan, mengontrol dan memantau services (microservices). Istio mengatasi permasalahan kerumitan transisi dari aplikasi monolitik ke aplikasi terdistribusi dengan arsitektur microservices.

Apa itu Istio?

Menurut dokumentasi, Istio adalah aplikasi yang membantu anda untuk menghubungkan, mengamankan, mengontrol dan memantau services (microservices). Istio mengatasi permasalahan kerumitan transisi dari aplikasi monolitik ke aplikasi terdistribusi dengan arsitektur microservices.

Ketika aplikasi berkembang kerumitan microservices semakin bertambah dan menyulitkan untuk mengelola dan memahami keterkaitan antara services satu dengan services lainnya. Dari sinilah istilah services mesh muncul. Istilah ini menggambarkan jaringan microservices yang membentuk suatu aplikasi dan interaksi antara services tsb.

Dengan Istio dapat dilakukan hal-hal berikut:

  • Load balancing otomatis untuk HTTP, TCP, WebSocket dan gRPC.
  • Traffic management dengan routing rulesretriesfailoverscircuit breakerfault injection.
  • Metriks dan monitoring.
  • Mengatur keamanan komunikasi antar services.
  • Deployment dengan berbagai macam cara: rolloutA/Bcanary dsb.

Instalasi Istio dengan Helm

Kali ini kita akan melakukan installasi Istio dengan helm charts. Jika anda belum memasang Helm pada kluster Kubernetes anda, silakan melihat artikel ini. Diasumsikan anda sudah memiliki kluster Kubernetes yang berjalan baik di lokal ataupun di Azure Kubernetes Services (AKS) ataupun Google Kubernetes Engine (GKE).

Tambahkan repo Istio terlebih dahulu:

$ helm repo add istio.io https://storage.googleapis.com/istio-release/releases/1.1.7/charts/

Periksa hasil dari penambahan repo Istio tsb:

helm repo list

Output:

NAME            URL
stable          https://kubernetes-charts.storage.googleapis.com
local           http://127.0.0.1:8879/charts
istio.io        https://storage.googleapis.com/istio-release/releases/1.1.7/charts/

Kemudian lakukan instalasi Custom Resource Definition Istio (CRD) dengan chart istio-init:

$ helm install --name istio-init --namespace istio-system istio.io/istio-init

Anda akan mendapatkan output seperti berikut:

NAME:   istio-init
LAST DEPLOYED: Sun Jul 14 23:22:36 2019
NAMESPACE: istio-system
STATUS: DEPLOYED

Sekarang lakukan instalasi Istio dengan helm chart. Sebaiknya turut diinstall juga grafana, aplikasi untuk menampilkan dashboard serta monitoring metriks serta kiali, aplikasi untuk melihat visualisasi keterkaitan antar microservices. Aktifkan pilihan konfigurasi dengan

--set grafana.enabled=true atau --set kiali.enabled=true.

$ helm install --name istio --namespace istio-system --set grafana.enabled=true istio.io/istio

Periksa pods yang muncul dari hasil instalasi Istio:

kubectl get pods -n istio-system

Jika berhasil maka terlihat seperti berikut:

NAME                                      READY     STATUS      RESTARTS   AGE
grafana-85689d5548-6zbtc                  1/1       Running     0          15h
grafana-85689d5548-ctzvg                  1/1       Running     0          15h
istio-citadel-5fdf5ccf85-mkt2l            1/1       Running     0          15h
istio-egressgateway-6f887d4d46-vkvjh      1/1       Running     0          15h
istio-galley-88c6c64b7-49hmz              1/1       Running     0          15h
istio-ingressgateway-7646456c5c-hdvrl     1/1       Running     0          1d
istio-init-crd-10-sh7dn                   0/1       Completed   0          6m
istio-init-crd-11-64nlt                   0/1       Completed   0          6m
istio-pilot-65bd87cb4c-8s4zp              2/2       Running     0          1d
istio-policy-55cdb54666-hvshp             2/2       Running     0          15h
istio-sidecar-injector-596f6bf5d5-qbl6k   1/1       Running     0          1d
istio-telemetry-7dbb44954f-k2vgc          2/2       Running     0          15h
istio-tracing-d444f578-mc4b4              1/1       Running     1          1d
kiali-5bdc5b4d69-89lqn                    1/1       Running     0          15h
kiali-5bdc5b4d69-cc624                    1/1       Running     0          1d
prometheus-6c56b9bf49-46z97               1/1       Running     0          15h

Istio menggunakan mekanisme sidecar untuk memasang Envoy proxy pada tiap pod yang dijalankan di Kubernetes. Untuk melakukan otomatisasi hal ini perlu ditambahkan label istio-injection=true untuk namespace yang dituju:

kubectl label namespace default istio-injection=enabled

Kemudian periksa hasil dari pelabelan tsb

kubectl get namespaces -L istio-injection

Output:

NAME           STATUS    AGE       ISTIO-INJECTION
default        Active    31d       enabled
istio-system   Active    31d
kube-public    Active    31d
kube-system    Active    31d

Instalasi Istio sudah berhasil. Di artikel selanjutnya kita akan membahas bagaimana melakukan konfigurasi Istio untuk berbagai keperluan.

Dengan pengalaman PT Quorum Nusa Prestasi yang luas dalam industri Teknologi Informasi, kami mendorong klien kami untuk membuka bisnis mereka terhadap peluang baru dan mewujudkan impian. Perusahaan perangkat lunak ada untuk memecahkan masalah dan membantu kehidupan, dan ini adalah prioritas utama kami.

Continue Reading