Mempersiapkan aplikasi untuk Istio

Mempersiapkan aplikasi untuk Istio

Istio adalah alat yang mudah digunakan untuk menghubungkan, mengamankan, dan memantau aplikasi terdistribusi. Istio menggunakan berbagai teknologi untuk menjalankan dan mengelola perangkat lunak dalam skala besar, termasuk container untuk mengemas kode aplikasi dan dependensi untuk penerapan, dan Kubernetes untuk mengelola container tersebut. Oleh karena itu, untuk bekerja dengan Istio Anda harus mengetahui cara kerja aplikasi dengan berbagai layanan berdasarkan teknologi ini tanpa istio. Jika alat dan konsep ini sudah familiar bagi Anda, silakan lewati tutorial ini dan langsung ke bagiannya Menginstal Istio di Google Kubernetes Engine (GKE) atau memasang ekstensi Istio di GKE.

Ini adalah panduan langkah demi langkah di mana kami akan memandu seluruh proses mulai dari kode sumber hingga container GKE untuk memberi Anda pemahaman dasar tentang teknologi ini melalui sebuah contoh. Anda juga akan melihat bagaimana Istio memanfaatkan kekuatan teknologi ini. Ini mengasumsikan Anda tidak tahu apa pun tentang container, Kubernetes, service mesh, atau Istio.

tugas

Dalam tutorial ini, Anda akan menyelesaikan tugas-tugas berikut:

  1. Mempelajari aplikasi hello world sederhana dengan berbagai layanan.
  2. Jalankan aplikasi dari kode sumber.
  3. Mengemas aplikasi dalam wadah.
  4. Membuat cluster Kubernetes.
  5. Menyebarkan kontainer ke dalam sebuah cluster.

Sebelum kamu memulai

Ikuti petunjuk untuk mengaktifkan Kubernetes Engine API:

  1. Pergi ke Halaman Mesin Kubernetes di konsol Google Cloud Platform.
  2. Buat atau pilih proyek.
  3. Tunggu hingga API dan layanan terkait diaktifkan. Ini mungkin memakan waktu beberapa menit.
  4. Pastikan penagihan telah disiapkan untuk project Google Cloud Platform Anda. Pelajari cara mengaktifkan penagihan.

Dalam tutorial ini, Anda dapat menggunakan Cloud Shell yang menyiapkan mesin virtual g1-kecil di Mesin Komputasi Google dengan Linux berbasis Debian, atau komputer Linux atau macOS.

Opsi A: Menggunakan Cloud Shell

Keuntungan menggunakan Cloud Shell:

  • Lingkungan pengembangan Python 2 dan Python 3 (termasuk virtualenv) dikonfigurasi sepenuhnya.
  • Alat Baris Perintah gcloud, buruh pelabuhan, git ΠΈ kubectl, yang akan kita gunakan sudah terinstal.
  • Anda memiliki beberapa untuk dipilih editor teks:
    1. Editor kode, yang terbuka dengan ikon edit di bagian atas jendela Cloud Shell.
    2. Emacs, Vim, atau Nano, yang dibuka dari command line di Cloud Shell.

Menggunakan Cangkang Awan:

  1. Buka konsol GCP.
  2. Klik tombol Aktifkan Cloud Shell (Aktifkan Cloud Shell) di bagian atas jendela konsol GCP.

Mempersiapkan aplikasi untuk Istio

Di bagian bawah Konsol GCP Sesi Cloud Shell dengan baris perintah akan terbuka di jendela baru.

Mempersiapkan aplikasi untuk Istio

Opsi B: Menggunakan Alat Baris Perintah Secara Lokal

Jika Anda akan bekerja pada komputer yang menjalankan Linux atau macOS, Anda perlu mengonfigurasi dan menginstal komponen berikut:

  1. Sesuaikan Lingkungan pengembangan Python 3 dan Python 2.

  2. Instal Cloud SDK dengan alat baris perintah gcloud.

  3. Mengatur kubectl - alat baris perintah untuk bekerja dengannya Kubernetes.

    gcloud components install kubectl

  4. Mengatur Edisi Komunitas Docker (CE). Anda akan menggunakan alat baris perintah buruh pelabuhanuntuk membuat gambar kontainer untuk aplikasi sampel.

  5. Instal alatnya Kontrol versi Gituntuk mendapatkan contoh aplikasi dari GitHub.

