Menyiapkan aplikasi untuk Anthos Service Mesh


Anthos Service Mesh adalah alat yang canggih untuk mengelola dan memantau aplikasi terdistribusi. Untuk mendapatkan hasil maksimal dari Anthos Service Mesh, sebaiknya pahami abstraksi yang mendasarinya, termasuk container dan Kubernetes. Tutorial ini akan membawa Anda dari kode sumber ke container yang berjalan di GKE, sampai ke tahap sebelum menginstal Anthos Service Mesh.

Jika sudah memahami konsep Kubernetes dan mesh layanan, Anda dapat melewati tutorial ini dan langsung membuka panduan penginstalan Anthos Service Mesh.

Tujuan

Dalam tutorial ini, Anda telah:

  1. Jelajahi aplikasi multi-layanan "hello world" yang sederhana.
  2. Menjalankan aplikasi dari sumber
  3. Memasukkan aplikasi ke dalam container.
  4. Membuat cluster Kubernetes.
  5. Men-deploy container ke cluster.

Sebelum memulai

Lakukan langkah-langkah berikut untuk mengaktifkan Anthos Service Mesh API:
  1. Buka halaman Kubernetes Engine di Konsol Google Cloud.
  2. Buat atau pilih project.
  3. Tunggu hingga API dan layanan terkait diaktifkan. Proses ini dapat memerlukan waktu beberapa menit.
  4. Make sure that billing is enabled for your Google Cloud project.

Anda dapat mengikuti tutorial ini menggunakan Cloud Shell, yang menyediakan virtual machine (VM) g1-small Google Compute Engine yang menjalankan sistem operasi Linux berbasis Debian, atau komputer Anda sendiri yang menjalankan Linux atau macOS.

Opsi A: Menggunakan Cloud Shell

Keuntungan menggunakan Cloud Shell adalah:

  • Lingkungan pengembangan Python 2 dan Python 3 (termasuk virtualenv) sudah disiapkan.
  • Alat command line gcloud, docker, git, dan kubectl yang digunakan dalam tutorial ini sudah terinstal.
  • Anda dapat memilih editor teks:

    • Editor kode, yang Anda akses dengan mengklik di bagian atas jendela Cloud Shell.

    • Emacs, Vim, atau Nano, yang Anda akses dari command line di Cloud Shell.

Untuk menggunakan Cloud Shell:

  1. Buka Konsol Google Cloud.
  2. Klik tombol Activate Cloud Shell di bagian atas jendela Google Cloud Console.

    Konsol Google Cloud Platform

    Sesi Cloud Shell akan terbuka di dalam frame baru di bagian bawah Konsol Google Cloud dan menampilkan prompt command line.

    Sesi Cloud Shell

Opsi B: Menggunakan alat command line secara lokal

Jika lebih suka mengikuti tutorial ini di komputer Linux atau macOS, Anda harus menyiapkan dan menginstal hal berikut:

  1. Menyiapkan lingkungan pengembangan Python 3 dan Python 2.
  2. Menginstal Google Cloud CLI.
  3. Instal kubectl, yang juga merupakan command line yang Anda gunakan untuk berkomunikasi dengan Kubernetes.

    gcloud components install kubectl
  4. Instal Docker Community Edition (CE). Anda dapat menggunakan alat command line docker untuk membuat image container dari aplikasi contoh.

  5. Instal alat Git source control agar Anda dapat mengambil aplikasi contoh dari GitHub.

Mendownload kode contoh

  1. Download kode sumber helloserver:

    git clone https://github.com/GoogleCloudPlatform/istio-samples
    
  2. Ubah ke direktori kode contoh:

    cd istio-samples/sample-apps/helloserver
    

Menjelajahi aplikasi multi-layanan

Aplikasi contoh ditulis dalam Python, dan memiliki dua komponen yang berkomunikasi menggunakan REST:

  • server: Server sederhana dengan satu endpoint GET, / , yang mencetak "halo dunia" ke konsol.
  • loadgen: Skrip yang mengirimkan traffic ke server, dengan jumlah permintaan per detik (RPS) yang dapat dikonfigurasi.

aplikasi contoh

Menjalankan aplikasi dari sumber

