6.2 KiB
| title | overview | weight | owner | test |
|---|---|---|---|---|
| Налаштування Istio Ingress Gateway | Контролюйте трафік, починаючи з Ingress. | 71 | istio/wg-docs-maintainers | no |
До цього часу ви використовували Kubernetes Ingress для доступу до вашого застосунку ззовні. У цьому модулі ви налаштуєте трафік для входу через Istio ingress gateway, щоб застосувати контроль Istio до трафіку до ваших мікросервісів.
-
Збережіть назву вашого простору імен у змінній середовища
NAMESPACE. Вам знадобиться це для розпізнавання ваших мікросервісів в журналах:{{< text bash >}}
export NAMESPACE=(kubectl config view -o jsonpath="{.contexts[?(@.name == "$(kubectl config current-context)")].context.namespace}") $ echo $NAMESPACE tutorial {{< /text >}} -
Створіть змінну середовища для назви хосту Istio ingress gateway:
{{< text bash >}} $ export MY_INGRESS_GATEWAY_HOST=istio.$NAMESPACE.bookinfo.com $ echo $MY_INGRESS_GATEWAY_HOST istio.tutorial.bookinfo.com {{< /text >}}
-
Налаштуйте Istio ingress gateway:
{{< text bash >}} $ 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 {{< /text >}}
- port:
number: 80
name: http
protocol: HTTP
hosts:
-
Встановіть
INGRESS_HOSTіINGRESS_PORT, використовуючи інструкції з розділу Визначення IP та портів Ingress. -
Додайте результат цієї команди у ваш файл
/etc/hosts:{{< text bash >}} $ echo $INGRESS_HOST $MY_INGRESS_GATEWAY_HOST {{< /text >}}
-
Отримайте доступ до домашньої сторінки застосунку з командного рядка:
{{< text bash >}} $ curl -s $MY_INGRESS_GATEWAY_HOST:$INGRESS_PORT/productpage | grep -o ""
{{< /text >}} -
Вставте результат наступної команди в адресний рядок вашого оглядача:
{{< text bash >}} $ echo http://$MY_INGRESS_GATEWAY_HOST:$INGRESS_PORT/productpage {{< /text >}}
-
Імітуйте реальний трафік користувачів до вашого застосунку, встановивши нескінченний цикл у новому вікні термінала:
{{< text bash >}} $ while :; do curl -s | grep -o ""; sleep 1; done
... {{< /text >}} -
Перевірте графік вашого простору імен у консолі Kiali
my-kiali.io/kiali/console. (URLmy-kiali.ioмає бути у вашому файлі/etc/hosts, який ви налаштували раніше).Тепер ви можете бачити, що трафік надходить з двох джерел,
unknown(Kubernetes Ingress) іistio-ingressgateway istio-system(Istio Ingress Gateway).{{< image width="80%" link="kiali-ingress-gateway.png" caption="Вкладка Kiali Graph з Istio Ingress Gateway" >}}
-
На цьому етапі ви можете припинити надсилати запити через Kubernetes Ingress і використовувати тільки Istio Ingress Gateway. Припиніть нескінченний цикл (
Ctrl-Cу вікні термінала), який ви встановили на попередніх кроках. У реальному виробничому середовищі вам потрібно оновити DNS-запис вашого застосунку, щоб він містив IP Istio ingress gateway, або налаштувати ваш зовнішній балансувальник навантаження. -
Видаліть ресурс Kubernetes Ingress:
{{< text bash >}} $ kubectl delete ingress bookinfo ingress.extensions "bookinfo" deleted {{< /text >}}
-
У новому вікні термінала перезапустіть імітацію реального трафіку користувачів, як описано в попередніх кроках.
-
Перевірте ваш графік у консолі Kiali. Через хвилину ви побачите Istio Ingress Gateway як єдине джерело трафіку для вашого застосунку.
{{< image width="80%" link="kiali-ingress-gateway-only.png" caption="Вкладка Kiali Graph з Istio Ingress Gateway як єдине джерело трафіку" >}}
Ви готові до налаштування логування з Istio.