Налаштування Istio Ingress Gateway
До цього часу ви використовували Kubernetes Ingress для доступу до вашого застосунку ззовні. У цьому модулі ви налаштуєте трафік для входу через Istio ingress gateway, щоб застосувати контроль Istio до трафіку до ваших мікросервісів.
Збережіть назву вашого простору імен у змінній середовища
NAMESPACE
. Вам знадобиться це для розпізнавання ваших мікросервісів в журналах:$ export NAMESPACE=$(kubectl config view -o jsonpath="{.contexts[?(@.name == \"$(kubectl config current-context)\")].context.namespace}") $ echo $NAMESPACE tutorial
Створіть змінну середовища для назви хосту Istio ingress gateway:
$ export MY_INGRESS_GATEWAY_HOST=istio.$NAMESPACE.bookinfo.com $ echo $MY_INGRESS_GATEWAY_HOST istio.tutorial.bookinfo.com
Налаштуйте Istio ingress gateway:
$ kubectl apply -f - <<EOF apiVersion: networking.istio.io/v1 kind: Gateway metadata: name: bookinfo-gateway spec: selector: istio: ingressgateway # використовуйте стандартну реалізацію шлюзу Istio servers: - port: number: 80 name: http protocol: HTTP hosts: - $MY_INGRESS_GATEWAY_HOST --- apiVersion: networking.istio.io/v1 kind: VirtualService metadata: name: bookinfo spec: hosts: - $MY_INGRESS_GATEWAY_HOST gateways: - bookinfo-gateway.$NAMESPACE.svc.cluster.local http: - match: - uri: exact: /productpage - uri: exact: /login - uri: exact: /logout - uri: prefix: /static route: - destination: host: productpage port: number: 9080 EOF
Встановіть
INGRESS_HOST
іINGRESS_PORT
, використовуючи інструкції з розділу Визначення IP та портів Ingress.Додайте результат цієї команди у ваш файл
/etc/hosts
:$ echo $INGRESS_HOST $MY_INGRESS_GATEWAY_HOST
Отримайте доступ до домашньої сторінки застосунку з командного рядка:
$ curl -s $MY_INGRESS_GATEWAY_HOST:$INGRESS_PORT/productpage | grep -o "<title>.*</title>" <title>Simple Bookstore App</title>
Вставте результат наступної команди в адресний рядок вашого оглядача:
$ echo http://$MY_INGRESS_GATEWAY_HOST:$INGRESS_PORT/productpage
Імітуйте реальний трафік користувачів до вашого застосунку, встановивши нескінченний цикл у новому вікні термінала:
$ while :; do curl -s <output of the previous command> | grep -o "<title>.*</title>"; sleep 1; done <title>Simple Bookstore App</title> <title>Simple Bookstore App</title> <title>Simple Bookstore App</title> <title>Simple Bookstore App</title> ...
Перевірте графік вашого простору імен у консолі Kiali
my-kiali.io/kiali/console
. (URLmy-kiali.io
має бути у вашому файлі/etc/hosts
, який ви налаштували раніше).Тепер ви можете бачити, що трафік надходить з двох джерел,
unknown
(Kubernetes Ingress) іistio-ingressgateway istio-system
(Istio Ingress Gateway).Вкладка Kiali Graph з Istio Ingress Gateway На цьому етапі ви можете припинити надсилати запити через Kubernetes Ingress і використовувати тільки Istio Ingress Gateway. Припиніть нескінченний цикл (
Ctrl-C
у вікні термінала), який ви встановили на попередніх кроках. У реальному виробничому середовищі вам потрібно оновити DNS-запис вашого застосунку, щоб він містив IP Istio ingress gateway, або налаштувати ваш зовнішній балансувальник навантаження.Видаліть ресурс Kubernetes Ingress:
$ kubectl delete ingress bookinfo ingress.extensions "bookinfo" deleted
У новому вікні термінала перезапустіть імітацію реального трафіку користувачів, як описано в попередніх кроках.
Перевірте ваш графік у консолі Kiali. Через хвилину ви побачите Istio Ingress Gateway як єдине джерело трафіку для вашого застосунку.
Вкладка Kiali Graph з Istio Ingress Gateway як єдине джерело трафіку
Ви готові до налаштування логування з Istio.