Налаштування 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.