Untuk memahami aplikasi contoh, jalankan aplikasi contoh di Cloud Shell atau komputer Anda.

  1. Dari direktori sample-apps/helloserver, jalankan server:

    python3 server/server.py
    

    Saat memulai, server akan menampilkan hal berikut:

    INFO:root:Starting server...
    
  2. Buka jendela terminal lain agar Anda dapat mengirimkan permintaan ke server. Jika Anda menggunakan Cloud Shell, klik untuk membuka sesi lain.

  3. Kirim permintaan ke server:

    curl http://localhost:8080
    

    server merespons:

    Hello World!
    
  4. Dari direktori tempat Anda mendownload kode contoh, ubah ke direktori yang berisi loadgen:

    cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen
    
  5. Buat variabel lingkungan berikut:

    export SERVER_ADDR=http://localhost:8080
    export REQUESTS_PER_SECOND=5
    
  6. Mulai virtualenv:

    virtualenv --python python3 env
    
  7. Aktifkan lingkungan virtual:

    source env/bin/activate
    
  8. Instal persyaratan untuk loadgen:

    pip3 install -r requirements.txt
    
  9. Jalankan loadgen:

    python3 loadgen.py
    

    Saat memulai, loadgen akan menampilkan pesan yang mirip dengan berikut ini:

    Starting loadgen: 2019-05-20 10:44:12.448415
    5 request(s) complete to http://localhost:8080
    

    Di jendela terminal lainnya, server menulis pesan ke konsol yang mirip dengan berikut ini:

    127.0.0.1 - - [21/Jun/2019 14:22:01] "GET / HTTP/1.1" 200 -
    INFO:root:GET request,
    Path: /
    Headers:
    Host: localhost:8080
    User-Agent: python-requests/2.22.0
    Accept-Encoding: gzip, deflate
    Accept: */*
    

    Dari sudut pandang jaringan, seluruh aplikasi kini berjalan di host yang sama (baik komputer lokal Anda maupun VM Cloud Shell). Karena alasan ini, Anda dapat menggunakan localhost untuk mengirim permintaan ke server.

  10. Untuk menghentikan loadgen dan server, masukkan Ctrl-c di setiap jendela terminal.

  11. Di jendela terminal loadgen, nonaktifkan lingkungan virtual:

    deactivate
    

Mem-build aplikasi dalam container

Untuk menjalankan aplikasi di GKE, Anda harus mengemas aplikasi contoh—server dan loadgen—ke dalam containers. Penampung adalah cara untuk mengemas aplikasi sedemikian rupa sehingga terisolasi dari lingkungan dasarnya.

Untuk memasukkan aplikasi ke dalam container, Anda memerlukan Dockerfile. Dockerfile adalah file teks yang menentukan perintah yang diperlukan untuk menyusun kode sumber aplikasi dan dependensinya ke dalam gambar Docker. Setelah mem-build image, Anda harus menguploadnya ke container registry, seperti Docker Hub atau Container Registry.

Contoh ini dilengkapi dengan Dockerfile untuk server dan loadgen dengan semua perintah yang diperlukan untuk membuat image. Berikut adalah Dockerfile untuk server:

FROM python:3.9-slim as base
FROM base as builder
RUN apt-get -qq update \
    && apt-get install -y --no-install-recommends \
        g++ \
    && rm -rf /var/lib/apt/lists/*

# Enable unbuffered logging
FROM base as final
ENV PYTHONUNBUFFERED=1

RUN apt-get -qq update \
    && apt-get install -y --no-install-recommends \
        wget

WORKDIR /helloserver

# Grab packages from builder
COPY --from=builder /usr/local/lib/python3.9/ /usr/local/lib/python3.9/

# Add the application
COPY . .

EXPOSE 8080
ENTRYPOINT [ "python", "server.py" ]
  • Perintah FROM python:3-slim as base memberi tahu Docker untuk menggunakan image Python 3 terbaru sebagai image dasar.
  • Perintah COPY . . akan menyalin file sumber di direktori kerja saat ini (dalam hal ini, hanya server.py) ke dalam sistem file container.
  • ENTRYPOINT menentukan perintah yang digunakan untuk menjalankan container. Dalam hal ini, perintahnya hampir sama dengan yang Anda gunakan untuk menjalankan server.py dari kode sumber.
  • Perintah EXPOSE menentukan bahwa server memproses port 8080. Perintah ini tidak mengekspos port apa pun, tetapi berfungsi sebagai dokumentasi yang Anda perlukan untuk membuka port 8080 saat menjalankan container.

Bersiap untuk memasukkan aplikasi ke dalam container

  1. Setel variabel lingkungan berikut. Ganti PROJECT_ID dengan ID project Google Cloud Anda.

    export PROJECT_ID="PROJECT_ID"
    
    export GCR_REPO="asm-ready"
    

    Anda menggunakan nilai PROJECT_ID dan GCR_REPO untuk memberi tag pada image Docker saat membangun, lalu mengirimkannya ke Container Registry pribadi.

  2. Tetapkan project Google Cloud default untuk Google Cloud CLI.

    gcloud config set project $PROJECT_ID
    
  3. Menetapkan zona default untuk Google Cloud CLI.

    gcloud config set compute/zone us-central1-b
    
  4. Pastikan layanan Container Registry diaktifkan di project Google Cloud Anda.

    gcloud services enable containerregistry.googleapis.com
    

Memasukkan server ke dalam container

  1. Ubah ke direktori tempat server contoh berada:

    cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/
    
  2. Buat image menggunakan Dockerfile dan variabel lingkungan yang telah Anda tentukan sebelumnya:

    docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1 .
    

    Flag -t merepresentasikan tag Docker. Ini adalah nama image yang Anda gunakan saat men-deploy container.

  3. Kirim image ke Container Registry:

    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1
    

Memasukkan loadgen ke dalam container

  1. Ubah ke direktori tempat loadgen contoh berada:

    cd ../loadgen
    
  2. Buat gambar:

    docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1 .
    
  3. Kirim image ke Container Registry:

    docker push gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1
    

Membuat daftar gambar

Dapatkan daftar image dalam repositori untuk mengonfirmasi bahwa image dikirim:

gcloud container images list --repository gcr.io/$PROJECT_ID/asm-ready

Perintah tersebut merespons dengan nama image yang baru saja Anda kirim:

NAME
gcr.io/PROJECT_ID/asm-ready/helloserver
gcr.io/PROJECT_ID/asm-ready/loadgen

Membuat cluster GKE

Anda dapat menjalankan container ini di VM Cloud Shell atau di workstation menggunakan perintah docker run. Namun dalam produksi, Anda perlu mengorkestrasi container dengan cara yang lebih terpadu. Misalnya, Anda memerlukan sistem yang memastikan bahwa container selalu berjalan, dan Anda memerlukan cara untuk meningkatkan skala dan memulai instance tambahan container guna menangani peningkatan traffic.

Anda dapat menggunakan GKE untuk menjalankan aplikasi dalam container. GKE adalah platform orkestrasi container yang berfungsi dengan menghubungkan VM ke dalam cluster. Setiap VM disebut sebagai node. Cluster GKE didukung oleh sistem pengelolaan cluster open source Kubernetes. Kubernetes menyediakan mekanisme yang digunakan untuk berinteraksi dengan cluster Anda.

Untuk membuat cluster GKE:

  1. Membuat cluster:

    gcloud container clusters create asm-ready \
      --cluster-version latest \
      --machine-type=n1-standard-4 \
      --num-nodes 4
    

    Perintah gcloud membuat cluster di project dan zona Google Cloud yang Anda tetapkan sebelumnya. Untuk menjalankan Anthos Service Mesh, sebaiknya gunakan minimal 4 node dan jenis mesin n1-standard-4.

    Perintah untuk membuat cluster memerlukan waktu beberapa menit untuk diselesaikan. Saat cluster sudah siap, perintah tersebut akan menampilkan pesan seperti berikut:

    NAME        LOCATION       MASTER_VERSION  MASTER_IP      MACHINE_TYPE   NODE_VERSION   NUM_NODES  STATUS
    asm-ready  us-central1-b  1.13.5-gke.10   203.0.113.1    n1-standard-2  1.13.5-gke.10  4          RUNNING
    
  2. Berikan kredensial ke alat command line kubectl agar Anda dapat menggunakannya untuk mengelola cluster:

    gcloud container clusters get-credentials asm-ready
    
  3. Sekarang Anda dapat menggunakan kubectl untuk berkomunikasi dengan Kubernetes. Misalnya, Anda dapat menjalankan perintah berikut untuk mendapatkan status node:

    kubectl get nodes
    

    Perintah ini merespons dengan daftar node, mirip dengan yang berikut ini:

    NAME                                       STATUS   ROLES    AGE    VERSION
    gke-asm-ready-default-pool-dbeb23dc-1vg0   Ready    <none>   99s    v1.13.6-gke.13
    gke-asm-ready-default-pool-dbeb23dc-36z5   Ready    <none>   100s   v1.13.6-gke.13
    gke-asm-ready-default-pool-dbeb23dc-fj7s   Ready    <none>   99s    v1.13.6-gke.13
    gke-asm-ready-default-pool-dbeb23dc-wbjw   Ready    <none>   99s    v1.13.6-gke.13
    

Memahami konsep utama Kubernetes

Diagram berikut menggambarkan aplikasi yang berjalan di GKE:

aplikasi dalam container

Sebelum men-deploy container ke GKE, sebaiknya Anda meninjau beberapa konsep utama Kubernetes. Bagian akhir tutorial ini menyediakan link sehingga Anda dapat mempelajari setiap konsep lebih lanjut.

  • Node dan cluster: Di GKE, node adalah VM. Di platform Kubernetes lainnya, node dapat berupa mesin fisik atau virtual machine. Cluster adalah kumpulan node yang dapat diperlakukan bersama sebagai satu mesin, tempat Anda men-deploy aplikasi dalam container.

  • Pod: Di Kubernetes, container berjalan di dalam Pod. Pod adalah unit atom di Kubernetes. Pod menyimpan satu atau beberapa container. Anda men-deploy container server dan loadgen masing-masing di Pod-nya sendiri. Saat Pod menjalankan beberapa container (misalnya, server aplikasi dan server proxy), container akan dikelola sebagai entity tunggal dan berbagi resource Pod.

  • Deployment: Deployment adalah objek Kubernetes yang mewakili kumpulan Pod yang identik. Deployment menjalankan beberapa replika Pod yang didistribusikan di antara node cluster. Deployment akan otomatis menggantikan Pod yang gagal atau tidak responsif.

  • Layanan Kubernetes: Menjalankan kode aplikasi di GKE akan mengubah jaringan antara loadgen dan server. Saat menjalankan layanan di VM Cloud Shell atau di komputer, Anda dapat mengirim permintaan ke server menggunakan alamat localhost:8080. Setelah Anda men-deploy ke GKE, Pod dijadwalkan untuk dijalankan pada node yang tersedia. Secara default, Anda tidak dapat mengontrol node tempat Pod berjalan, sehingga Pod tidak memiliki alamat IP yang stabil.

    Guna mendapatkan alamat IP untuk server, Anda harus menentukan abstraksi jaringan di atas Pod yang disebut Kubernetes Service. Layanan Kubernetes menyediakan endpoint jaringan yang stabil untuk sekumpulan Pod. Ada beberapa jenis Layanan. server menggunakan LoadBalancer, yang mengekspos alamat IP eksternal sehingga Anda dapat menjangkau server dari luar cluster.

    Kubernetes juga memiliki sistem DNS bawaan, yang menetapkan nama DNS (misalnya, helloserver.default.cluster.local) ke Layanan. Hal ini memungkinkan Pod di dalam cluster menjangkau Pod lain dalam cluster dengan alamat yang stabil. Anda tidak dapat menggunakan nama DNS ini di luar cluster, seperti dari Cloud Shell atau komputer Anda.

Manifes Kubernetes

Saat menjalankan aplikasi dari kode sumber, Anda menggunakan perintah imperatif: python3 server.py

Imperatif berarti berbasis kata kerja: "lakukan ini".

Sebaliknya, Kubernetes beroperasi pada model deklaratif. Ini berarti, bukannya memberi tahu Kubernetes apa yang harus dilakukan, Anda memberi Kubernetes status yang diinginkan. Misalnya, Kubernetes memulai dan menghentikan Pod sesuai kebutuhan sehingga status sistem sebenarnya sesuai dengan status yang diinginkan.

Anda menentukan status yang diinginkan dalam kumpulan manifes, atau file YAML. File YAML berisi spesifikasi untuk satu atau beberapa objek Kubernetes.

Sampel ini berisi file YAML untuk server dan loadgen. Setiap file YAML menentukan status yang diinginkan untuk objek dan Service Deployment Kubernetes.

Penskalaan otomatis

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloserver
spec:
  replicas: 1
  selector:
    matchLabels:
      app: helloserver
  template:
    metadata:
      labels:
        app: helloserver
    spec:
      containers:
      - image: gcr.io/google-samples/istio/helloserver:v0.0.1
        imagePullPolicy: Always
        name: main
      restartPolicy: Always
      terminationGracePeriodSeconds: 5
  • kind menunjukkan jenis objek.
  • metadata.name menentukan nama Deployment.
  • Kolom spec pertama berisi deskripsi status yang diinginkan.
  • spec.replicas menentukan jumlah Pod yang diinginkan.
  • Bagian spec.template menentukan template Pod. Termasuk dalam spesifikasi Pod adalah kolom image, yang merupakan nama image yang akan diambil dari Container Registry.

Layanan ditentukan sebagai berikut:

apiVersion: v1
kind: Service
metadata:
  name: hellosvc
spec:
  ports:
  - name: http
    port: 80
    targetPort: 8080
  selector:
    app: helloserver
  type: LoadBalancer
  • LoadBalancer: Klien mengirim permintaan ke alamat IP load balancer jaringan, yang memiliki alamat IP yang stabil dan dapat dijangkau di luar cluster.
  • targetPort: Ingat bahwa perintah EXPOSE 8080 di Dockerfile tidak benar-benar mengekspos port apa pun. Anda mengekspos port 8080 agar dapat menjangkau penampung server di luar cluster. Dalam hal ini, hellosvc.default.cluster.local:80 (nama pendek: hellosvc) dipetakan ke port IP Pod helloserver 8080.
  • port: Ini adalah nomor port yang digunakan oleh layanan lain di cluster saat mengirim permintaan.

Generator Beban

Objek Deployment di loadgen.yaml mirip dengan server.yaml. Satu perbedaan penting adalah objek Deployment berisi bagian yang disebut env. Bagian ini menentukan variabel lingkungan yang diperlukan oleh loadgen, yang Anda tetapkan sebelumnya saat menjalankan aplikasi dari sumber.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: loadgenerator
spec:
  replicas: 1
  selector:
    matchLabels:
      app: loadgenerator
  template:
    metadata:
      labels:
        app: loadgenerator
    spec:
      containers:
      - env:
        - name: SERVER_ADDR
          value: http://hellosvc:80/
        - name: REQUESTS_PER_SECOND
          value: '10'
        image: gcr.io/google-samples/istio/loadgen:v0.0.1
        imagePullPolicy: Always
        name: main
        resources:
          limits:
            cpu: 500m
            memory: 512Mi
          requests:
            cpu: 300m
            memory: 256Mi
      restartPolicy: Always
      terminationGracePeriodSeconds: 5

Karena loadgen tidak menerima permintaan masuk, kolom type disetel ke ClusterIP. Jenis ini memberikan alamat IP stabil yang dapat digunakan oleh layanan di cluster, tetapi alamat IP tidak diekspos ke klien eksternal.

apiVersion: v1
kind: Service
metadata:
  name: loadgensvc
spec:
  ports:
  - name: http
    port: 80
    targetPort: 8080
  selector:
    app: loadgenerator
  type: ClusterIP

Men-deploy container ke GKE

  1. Ubah ke direktori tempat server contoh berada:

    cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/
    
  2. Buka server.yaml di editor teks.

  3. Ganti nama di kolom image dengan nama image Docker Anda.

    image: gcr.io/PROJECT_ID/asm-ready/helloserver:v0.0.1
    

    Ganti PROJECT_ID dengan ID project Google Cloud Anda.

  4. Simpan dan tutup server.yaml.

  5. Deploy file YAML ke Kubernetes:

    kubectl apply -f server.yaml
    

    Jika berhasil, perintah akan merespons dengan hal berikut:

    deployment.apps/helloserver created
    service/hellosvc created
    

  6. Ubah ke direktori tempat loadgen berada.

    cd ../loadgen
    
  7. Buka loadgen.yaml di editor teks.

  8. Ganti nama di kolom image dengan nama image Docker Anda.

    image: gcr.io/PROJECT_ID/asm-ready/loadgen:v0.0.1
    

    Ganti PROJECT_ID dengan ID project Google Cloud Anda.

  9. Simpan dan tutup loadgen.yaml, lalu tutup editor teks.

  10. Deploy file YAML ke Kubernetes:

    kubectl apply -f loadgen.yaml
    

    Jika berhasil, perintah akan merespons dengan hal berikut:

    deployment.apps/loadgenerator created
    service/loadgensvc created
    

  11. Periksa status Pod:

    kubectl get pods
    

    Perintah tersebut merespons dengan status yang mirip dengan yang berikut:

    NAME                             READY   STATUS    RESTARTS   AGE
    helloserver-69b9576d96-mwtcj     1/1     Running   0          58s
    loadgenerator-774dbc46fb-gpbrz   1/1     Running   0          57s
    
  12. Dapatkan log aplikasi dari Pod loadgen. Ganti POD_ID dengan ID dari output sebelumnya.

    kubectl logs loadgenerator-POD_ID
    
  13. Dapatkan alamat IP eksternal hellosvc:

    kubectl get service
    

    Respons perintah ini mirip dengan berikut ini:

    NAME         TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
    hellosvc     LoadBalancer   10.81.15.158   192.0.2.1       80:31127/TCP   33m
    kubernetes   ClusterIP      10.81.0.1      <none>          443/TCP        93m
    loadgensvc   ClusterIP      10.81.15.155   <none>          80/TCP         4m52s
    
  14. Kirim permintaan ke hellosvc. Ganti EXTERNAL_IP dengan alamat IP eksternal hellosvc Anda.

    curl http://EXTERNAL_IP
    

Siap untuk Anthos Service Mesh

Sekarang Anda memiliki aplikasi yang di-deploy ke GKE. loadgen dapat menggunakan DNS Kubernetes (hellosvc:80) untuk mengirim permintaan ke server, dan Anda dapat mengirim permintaan ke server dengan alamat IP eksternal. Meskipun Kubernetes memberi Anda banyak fitur, beberapa informasi terkait layanannya belum ada:

  • Bagaimana layanan berinteraksi? Apa hubungan antara layanan-layanan tersebut? Bagaimana arus traffic di antara layanan? Anda tahu bahwa loadgen mengirim permintaan ke server, tetapi bayangkan Anda tidak terbiasa dengan aplikasi tersebut. Anda tidak dapat menjawab pertanyaan ini dengan melihat daftar Pod yang menjalankan Pod di GKE.
  • Metrik: Berapa lama waktu yang diperlukan server untuk merespons permintaan masuk? Berapa banyak permintaan per detik (RPS) yang masuk ke server? Apakah ada respons error?
  • Informasi keamanan: Apakah traffic antara loadgen dan server HTTP biasa atau mTLS?

Anthos Service Mesh dapat memberikan jawaban atas pertanyaan tersebut. Anthos Service Mesh adalah project Istio open source versi yang dikelola Google Cloud. Anthos Service Mesh bekerja dengan menempatkan proxy file bantuan Envoy di setiap Pod. Proxy Envoy mencegat semua traffic masuk dan keluar ke penampung aplikasi. Artinya, server dan loadgen masing-masing mendapatkan proxy file bantuan Envoy, dan semua traffic dari loadgen ke server dimediasi oleh proxy Envoy. Koneksi antara proxy Envoy ini membentuk mesh layanan. Arsitektur mesh layanan ini menyediakan lapisan kontrol selain Kubernetes.

mesh layanan

Karena proxy Envoy berjalan di container-nya sendiri, Anda dapat menginstal Anthos Service Mesh di atas cluster GKE tanpa perlu mengubah kode aplikasi. Namun, ada beberapa cara utama untuk menyiapkan aplikasi untuk diinstrumentasikan dengan Anthos Service Mesh:

  • Layanan untuk semua container: Deployment server dan loadgen memiliki layanan Kubernetes yang terpasang. Bahkan loadgen, yang tidak menerima permintaan masuk apa pun, akan memiliki layanan.
  • Port di layanan harus diberi nama: Meskipun GKE memungkinkan Anda menentukan port layanan tanpa nama, Anthos Service Mesh mengharuskan Anda memberikan nama untuk port yang cocok dengan protokol port. Dalam file YAML, port untuk server diberi nama http karena server menggunakan protokol komunikasi HTTP. Jika service menggunakan gRPC, beri nama port grpc.
  • Deployment diberi label: Ini memungkinkan Anda menggunakan fitur pengelolaan traffic Anthos Service Mesh seperti membagi traffic antar-versi layanan yang sama.

Menginstal Anthos Service Mesh

Buka panduan penginstalan Anthos Service Mesh, lalu ikuti petunjuk untuk menginstal Anthos Service Mesh di cluster Anda.

Pembersihan

Agar tidak dikenakan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource-nya.

Untuk melakukan pembersihan, hapus cluster GKE. Jika cluster dihapus, semua resource yang membentuk cluster container tersebut, seperti instance komputasi, disk, dan resource jaringan.

gcloud container clusters delete asm-ready

Langkah selanjutnya