GNU/Linux >> Belajar Linux >  >> Linux

Tutorial Istio:Memulai dengan Dasar-dasar Istio

Pendahuluan

Cara praktis untuk mengelola layanan mikro aplikasi cloud-native adalah dengan mengotomatiskan fungsi jaringan aplikasi.

Istio adalah platform mesh layanan yang dapat dikonfigurasi yang bertindak sebagai bidang kontrol, mendistribusikan konfigurasi ke proxy dan gateway sespan. Ini adalah opsi populer untuk menghubungkan, memantau, dan mengamankan container di cluster Kubernetes.

Dalam tutorial ini, Anda akan mempelajari cara menginstal Istio, men-deploy aplikasi pengujian, dan menyiapkan cluster Kubernetes agar berfungsi dengan platform.

Prasyarat

  • Kluster Kubernetes (atau minikube)
  • alat baris perintah kubectl

Unduh Rilis Istio Terbaru

Untuk mengunduh rilis terbaru Istio, navigasikan ke halaman rilis Istio di GitHub.

Atau, pengguna Linux dapat menggunakan curl untuk mengunduh dan mengekstrak rilis terbaru secara otomatis:

curl -L https://istio.io/downloadIstio | sh -

Perintah mengekstrak file instalasi ke folder bernama istio-[version] :

Untuk mengunduh Istio versi lama, gunakan curl , tetapi tentukan versi dan arsitektur prosesor dengan menggunakan sintaks berikut:

curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.6.8 TARGET_ARCH=x86_64 sh -

Panduan Instalasi Istio

1. Mulai klaster Kubernetes Anda. Artikel ini menggunakan minikube:

minikube start

2. Selanjutnya, mulai instalasi Istio dengan pindah ke folder dengan file yang diekstrak:

cd istio-1.9.2

3. bin/ direktori berisi istioctl biner klien. Di Linux, tambahkan klien ke jalur Anda dengan mengetik:

export PATH=$PWD/bin:$PATH

Variabel yang disetel dengan cara ini hanya bertahan sampai Anda mengakhiri sesi shell saat ini. Untuk menyetel variabel secara permanen, baca cara menyetel variabel lingkungan di Linux.

4. Gunakan istioctl alat untuk memulai proses instalasi:

istioctl install --set profile=demo -y

Output mengkonfirmasi instalasi yang berhasil:

5. Istio dapat secara otomatis menyuntikkan proxy sespan Envoy saat penerapan aplikasi. Untuk mengaktifkannya, gunakan kubectl untuk menambahkan label namespace yang berisi instruksi ini:

kubectl label namespace default istio-injection=enabled

Ini mengakhiri proses instalasi Istio.

Uji Penerapan melalui Aplikasi Bookinfo

Arsip instalasi Istio berisi semua file yang diperlukan untuk menerapkan contoh aplikasi yang disebut Bookinfo .

1. Mulailah dengan menerapkan bookinfo.yaml file menggunakan kubectl :

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

Sistem membuat beberapa penerapan, layanan, dan pod:

2. Periksa layanan yang berjalan:

kubectl get services

3. Periksa apakah pod sudah siap:

kubectl get pods

Saat pod naik, Istio menyebarkan sespan bersama mereka:

4. Tunggu hingga READY label untuk setiap pod adalah 2/2 . Kemudian jalankan perintah berikut untuk melihat apakah aplikasi menyajikan halaman HTML dengan benar:

kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o ""

Outputnya harus berupa tag judul halaman, bersama dengan judul itu sendiri:

5. Langkah selanjutnya adalah membuka aplikasi untuk lalu lintas luar. Terapkan bookinfo-gateway.yaml file dari samples map:

kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

Output mengonfirmasi bahwa aplikasi berhasil dikaitkan dengan gateway Istio:

6. Gunakan istioctl untuk menganalisis konfigurasi dan memeriksa kemungkinan masalah:

istioctl analyze

Jika sistem tidak menemukan masalah, pesan berikut akan ditampilkan:


7. Untuk mengakses pengaturan gateway pada langkah sebelumnya, atur variabel ingress. Pertama, ekspor INGRESS_PORT :

export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')

8. Sekarang, ulangi proses untuk SECURE_INGRESS_PORT :

export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')

9. Gunakan perintah echo untuk memeriksa apakah port telah berhasil ditetapkan:

echo "$INGRESS_PORT" && echo "$SECURE_INGRESS_PORT"

Output menunjukkan nomor port:


10. Ekspor INGRESS_HOST variabel:

export INGRESS_HOST=$(minikube ip)

11. Periksa variabel dengan echo :

echo "$INGRESS_HOST"

12. Untuk mengarahkan lalu lintas ke Istio Ingress Gateway, buka jendela terminal baru dan ketik perintah berikut:

minikube tunnel

Minikube sekarang berfungsi sebagai penyeimbang beban untuk Istio. Outputnya menunjukkan minikube mengarahkan lalu lintas:


13. Kembali ke jendela terminal sebelumnya dan ekspor GATEWAY_URL variabel, yang terdiri dari INGRESS_HOST dan INGRESS_PORT variabel:

export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT

14. Gunakan echo untuk melihat seluruh alamat IP dan nomor port:

echo "$GATEWAY_URL"

15. Ketik perintah berikut untuk melihat alamat eksternal aplikasi:

echo http://$GATEWAY_URL/productpage

16. Salin alamat yang diperoleh pada langkah sebelumnya dan tempel ke browser web. Situs web Bookinfo berhasil dimuat:

Siapkan Cluster Kubernetes untuk Istio

Istio hadir dengan sejumlah add-on untuk layanan Istio populer, seperti dasbor Grafana, perangkat lunak pelacakan transaksi Jaeger, pengikis metrik Prometheus, dan konsol manajemen Kiali.

1. Instal add-on tersebut dengan menerapkan samples/addons map:

kubectl apply -f samples/addons

2. Sekarang, buat sumber daya Kubernetes Ingress untuk setiap add-on. Lakukan ini dengan menempelkan kode berikut ke yaml berkas.

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: istio-system
  namespace: istio-system
  annotations:
    kubernetes.io/ingress.class: istio
spec:
  rules:
  - host: my-istio-dashboard.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: grafana
          servicePort: 3000
  - host: my-istio-tracing.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: tracing
          servicePort: 9411
  - host: my-istio-logs-database.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: prometheus
          servicePort: 9090
  - host: my-kiali.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: kiali
          servicePort: 20001

3. Simpan file dan terapkan konfigurasi dengan kubectl:

kubectl apply -f [file-name]

Add-on sekarang dikonfigurasi dan siap digunakan.


Linux
  1. Memulai dengan Zsh

  2. Memulai Samba untuk interoperabilitas

  3. Memulai SSH di Linux

  1. Memulai dengan GnuCash

  2. Memulai dengan ls

  3. Memulai PostgreSQL di Linux

  1. Memulai dengan Etcher.io

  2. Memulai dengan ekspresi reguler

  3. Memulai dengan Tmux