Unduh kode contoh

  1. Unduh kode sumbernya haloserver:

    git clone https://github.com/GoogleCloudPlatform/istio-samples

  2. Buka direktori kode contoh:

    cd istio-samples/sample-apps/helloserver

Menjelajahi aplikasi dengan banyak layanan

Contoh aplikasi ditulis dengan Python dan terdiri dari dua komponen yang berinteraksi menggunakan ISTIRAHAT:

  • Server: server sederhana dengan satu titik akhir MENDAPATKAN, /, yang mencetak "hello world" ke konsol.
  • memuatgen: skrip yang mengirimkan lalu lintas ke Server, dengan jumlah permintaan per detik yang dapat dikonfigurasi.

Mempersiapkan aplikasi untuk Istio

Menjalankan aplikasi dari kode sumber

Untuk menjelajahi aplikasi sampel, jalankan aplikasi tersebut di Cloud Shell atau di komputer Anda.
1) Dalam katalog istio-samples/sample-apps/helloserver Lari Server:

python3 server/server.py

Saat memulai Server berikut ini ditampilkan:

INFO:root:Starting server...

2) Buka jendela terminal lain untuk mengirim permintaan Server. Jika Anda menggunakan Cloud Shell, klik ikon tambahkan untuk membuka sesi lainnya.
3) Kirim permintaan ke Server:

curl http://localhost:8080

jawaban server:

Hello World!

4) Dari direktori tempat Anda mengunduh kode contoh, buka direktori yang berisi memuatgen:

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) Jalankan virtualenv:

virtualenv --python python3 env

7) Aktifkan lingkungan virtual:

source env/bin/activate

8) Tetapkan persyaratan untuk memuatgen:

pip3 install -r requirements.txt

9) Jalankan memuatgen:

python3 loadgen.py

Saat memulai memuatgen menampilkan sesuatu seperti pesan berikut:

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

Di jendela terminal lain Server menampilkan pesan berikut ke konsol:

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 perspektif jaringan, seluruh aplikasi berjalan pada satu host (komputer lokal atau mesin virtual Cloud Shell). Oleh karena itu Anda dapat menggunakan localhostuntuk mengirim permintaan ke Server.
10) Untuk berhenti memuatgen ΠΈ Server, memasuki Ctrl-c di setiap jendela terminal.
11) Di jendela terminal memuatgen nonaktifkan lingkungan virtual:

deactivate

Mengemas aplikasi dalam wadah

Untuk menjalankan aplikasi di GKE, Anda perlu mengemas contoh aplikasi - Server ΠΈ memuatgen - di Wadah. Kontainer adalah cara mengemas aplikasi untuk mengisolasinya dari lingkungannya.

Untuk mengemas aplikasi ke dalam sebuah wadah, Anda memerlukan Dockerfile. Dockerfile adalah file teks yang mendefinisikan perintah untuk membangun kode sumber aplikasi dan dependensinya gambar buruh pelabuhan. Setelah dibuat, Anda mengunggah gambar ke registri kontainer seperti Docker Hub atau Registri Kontainer.

Contohnya sudah ada Dockerfile untuk Server ΠΈ memuatgen dengan semua perintah yang diperlukan untuk mengumpulkan gambar. Di bawah - Dockerfile untuk Server:

FROM python:3-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.7/ /usr/local/lib/python3.7/

# Add the application
COPY . .

