Початок роботи без API Gateway

Цей посібник дозволить вам швидко оцінити Istio, використовуючи лише його застарілі API. Якщо ви хочете використовувати Kubernetes Gateway API, будь ласка, перегляньте цей приклад. Якщо ви вже знайомі з Istio або зацікавлені в установці інших профілів конфігурації чи розширених моделей розгортання, зверніться до нашої сторінки ЧАстих питань — який метод установки Istio мені слід використовувати?.

Ці кроки вимагають, щоб у вас був кластер, який запускає підтримувану версію Kubernetes (1.28, 1.29, 1.30, 1.31). Ви можете використовувати будь-яку підтримувану платформу, наприклад Minikube або інші, зазначені в інструкціях з налаштування платформи.

Виконайте ці кроки, щоб розпочати роботу з Istio:

  1. Завантажте та встановіть Istio
  2. Розгорніть приклад застосунку
  3. Надайте доступ до застосунку ззовні
  4. Перегляньте інфопанель (дашборд)

Завантаження Istio

  1. Перейдіть на сторінку релізу Istio, щоб завантажити файл встановлення для вашої ОС, або завантажте та розпакуйте останній реліз автоматично (Linux або macOS):

    $ curl -L https://istio.io/downloadIstio | sh -
  2. Перейдіть до теки з пакетом Istio. Наприклад, якщо пакет називається istio-1.24.3:

    $ cd istio-1.24.3

    Тека встановлення містить:

    • Прикладні застосунки у samples/
    • Клієнтський бінарний файл istioctl у теці bin/.
  3. Додайте файл istioctl до вашого шляху (Linux або macOS):

    $ export PATH=$PWD/bin:$PATH

Встановлення Istio

  1. Для цього встановлення ми використовуємо профіль конфігурації demo. Його обрано через наявність хорошого набору стандартних параметрів для тестування, але є інші профілі для операційного використання або тестування продуктивності.

    $ istioctl install --set profile=demo -y
    ✔ Istio core installed
    ✔ Istiod installed
    ✔ Egress gateways installed
    ✔ Ingress gateways installed
    ✔ Installation complete
  2. Додайте мітку до простору імен, щоб вказати Istio автоматично вставляти проксі Envoy при подальшому розгортанні вашого застосунку:

    $ kubectl label namespace default istio-injection=enabled
    namespace/default позначено

Розгортання застосунку прикладу

  1. Розгорніть застосунок приклад Bookinfo:

    Zip
    $ kubectl apply -f @samples/bookinfo/platform/kube/bookinfo.yaml@
    service/details створено
    serviceaccount/bookinfo-details створено
    deployment.apps/details-v1 створено
    service/ratings створено
    serviceaccount/bookinfo-ratings створено
    deployment.apps/ratings-v1 створено
    service/reviews створено
    serviceaccount/bookinfo-reviews створено
    deployment.apps/reviews-v1 створено
    deployment.apps/reviews-v2 створено
    deployment.apps/reviews-v3 створено
    service/productpage створено
    serviceaccount/bookinfo-productpage створено
    deployment.apps/productpage-v1 створено
  2. Застосунок буде запущено. Як тільки кожен pod стане готовим, разом з ним буде розгорнуто Istio sidecar.

    $ kubectl get services
    NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
    details       ClusterIP   10.0.0.212      <none>        9080/TCP   29s
    kubernetes    ClusterIP   10.0.0.1        <none>        443/TCP    25m
    productpage   ClusterIP   10.0.0.57       <none>        9080/TCP   28s
    ratings       ClusterIP   10.0.0.33       <none>        9080/TCP   29s
    reviews       ClusterIP   10.0.0.28       <none>        9080/TCP   29s

    та

    $ kubectl get pods
    NAME                              READY   STATUS    RESTARTS   AGE
    details-v1-558b8b4b76-2llld       2/2     Running   0          2m41s
    productpage-v1-6987489c74-lpkgl   2/2     Running   0          2m40s
    ratings-v1-7dc98c7588-vzftc       2/2     Running   0          2m41s
    reviews-v1-7f99cc4496-gdxfn       2/2     Running   0          2m41s
    reviews-v2-7d79d5bd5d-8zzqd       2/2     Running   0          2m41s
    reviews-v3-7dbcdcbc56-m8dph       2/2     Running   0          2m41s
  3. Переконайтеся, що все працює правильно на даному етапі. Виконайте цю команду, щоб перевірити, чи працює застосунок всередині кластера та чи він обслуговує HTML-сторінки, перевіривши заголовок сторінки у відповіді:

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

Відкриття доступу до застосунку ззовні

