Попробуйте Istio, Kiali, Grafana и Jaeger с помощью Amazon EKS!

В последнее время не проходит и дня, чтобы мы вообще не слышали о «сервисной сетке».
Лучший способ понять непонятную технологию — попробовать ее самостоятельно.

Нам так повезло, что мы родились в наш богатый век, что у нас есть Amazon EKS, да, мы можем попробовать нативные облачные инструменты, когда захотим!

В этой статье я покажу вам, как начать работу с Istio, одним из самых популярных OSS в мире сервисных сетей.
Не забудьте попробовать связанные инструменты для наблюдаемости в последующей части, такие как Kiali, Grafana и Jaeger.

(Для японского языка у меня есть аналогичный пост здесь)
https://qiita.com/minorun365/items/f02eaa0786536741223a

Что нужно подготовить

  • компьютер для практической работы
  • терминальное приложение CLI
  • учетная запись AWS

Практическая работа с Istio & Kiali

Установите инструменты

Установите AWS CLI.

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html

Первоначальная настройка AWS CLI и регистрация учетной записи AWS.

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-quickstart.html

Выполните следующие действия в терминале.

$ aws configure
AWS Access Key ID [None]: ********
AWS Secret Access Key [None]: ********
Default region name [None]: ap-northeast-1
Default output format [None]: json
Вход в полноэкранный режим Выйти из полноэкранного режима

Вы можете проверить ID ключа доступа и секрет через AWS Management Console.

Установите eksctl и kubectl. Это легко сделать с помощью Homebrew.

https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/eksctl.html

https://kubernetes.io/ja/docs/tasks/tools/install-kubectl/

Создайте кластер EKS

Выполните команду для создания кластера EKS через терминал.

$ eksctl create cluster --name "CLUSTER NAME AS YOU LIKE"
Войти в полноэкранный режим Выйдите из полноэкранного режима

Выпейте кофе в течение 20 минут, чтобы получить список узлов woker.

$ kubectl get node
NAME                                                STATUS   ROLES    AGE   VERSION
ip-192-168-26-107.ap-northeast-1.compute.internal   Ready    <none>   13m   v1.22.6-eks-7d68063
ip-192-168-73-174.ap-northeast-1.compute.internal   Ready    <none>   13m   v1.22.6-eks-7d68063
Войти в полноэкранный режим Выйдите из полноэкранного режима

Установка Istio

Официальный сайт Istio предоставляет нам потрясающее руководство «Начало работы», поэтому мы используем его здесь.

https://istio.io/latest/docs/setup/getting-started/

Загрузите последнюю версию Istio. 1.14.1 в нашем примере.

$ curl -L https://istio.io/downloadIstio | sh -
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Переместите каталог Istio, который вы скачали.

$ cd istio-1.14.1
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Добавьте переменную окружения в ваш компьютер.

$ export PATH=$PWD/bin:$PATH
Войти в полноэкранный режим Выйдите из полноэкранного режима

Установите istiocel.

$ istioctl install --set profile=demo -y
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Не забудьте проверить версию вашего Istio.

$ istioctl version
client version: 1.14.1
control plane version: 1.14.1
data plane version: 1.14.1 (2 proxies)
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Включите настройку пространства имен для Istio на вашем кластере EKS.

$ kubectl label namespace default istio-injection=enabled
namespace/default labeled
Войти в полноэкранный режим Выход из полноэкранного режима

Разверните пример приложения на EKS

Разверните пример приложения с именем «bookinfo» на кластере EKS.

$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
Войти в полноэкранный режим Выйдите из полноэкранного режима

Проверьте развернутую службу.

$ kubectl get services

NAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
details       ClusterIP   10.100.124.27    <none>        9080/TCP   4m14s
kubernetes    ClusterIP   10.100.0.1       <none>        443/TCP    49m
productpage   ClusterIP   10.100.251.75    <none>        9080/TCP   4m13s
ratings       ClusterIP   10.100.54.25     <none>        9080/TCP   4m14s
reviews       ClusterIP   10.100.249.201   <none>        9080/TCP   4m13s
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Подождите минуту и обнаружите, что ваши капсулы просыпаются.

$ kubectl get pods

NAME                              READY   STATUS    RESTARTS   AGE
details-v1-7d88846999-j97r2       2/2     Running   0          98s
productpage-v1-7795568889-vzg9j   2/2     Running   0          98s
ratings-v1-754f9c4975-btfk9       2/2     Running   0          98s
reviews-v1-55b668fc65-rg2ft       2/2     Running   0          98s
reviews-v2-858f99c99-dkmmk        2/2     Running   0          98s
reviews-v3-7886dd86b9-m9xqh       2/2     Running   0          98s
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Выполните команду ниже на вашей капсуле для приложения «ratings», и вы можете получить раздел заголовка 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>
Войти в полноэкранный режим Выход из полноэкранного режима