EXPOSE 8080
ENTRYPOINT [ "python", "server.py" ]

  • Tim DARI python:3-slim sebagai basis memberitahu Docker untuk menggunakan yang terbaru gambar piton 3 sebagai basis.
  • Tim MENYALIN. . menyalin file sumber ke direktori kerja saat ini (hanya dalam kasus kami server.py) ke sistem file penampung.
  • TITIK MASUK mendefinisikan perintah yang digunakan untuk memulai wadah. Dalam kasus kami, perintah ini hampir sama dengan yang biasa Anda jalankan server.py dari kode sumber.
  • Tim MEMBUKA mengindikasikan bahwa Server menunggu data melalui port 8080. Tim ini tidak menyediakan port. Ini adalah semacam dokumentasi yang diperlukan untuk membuka port 8080 saat memulai wadah.

Bersiap untuk memasukkan aplikasi Anda ke dalam container

1) Tetapkan variabel lingkungan berikut. Mengganti PROJECT_ID ke ID proyek GCP Anda.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Menggunakan nilai PROJECT_ID ΠΈ GCR_REPO Anda menandai image Docker saat Anda membuatnya dan memasukkannya ke Container Registry pribadi.

2) Tetapkan proyek GCP default untuk alat baris perintah gcloud.

gcloud config set project $PROJECT_ID

3) Tetapkan zona default untuk alat baris perintah gcloud.

gcloud config set compute/zone us-central1-b

4) Pastikan layanan Container Registry diaktifkan di project GCP.

gcloud services enable containerregistry.googleapis.com

Server kontainerisasi

  1. Buka direktori tempat contoh berada Server:

    cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/

  2. Rakit gambar menggunakan Dockerfile dan variabel lingkungan yang Anda tentukan sebelumnya:

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

Parameter -t mewakili tag Docker. Ini adalah nama gambar yang Anda gunakan saat men-deploy container.

  1. Unggah gambar ke Container Registry:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Kontainerisasi loadgen

1) Buka direktori tempat contoh berada memuatgen:

cd ../loadgen

2) Kumpulkan gambar:

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

3) Unggah gambar ke Container Registry:

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

Lihat daftar gambar

Tinjau daftar gambar di repositori dan verifikasi bahwa gambar telah diunggah:

gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istio

Perintah tersebut menampilkan nama gambar yang baru diunggah:

NAME
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen

Membuat kluster GKE.

Kontainer ini dapat dijalankan di mesin virtual Cloud Shell atau di komputer dengan perintah buruh pelabuhan. Namun dalam lingkungan produksi, Anda memerlukan cara untuk mengatur container secara terpusat. Misalnya, Anda memerlukan sistem yang memastikan container selalu berjalan, dan Anda memerlukan cara untuk meningkatkan dan menjalankan instance container tambahan jika lalu lintas meningkat.

Untuk menjalankan aplikasi dalam container yang dapat Anda gunakan G.K.E.. GKE adalah platform orkestrasi container yang menggabungkan mesin virtual ke dalam sebuah cluster. Setiap mesin virtual disebut node. Cluster GKE didasarkan pada sistem pengelolaan cluster Kubernetes open source. Kubernetes menyediakan mekanisme untuk berinteraksi dengan cluster.

Membuat kluster GKE:

1) Buat klaster:

gcloud container clusters create istioready 
  --cluster-version latest 
  --machine-type=n1-standard-2 
  --num-nodes 4

Tim gcloud membuat kluster istioready di proyek GCP dan zona default yang Anda tentukan. Untuk menjalankan Istio, kami merekomendasikan memiliki setidaknya 4 node dan mesin virtual n1-standar-2.

Tim membuat cluster dalam beberapa menit. Ketika cluster sudah siap, perintah akan mengeluarkan sesuatu seperti ini Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅.

2) Berikan kredensial di alat baris perintah kubectluntuk menggunakannya untuk mengelola cluster:

gcloud container clusters get-credentials istioready

3) Sekarang Anda dapat berkomunikasi dengan Kubernetes melalui kubectl. Misalnya, perintah berikut dapat mengetahui status node:

kubectl get nodes

Perintah ini menghasilkan daftar node:

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

Konsep Utama Kubernetes

Diagram menunjukkan aplikasi di GKE:

Mempersiapkan aplikasi untuk Istio