Застосунок Bookinfo розгорнуто, але він недоступний ззовні. Щоб зробити його доступним, вам потрібно створити Istio Ingress Gateway, який зіставляє шлях з маршрутом на межі вашої мережі mesh.

  1. Звʼяжіть цей застосунок з Istio gateway:

    Zip
    $ kubectl apply -f @samples/bookinfo/networking/bookinfo-gateway.yaml@
    gateway.networking.istio.io/bookinfo-gateway створено
    virtualservice.networking.istio.io/bookinfo створено
  2. Переконайтеся, що конфігурація не має проблем:

    $ istioctl analyze
    ✔ No validation issues found when analyzing namespace: default.

Визначення IP-адреси та портів для Ingress

Дотримуйтесь цих інструкцій, щоб встановити змінні INGRESS_HOST та INGRESS_PORT для доступу до шлюзу. Використовуйте вкладки для вибору інструкцій для вашої платформи:

Виконайте цю команду в новому вікні термінала, щоб запустити тунель Minikube, який спрямовує трафік до вашого Istio Ingress Gateway. Це забезпечить зовнішній балансувальник навантаження, EXTERNAL-IP, для service/istio-ingressgateway.

$ minikube tunnel

Встановіть хост і порти для ingress:

$ export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
$ export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
$ export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].port}')

Переконайтеся, що IP-адреса і порти були успішно призначені кожній змінній середовища:

$ echo "$INGRESS_HOST"
127.0.0.1
$ echo "$INGRESS_PORT"
80
$ echo "$SECURE_INGRESS_PORT"
443
  1. Встановіть GATEWAY_URL:

    $ export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
  2. Переконайтеся, що IP-адреса і порт були успішно призначені змінній середовища:

    $ echo "$GATEWAY_URL"
    127.0.0.1:80

Перевірте зовнішній доступ

Підтвердьте, що застосунок Bookinfo доступний зовні, переглянувши сторінку продукту Bookinfo за допомогою браузера.

  1. Виконайте наступну команду, щоб отримати зовнішню адресу застосунку Bookinfo.

    $ echo "http://$GATEWAY_URL/productpage"
  2. Вставте результат попередньої команди у свій вебоглядач та підтвердіть, що сторінка продукту Bookinfo відображається.

Перегляд панелі керування (дашборд)

Istio інтегрується з декількома різними телеметричними застосунками. Вони допоможуть вам зрозуміти структуру вашої сервісної мережі, відобразити топологію мережі та проаналізувати її стан.

Використайте наступні інструкції для розгортання дашборду Kiali разом з Prometheus, Grafana та Jaeger.

  1. Встановіть Kiali та інші надбудови та дочекайтеся їх розгортання.

    $ kubectl apply -f samples/addons
    $ kubectl rollout status deployment/kiali -n istio-system
    Waiting for deployment "kiali" rollout to finish: 0 of 1 updated replicas are available...
    deployment "kiali" successfully rolled out
  2. Доступ до дашборду Kiali.

    $ istioctl dashboard kiali
  3. У меню навігації ліворуч оберіть Graph і в списку Namespace оберіть default.

    Kiali показує огляд вашої мережі зі звʼязками між сервісами у демонстраційному застосунку Bookinfo. Вона також надає фільтри для візуалізації потоку трафіку.

    Дашборд Kiali
    Дашборд Kiali

Наступні кроки

Вітаємо з завершенням цього демонстраційного встановлення!

Ці завдання є чудовим початком для новачків, щоб продовжити оцінку можливостей Istio, використовуючи цю інсталяцію demo:

Перед тим як налаштувати Istio для використання в операційній діяльності, ознайомтеся з наступними ресурсами:

Приєднуйтесь до спільноти Istio

Ми запрошуємо вас ставити питання та залишати відгуки, приєднавшись до спільноти Istio.

Видалення

Щоб видалити демонстраційний застосунок Bookinfo та його конфігурацію, перегляньте очищення Bookinfo.

Видалення Istio знищує дозволи RBAC і всі ресурси в просторі імен istio-system. Безпечно ігнорувати помилки для відсутніх ресурсів, оскільки вони могли бути видалені ієрархічно.

Zip
$ kubectl delete -f @samples/addons@
$ istioctl uninstall -y --purge

Простір імен istio-system стандартно не видаляється. Якщо він більше не потрібен, використайте наступну команду, щоб видалити його:

$ kubectl delete namespace istio-system

Мітка, яка вказує Istio автоматично виконувати інʼєкцію sidecar проксі Envoy, стандартно не видаляється. Якщо вона більше не потрібна, використайте наступну команду, щоб видалити її:

$ kubectl label namespace default istio-injection-
Чи була ця інформація корисною?
Чи є у вас пропозиції щодо покращення?

Дякуємо за ваш відгук!