diskusi.tech (beta) Community

loading...
Cover image for Mencoba Anthos Service Mesh on GKE

Mencoba Anthos Service Mesh on GKE

alevz profile image Johanes Glenn ・4 min read

Latar Belakang

Salah satu yang menginspirasi untuk tulisan ini adalah acara Kubernetes Community Day Indonesia 2021 kemarin yang menurut saya sendiri sangat memberkati (terutama para pembicara yang membagikan ide/pengalaman mereka = priceless).

Pada acara tersebut saya dan buddy saya di kantor ( seseorang yang saya banyak belajar ) berkesempatan membagikan informasi mengenai Anthos Service Mesh (ASM) di Google Cloud Platform. Mungkin saya juga akan menambahkan mengapa pilihannya jatuh ke ASM karena kami mewakili dari GCP tetapi di saat yang sama ingin membagikan hal yang masih memiliki relasi erat dengan Kubernetes dan Open Source Software.

Notes: Istio adalah open source service mesh yang digunakan di dalam ASM

Pada acara tersebut karena kami harus membawakan di dalam waktu yang terbatas, kami memutuskan untuk fokus kepada hal-hal umum pada penggunaan service mesh sehingga pembuatan Kubernetes Cluster dan installasi ASM akhirnya memutsukan untuk menggunakan deployment melalui GCP Marketplace. Teman-teman jika ingin mencoba bisa deploy dengan cara:

Masuk ke GCP Console > Pilih Marketplace > cari pilihan marketplace yang ada dengan kata "Anthos" > Pilih "Anthos Sample Deployment" pada pilihan yang ada > Masukan beberapa parameter > Selesai !

Alt Text

Namun tidak semua orang ingin menggunakan deployment seperti diatas, karena hal tersebut tulisan ini lebih mengarah mengenai bagaimana jika kita ingin melakukan test dan deployment cepat untuk menggunakan ASM pada Google Kubernetes Engine (GKE) Cluster kita.

Notes: Tulisan ini hanya bertujuan untuk memperlihatkan konsep dari ASM dan untuk deployment yang lebih tepat mohon membaca lebih lanjut ke dokumentasi yang ada.

Konsep

Anthos Service Mesh

Secara garis besar kita bisa melakukan deployment ASM dengan 4 langkah besar:

  1. Membuat GKE Cluster yang akan digunakan (atau pendakatan lainnya seperti menggunakan Anthos) dan menggunakan konfigurasi yang sudah diberikan untuk ASM.
  2. Install asmcli untuk membantu validasi dan installasi. mengenai asmcli
  3. Install ingress/egress gateway dan object seperti VirtualService dan Gateway
  4. Inject proxy ke workload yang diinginkan (atau auto-injection)

Untuk lebih lengkap kita bisa melihat langkah-langkah yang bisa di lakukan:

[Satu] Membuat GKE Cluster. Hingga sampai saat tulisan ini dibuat, ASM untuk GKE Autopilot masih menggunakan experimental asmcli command, karena itu saya masih memutuskan untuk menggunakan GKE Standard Cluster dengan beberapa hal yang menjadi pertimbangan:

  1. ASM membutuhkan mesin dengan 4vcpu dan minimal 8 vcpu yang terdapat di dalam cluster tersebut. Kita bisa mempersiapkan cluster kita dengan pertimbangan tersebut Kebutuhan Cluster untuk ASM
  2. GKE Cluster akan membutuhkan konfigurasi dengan Workload Identity, istio-system namespace dan label untuk serivce-mesh. Hal ini bisa dilihat di dokumentasi atau dibantu oleh asmcli.

[Dua] Kita bisa menggunakan opsi yang ada pada asmcli "enable-all" sehingga asmcli bisa melakukan semua konfigurasi tersebut pada cluster yang kita arahkan dan pada contoh di bawah saya menggunakan opsi "managed" untuk menggunakan managed control plane.

./asmcli install \  
-p PROJECT_ID \  
-l LOCATION \  
-n CLUSTER_NAME \  
--fleet_id FLEET_PROJECT_ID \  
--managed \  
--verbose \  
--output_dir CLUSTER_NAME \  
--enable-all
Enter fullscreen mode Exit fullscreen mode

Alt Text

[Tiga] Kita akan membutuhkan ingress gateway sebagai titik masuk komunikasi kita dan juga mempersiapkan auto proxy injection pada namespace ingress gateway kita dan workload kita. Untuk melakukan installasi ingress gateway kita bisa menggunakan sample yang ada pada output directory (bisa dilihat diatas ada opsi output-dir).

Secara singkat beberapa hal yang butuh dilakukan:

kubectl create namespace <gateway namespace>

#melihat revisi untuk managed controlplane  
kubectl -n istio-system get controlplanerevision

#setup untuk auto proxy injection pada namespace tersebut 
kubectl label namespace <gateway namespace> istio-injection- istio.io/rev=asm-managed --overwrite

#install istio-ingressgateway  
kubectl apply -n <gateway namespace> -f <output dir>/samples/gateways/istio-ingressgateway
Enter fullscreen mode Exit fullscreen mode

Alt Text

[Empat] Langkah terakhir adalah kita setup auto injection pada namespace workload kita dan deploy workload + istio object (Gateway dan VirtualService)

kubectl label namespace <workload namespace> istio-injection- istio.io/rev=asm-managed --overwrite
Enter fullscreen mode Exit fullscreen mode

Sebagai catatan kecil karena saya menggunakan Bank of Anthos dan mempersiapkan untuk Anthos Configuration Management untuk sinkronisasi pada tulisan selanjutnya saya menggunakan hierarki folder seperti di bawah.

Alt Text

Alt Text

Alt Text

Sebagai catatan kecil lainnya pada contoh yang ada, istio ingress gateway memiliki label istio: ingressgateway sehingga kita bisa menggunakan label tersebut sebagai selector pada Gateway object kita.

Dan setelah semuanya running, kita bisa memanggil workload kita melalui istio ingress gateway ip yang sudah tersedia.

Alt Text

Mungkin sampai sejauh ini dahulu untuk part yang pertama ini, setelah ini kita bisa explore lebih jauh lagi penggunaan ASM dengan bantuan Anthos Configuration Manager untuk sinkronisasi konfigurasi. Btw, jika ada teman-teman ingin reachout / diskusi santai jangan ragu untuk DM atau reach me out melalui: https://linktr.ee/alevz

Discussion

pic
Editor guide