Включение внешнего доступа к образцу приложения

Разверните шлюз Ingress на вашем кластере EKS.

$ kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Проверьте, нет ли проблем в вашей сервисной сетке.

$ istioctl analyze
✔ No validation issues found when analyzing namespace: default.
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Подтвердите внешний IP-адрес службы Ingress Gateway.

$ kubectl get svc istio-ingressgateway -n istio-system
NAME                   TYPE           CLUSTER-IP     EXTERNAL-IP                                                                    PORT(S)                                                                      AGE
istio-ingressgateway   LoadBalancer   10.100.8.158   ********.ap-northeast-1.elb.amazonaws.com   15021:32244/TCP,80:31172/TCP,443:32028/TCP,31400:32681/TCP,15443:30730/TCP   29m
Войти в полноэкранный режим Выход из полноэкранного режима

Установите переменные окружения для Ingress.

$ export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
$ 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}')
$ export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
Войти в полноэкранный режим Выйдите из полноэкранного режима

Проверьте комбинацию имени внешнего хоста и номера порта.

$ echo "$GATEWAY_URL"
********.ap-northeast-1.elb.amazonaws.com:80
Войти в полноэкранный режим Выйдите из полноэкранного режима

Попробуйте внешний доступ.

$ open http://$GATEWAY_URL/productpage
Войти в полноэкранный режим Выйдите из полноэкранного режима

Получилось! Вы можете получить доступ к приложению bookinfo через веб-браузер.

Получите o11y с помощью приборных панелей

Разверните надстройки для мониторинга, такие как Kiali и Grafana.

$ kubectl apply -f samples/addons
Вход в полноэкранный режим Выйдите из полноэкранного режима

Выполните следующие действия и дождитесь развертывания Kiali.

$ kubectl rollout status deployment/kiali -n istio-systemWaiting for deployment "kiali" rollout to finish: 0 of 1 updated replicas are available...
deployment "kiali" successfully rolled out
Войти в полноэкранный режим Выйдите из полноэкранного режима

Затем запустите Kiali.

$ istioctl dashboard kiali
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Вы можете успешно зайти в Kiali через веб-браузер.

Откройте «Graph» в левой колонке и измените пространство имен на «Select all», после чего вы сможете увидеть сетку ваших сервисов в графическом виде.

Grafana & Jaeger практическая работа

Вы можете обнаружить, что в samples/addons, которые вы установили для Kiali, уже есть известные инструменты мониторинга.

  • Prometheus
  • Grafana
  • Jaeger
  • Zipkin

Теперь вы развернули вышеперечисленные инструменты, поэтому попробуйте запустить их.

Попробуйте Grafana

Сначала запустите Grafana, OSS для мониторинга приборной панели.

$ istioctl dashboard grafana
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Вы можете получить доступ к предустановленной приборной панели для Istio, нажав Dashboard > Browse в левой панели.
Попробуйте открыть «Istio Control Plane Dashboard».

Попробуйте Jaeger

Далее попробуйте Jeager, OSS для распределенной трассировки.
Включите трассировку.

istioctl install --set meshConfig.enableTracing=true
This will install the Istio 1.14.1 default profile with ["Istio core" "Istiod" "Ingress gateways"] components into the cluster. Proceed? (y/N) y
Войти в полноэкранный режим Выйдите из полноэкранного режима

Запустите Егерь.

$ istioctl dashboard jaeger
Войдите в полноэкранный режим Выйти из полноэкранного режима

Установите любой сервис в левой панели и выполните поиск трасс.

Вы можете найти подробную информацию о трассе, если щелкните маркер трассы на графике в правой панели.

Для следующих шагов

Далее я хочу попробовать содержание «Следующие шаги» на официальной странице Istio.
https://istio.io/latest/docs/setup/getting-started/#next-steps

Конечно, мне также очень интересно попробовать AWS App Mesh!

Когда вы выйдете из этой практической работы, очистите ваше окружение, как показано ниже.

  • Удалите ваш кластер EKS
$ eksctl delete cluster --name "YOUR CLUSTER NAME"
Войдите в полноэкранный режим Выйдите из полноэкранного режима
  • Очистите переменные окружения
$ unset INGRESS_HOST
$ unset INGRESS_PORT
$ unset SECURE_INGRESS_PORT
$ unset GATEWAY_URL
Войдите в полноэкранный режим Выйти из полноэкранного режима

Оцените статью
devanswers.ru
Добавить комментарий