Як розпочати

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

Вам знадобиться кластер Kubernetes для продовження. Якщо у вас немає кластера, ви можете використовувати kind або будь-яку іншу підтримувану платформу Kubernetes.

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

  1. Завантажте та встановіть Istio
  2. Встановіть CRD для Kubernetes Gateway API
  3. Розгорніть демонстраційний застосунок
  4. Відкрийте застосунок для зовнішнього трафіку
  5. Перегляньте дашборд

Завантаження 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

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

На відміну від Istio Gateways, створення Kubernetes Gateways стандартно також розгортає проксі-сервери шлюзів. Оскільки вони не будуть використовуватися, ми відключимо розгортання стандартних служб gateway в Istio, які зазвичай встановлюються як частина профілю demo.

  1. Встановіть Istio, використовуючи профіль demo, без будь-яких шлюзів:

    Zip
    $ istioctl install -f @samples/bookinfo/demo-profile-no-gateways.yaml@ -y
    ✔ Istio core встановлено
    ✔ Istiod встановлено
    ✔ Встановлення завершено
    Зроблено цю установку стандартною для інʼєкції та валідації.
  2. Додайте мітку до простору імен, щоб інструктувати Istio автоматично вбудовувати проксі-сервери Envoy при розгортанні вашого застосунку пізніше:

    $ kubectl label namespace default istio-injection=enabled
    namespace/default labeled

Встановлення CRD Kubernetes Gateway API

CRD Kubernetes Gateway API не встановлені стандартно у більшості кластерів Kubernetes, тому переконайтеся, що вони встановлені перед використанням Gateway API.

  1. Встановіть CRD Gateway API, якщо вони ще не присутні:

    $ kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || \
    { kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd?ref=v1.2.0" | kubectl apply -f -; }

Розгортання демонстраційного застосунку

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

  1. Розгорніть демонстраційний застосунок Bookinfo:

    $ kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/platform/kube/bookinfo.yaml
    service/details created
    serviceaccount/bookinfo-details created
    deployment.apps/details-v1 created
    service/ratings created
    serviceaccount/bookinfo-ratings created
    deployment.apps/ratings-v1 created
    service/reviews created
    serviceaccount/bookinfo-reviews created
    deployment.apps/reviews-v1 created
    deployment.apps/reviews-v2 created
    deployment.apps/reviews-v3 created
    service/productpage created
    serviceaccount/bookinfo-productpage created
    deployment.apps/productpage-v1 created

    Застосунок почне запускатися. Як тільки кожен pod стане готовим, разом з ним буде розгорнуто і sidecar від Istio.

    $ 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

    Зверніть увагу, що podʼи показують READY 2/2, що підтверджує наявність контейнера застосунку та контейнера sidecar від Istio.

  2. Перевірте, чи застосунок працює в кластері, перевіривши заголовок сторінки у відповіді:

    $ 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 розгорнуто, але не доступний ззовні. Щоб зробити його доступним, вам потрібно створити ingress gateway, який зіставляє шлях до маршруту на периметрі вашої мережі.

  1. Створіть Kubernetes Gateway для застосунку Bookinfo:

    Zip
    $ kubectl apply -f @samples/bookinfo/gateway-api/bookinfo-gateway.yaml@
    gateway.gateway.networking.k8s.io/bookinfo-gateway created
    httproute.gateway.networking.k8s.io/bookinfo created

    Стандартно Istio створює сервіс типу LoadBalancer для gateway. Оскільки ми будемо отримувати доступ до цього gateway через тунель, нам не потрібен балансувальник навантаження. Якщо ви хочете дізнатися, як налаштовуються балансувальники навантаження для зовнішніх IP-адрес, прочитайте документацію про ingress gateways.

  2. Змініть тип сервісу на ClusterIP, додавши анотацію до gateway:

    $ kubectl annotate gateway bookinfo-gateway networking.istio.io/service-type=ClusterIP --namespace=default
  3. Щоб перевірити статус gateway, виконайте:

    $ kubectl get gateway
    NAME               CLASS   ADDRESS                                            PROGRAMMED   AGE
    bookinfo-gateway   istio   bookinfo-gateway-istio.default.svc.cluster.local   True         42s

Доступ до застосунку

Ви приєднаєтесь до сервісу productpage застосунку Bookinfo через gateway, який ви щойно створили. Щоб отримати доступ до gateway, скористайтеся командою kubectl port-forward:

$ kubectl port-forward svc/bookinfo-gateway-istio 8080:80

Відкрийте вебоглядач та перейдіть за адресою http://localhost:8080/productpage, щоб переглянути застосунок Bookinfo.

Застосунок Bookinfo
Застосунок Bookinfo

Якщо ви оновите сторінку, ви побачите, як відгуки та рейтинги книг змінюються, оскільки запити розподіляються між різними версіями сервісу reviews.

Перегляд дашборда

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 автоматично вставляти проксі-контейнери Envoy, також стандартно не видаляється. Якщо вона більше не потрібна, використовуйте наступну команду для її видалення:

$ kubectl label namespace default istio-injection-

Якщо ви встановили CRD для Kubernetes Gateway API, а тепер хочете їх видалити, запустіть одну з наступних команд:

  • Якщо ви використовували експериментальну версію CRD:

    $ kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd/experimental?ref=v1.2.0" | kubectl delete -f -
  • В іншому випадку:

    $ kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd?ref=v1.2.0" | kubectl delete -f -
Чи була ця інформація корисною?
Чи є у вас пропозиції щодо покращення?

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