Sebelum Anda men-deploy container di GKE, pelajari konsep utama Kubernetes. Ada tautan di bagian paling akhir jika Anda ingin mempelajari lebih lanjut.

  • Node dan cluster. Di GKE, node adalah mesin virtual. Pada platform Kubernetes lainnya, sebuah node dapat berupa komputer atau mesin virtual. Klaster adalah kumpulan node yang dapat dianggap sebagai satu unit tempat Anda menyebarkan aplikasi dalam container.
  • Polong. Di Kubernetes, container dijalankan di pod. Sebuah Pod di Kubernetes adalah sebuah unit yang tidak dapat dipisahkan. Sebuah Pod menampung satu atau lebih kontainer. Anda menyebarkan kontainer server dan memuatgen dalam pod terpisah. Ketika ada beberapa container dalam sebuah pod (misalnya, server aplikasi dan server proxy), kontainer dikelola sebagai satu entitas dan berbagi sumber daya pod.
  • Penerapan. Di Kubernetes, penerapan adalah objek yang merupakan kumpulan pod yang identik. Deployment meluncurkan beberapa replika pod yang didistribusikan ke seluruh node cluster. Deployment secara otomatis menggantikan pod yang gagal atau tidak responsif.
  • layanan Kubernetes. Saat menjalankan kode aplikasi di GKE, koneksi antar memuatgen ΠΈ Server. Saat Anda memulai layanan di mesin virtual atau desktop Cloud Shell, Anda mengirimkan permintaan ke Server di localhost: 8080. Setelah di-deploy ke GKE, pod akan dieksekusi pada node yang tersedia. Secara default, Anda tidak memiliki kendali atas node mana yang menjalankan pod, begitu juga Anda polong tidak ada alamat IP permanen.
    Untuk mendapatkan alamat IP untuk Server, Anda perlu mendefinisikan abstraksi jaringan di atas pod. Begitulah adanya layanan Kubernetes. Layanan Kubernetes menyediakan titik akhir persisten untuk sekumpulan pod. Ada beberapa jenis layanan. Server menggunakan Penyeimbang Beban, yang memberikan alamat IP eksternal untuk dihubungi Server dari luar cluster.
    Kubernetes juga memiliki sistem DNS bawaan yang memberikan nama DNS (misalnya, helloserver.default.cluster.lokal) jasa. Berkat ini, pod-pod di dalam cluster berkomunikasi dengan pod-pod lain di cluster pada alamat yang konstan. Nama DNS tidak dapat digunakan di luar cluster, misalnya di Cloud Shell atau di komputer.

Kubernetes bermanifestasi

Saat Anda menjalankan aplikasi dari sumber, Anda menggunakan perintah imperatif python3

server.py

Imperatif menyiratkan kata kerja: β€œlakukan ini.”

Kubernet menggunakan model deklaratif. Artinya, kami tidak memberi tahu Kubernetes apa yang harus dilakukan, melainkan menjelaskan keadaan yang diinginkan. Misalnya, Kubernetes memulai dan menghentikan pod sesuai kebutuhan untuk menjaga keadaan sebenarnya dari sistem tetap konsisten dengan keadaan yang diinginkan.

Anda menunjukkan keadaan yang diinginkan dalam manifes atau file YAML. File YAML berisi spesifikasi untuk satu atau lebih objek Kubernetes.

Contoh ini berisi file YAML untuk Server ΠΈ memuatgen. Setiap file YAML menentukan status objek penerapan dan layanan Kubernetes yang diinginkan.

server.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloserver
spec:
  selector:
    matchLabels:
      app: helloserver
  replicas: 1
  template:
    metadata:
      labels:
        app: helloserver
    spec:
      terminationGracePeriodSeconds: 5
      restartPolicy: Always
      containers:
      - name: main
        image: gcr.io/google-samples/istio/helloserver:v0.0.1
        imagePullPolicy: Always

  • jenis menunjukkan jenis objeknya.
  • metadata.nama menentukan nama penerapan.
  • Bidang pertama spek berisi deskripsi keadaan yang diinginkan.
  • spec.replika menunjukkan jumlah pod yang diinginkan.
  • Bagian spec.template mendefinisikan templat pod. Ada kolom di spesifikasi pod gambar, yang menentukan nama gambar yang perlu diekstraksi dari Container Registry.

Layanan ini didefinisikan sebagai berikut:

apiVersion: v1
kind: Service
metadata:
  name: hellosvc
spec:
  type: LoadBalancer
  selector:
    app: helloserver
  ports:
  - name: http
    port: 80
    targetPort: 8080

  • Penyeimbang Beban: Klien mengirimkan permintaan ke alamat IP penyeimbang beban, yang memiliki alamat IP persisten dan dapat diakses dari luar cluster.
  • Pelabuhan target: seperti yang Anda ingat, tim Paparan 8080 Π² Dockerfile tidak menyediakan port. Anda menyediakan port 8080sehingga Anda dapat menghubungi wadah tersebut Server di luar cluster. Dalam kasus kami hellosvc.default.cluster.local:80 (nama pendek: halovc) sesuai dengan port 8080 Alamat IP pod haloserver.
  • pelabuhan: Ini adalah nomor port dimana layanan lain dalam cluster akan mengirimkan permintaan.

loadgen.yaml

Penempatan menolak loadgen.yaml terlihat seperti server.yaml. Perbedaannya adalah objek penerapan berisi bagian env. Ini mendefinisikan variabel lingkungan yang diperlukan memuatgen dan yang Anda instal saat menjalankan aplikasi dari sumber.

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

waktu memuatgen tidak menerima permintaan masuk, untuk bidang tersebut mengetik ditunjukkan ClusterIP. Tipe ini menyediakan alamat IP persisten yang dapat digunakan oleh layanan dalam klaster, namun alamat IP ini tidak diekspos ke klien eksternal.

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

Men-deploy Container di GKE

1) Buka direktori tempat contoh berada Server:

cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/

2) Buka server.yaml dalam editor teks.
3) Ganti nama di kolom tersebut gambar ke nama gambar Docker Anda.

image: gcr.io/PROJECT_ID/preparing-istio/helloserver:v0.0.1

Mengganti PROJECT_ID ke ID proyek GCP Anda.
4) Simpan dan tutup server.yaml.
5) Terapkan file YAML ke Kubernetes:

kubectl apply -f server.yaml

Setelah berhasil diselesaikan, perintah menghasilkan kode berikut:

deployment.apps/helloserver created
service/hellosvc created

6) Masuk ke direktori dimana memuatgen:

cd ../loadgen

7) Buka loadgen.yaml dalam editor teks.
8) Ganti nama di kolom tersebut gambar ke nama gambar Docker Anda.

image: gcr.io/PROJECT_ID/preparing-istio/loadgenv0.0.1

Mengganti PROJECT_ID ke ID proyek GCP Anda.
9) Simpan dan tutup loadgen.yaml, tutup editor teks.
10) Terapkan file YAML ke Kubernetes:

kubectl apply -f loadgen.yaml

Setelah berhasil diselesaikan, perintah menghasilkan kode berikut:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Periksa status pod:

kubectl get pods

Perintah menunjukkan status:

NAME                             READY   STATUS    RESTARTS   AGE
helloserver-69b9576d96-mwtcj     1/1     Running   0          58s
loadgenerator-774dbc46fb-gpbrz   1/1     Running   0          57s

12) Ekstrak log aplikasi dari pod memuatgen. Mengganti POD_ID ke pengidentifikasi dari jawaban sebelumnya.

kubectl logs loadgenerator-POD_ID

13) Dapatkan alamat IP eksternal halovc:

kubectl get service

Respons perintah terlihat seperti 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 halovc: mengganti EKSTERNAL_IP ke alamat IP eksternal halovc.

curl http://EXTERNAL_IP

Mari kita hadapi Istio

Anda sudah memiliki aplikasi yang di-deploy ke GKE. memuatgen dapat menggunakan DNS Kubernetes (halosvc:80) untuk mengirim permintaan ke Serverdan Anda dapat mengirim permintaan ke Server berdasarkan alamat IP eksternal. Meskipun Kubernetes memiliki banyak fitur, ada beberapa informasi yang hilang mengenai layanan ini:

  • Bagaimana layanan berinteraksi? Apa hubungan antar layanan? Bagaimana arus lalu lintas antar layanan? Apakah kamu sadar akan hal itu memuatgen mengirimkan permintaan ke Server, tapi bayangkan Anda tidak tahu apa-apa tentang aplikasi tersebut. Untuk menjawab pertanyaan tersebut, mari kita lihat daftar pod yang berjalan di GKE.
  • Metrik. Berapa lama Server menanggapi permintaan masuk? Berapa banyak permintaan per detik yang diterima oleh server? Apakah itu memberikan pesan kesalahan?
  • informasi keamanan. Lalu lintas antar memuatgen ΠΈ Server baru saja melewatinya HTTP atau oleh mTLS?

Istio menjawab semua pertanyaan ini. Untuk melakukan ini, Istio menempatkan proxy sespan Utusan di setiap pod. Proksi Utusan mencegat semua lalu lintas masuk dan keluar ke kontainer aplikasi. Artinya Server ΠΈ memuatgen terima melalui utusan proxy sespan, dan semua lalu lintas dari memuatgen ΠΊ Server melewati proxy Utusan.

Koneksi antara proxy Utusan membentuk jaring layanan. Arsitektur service mesh menyediakan lapisan kontrol di atas Kubernetes.

Mempersiapkan aplikasi untuk Istio

Karena proxy Envoy berjalan di containernya sendiri, Istio dapat diinstal di atas cluster GKE hampir tanpa perubahan pada kode aplikasi. Namun Anda telah melakukan beberapa upaya agar aplikasi Anda siap dikelola oleh Istio:

  • Layanan untuk semua kontainer. Untuk penerapan Server ΠΈ memuatgen terkait dengan layanan Kubernetes. Bahkan memuatgen, yang tidak menerima permintaan masuk, ada layanan.
  • Port dalam layanan harus memiliki nama. Meskipun port layanan tidak boleh disebutkan namanya di GKE, Istio mengharuskan Anda untuk menentukannya nama pelabuhan sesuai dengan protokolnya. Dalam file YAML port untuk Server bernama httpkarena server menggunakan protokol HTTP... Jika layanan digunakan gRPC, Anda akan memberi nama portnya grpc.
  • Penerapan ditandai. Oleh karena itu, Anda dapat menggunakan fitur manajemen lalu lintas Istio, seperti membagi lalu lintas antar versi layanan yang sama.

Instalasi

Ada dua cara untuk menginstal Istio. Bisa aktifkan Istio pada ekstensi GKE ΠΈΠ»ΠΈ instal Istio versi open source di cluster. Dengan Istio di GKE, Anda dapat dengan mudah mengelola instalasi dan upgrade Istio di seluruh siklus hidup cluster GKE. Jika Anda menginginkan Istio versi terbaru atau kontrol lebih besar atas konfigurasi panel kontrol Istio Anda, instal versi open source alih-alih ekstensi Istio di GKE. Untuk memutuskan pendekatannya, baca artikelnya Apakah saya memerlukan Istio di GKE?.

Pilih salah satu opsi, baca panduan yang sesuai, dan ikuti petunjuk untuk menginstal Istio di cluster Anda. Jika Anda ingin menggunakan Istio dengan aplikasi yang baru Anda terapkan, mengaktifkan implementasi sespan untuk ruang nama kegagalan.

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ°

Untuk menghindari tagihan ke akun Google Cloud Platform Anda atas sumber daya yang Anda gunakan dalam tutorial ini, hapus kluster kontainer setelah Anda menginstal Istio dan bermain dengan aplikasi contoh. Tindakan ini akan menghapus semua sumber daya klaster, seperti instans komputasi, disk, dan sumber daya jaringan.

Apa selanjutnya?

Sumber: www.habr.com

Tambah komentar