Istio является одним из самых передовых программных продуктов в экосистеме Kubernetes. Это позволяет пересмотреть способ общения наших услуг, не будучи инвазивными. Istio работает, взяв контроль над сетью вашего кластера Kubernetes и позволяет применять конфигурации (через YAML). Если вы хотите узнать Istio, я приглашаю вас прочитать превосходную документацию, представленную в istio.io
Основная проблема с ISTIO — сложность управления и настройки его. Как и Kubernetes, эта система сложна, и ошибки могут привести к простоям в вашем кластере… 😓. Много программных компаний начинает предоставлять Предварительно сконфигурированный Версия Istio, и здесь мы поговорим о Anthos Service Mesh Анкет
Anthos Service Mesh доступен на Anthos Clusters Бег в Google Cloud , AWS или В-представлении (Различные функции доступны в зависимости от местности кластера). Здесь мы опишем Google Cloud Версия на основе Anthos Service Mesh Версия 1.9.3.ASM-2 (последняя версия может отличаться, когда вы читаете эту статью).
Примечание: Полностью управляемая версия Anthos Service Mesh существует, но на самом деле находится в предварительном просмотре/бета -версии. Я предпочитаю на данный момент, используя стандартную версию Anthos Service Mesh (AKA Управляемый клиентом плоскость управления ).
Монтаж
Установка довольно прямая, Google предоставляет скрипт install_asm
Для автоматизации установки на уже существующем кластере GKE:
./install_asm \ --project_id kevin-anthos-asm \ --cluster_name anthos-asm-demo \ --cluster_location europe-north1-a \ --mode install \ --output_dir ./asm-downloads \ --enable_all
Примечание: Я устанавливаю последнюю версию ASM Здесь, но вы можете выбрать другой с -revision_name
параметр, если это необходимо.
Чтобы быть выполненным, сценарий имеет некоторые требования. Я приглашаю вас проверить это Здесь Анкет Лучшее решение — использовать Google Cloud Shell Чтобы выполнить установку, он по умолчанию выполняет требования.
install_asm: Setting up necessary files... install_asm: Fetching/writing GCP credentials to kubeconfig file... install_asm: [WARNING]: nc not found, skipping k8s connection verification install_asm: [WARNING]: (Installation will continue normally.) install_asm: Checking installation tool dependencies... install_asm: Getting account information... install_asm: Confirming cluster information for kevin-anthos-asm/europe-north1-a/anthos-asm-demo... install_asm: Downloading ASM.. % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 41.7M 100 41.7M 0 0 31.5M 0 0:00:01 0:00:01 --:--:-- 31.5M install_asm: Downloading ASM kpt package... fetching package "/asm" from "https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages" to "asm" install_asm: Confirming node pool requirements for kevin-anthos-asm/europe-north1-a/anthos-asm-demo... install_asm: Checking Istio installations... install_asm: Enabling required APIs... install_asm: Binding user:kevin.davin@stack-labs.com to required IAM roles... install_asm: Checking for project kevin-anthos-asm... install_asm: Reading labels for europe-north1-a/anthos-asm-demo... install_asm: Adding labels to europe-north1-a/anthos-asm-demo... install_asm: Enabling Workload Identity on europe-north1-a/anthos-asm-demo... install_asm: (This could take awhile, up to 10 minutes) install_asm: Initializing meshconfig API... install_asm: Enabling Stackdriver on europe-north1-a/anthos-asm-demo... install_asm: Querying for core/account... install_asm: Binding kevin.davin@stack-labs.com to cluster admin role... clusterrolebinding.rbac.authorization.k8s.io/kevin.davin-cluster-admin-binding created install_asm: Creating istio-system namespace... namespace/istio-system created install_asm: Configuring kpt package... asm/ set 22 field(s) of setter "gcloud.container.cluster" to value "anthos-asm-demo" asm/ set 40 field(s) of setter "gcloud.core.project" to value "kevin-anthos-asm" asm/ set 2 field(s) of setter "gcloud.project.projectNumber" to value "62405001080" asm/ set 6 field(s) of setter "gcloud.project.environProjectNumber" to value "62405001080" asm/ set 21 field(s) of setter "gcloud.compute.location" to value "europe-north1-a" asm/ set 2 field(s) of setter "gcloud.compute.network" to value "kevin-anthos-asm-default" asm/ set 6 field(s) of setter "anthos.servicemesh.rev" to value "asm-193-2" asm/ set 2 field(s) of setter "anthos.servicemesh.tag" to value "1.9.3-asm.2" install_asm: Installing validation webhook fix... service/istiod created install_asm: Installing ASM control plane... install_asm: ...done! install_asm: Installing ASM CanonicalService controller in asm-system namespace... namespace/asm-system created customresourcedefinition.apiextensions.k8s.io/canonicalservices.anthos.cloud.google.com created role.rbac.authorization.k8s.io/canonical-service-leader-election-role created clusterrole.rbac.authorization.k8s.io/canonical-service-manager-role created clusterrole.rbac.authorization.k8s.io/canonical-service-metrics-reader created serviceaccount/canonical-service-account created rolebinding.rbac.authorization.k8s.io/canonical-service-leader-election-rolebinding created clusterrolebinding.rbac.authorization.k8s.io/canonical-service-manager-rolebinding created clusterrolebinding.rbac.authorization.k8s.io/canonical-service-proxy-rolebinding created service/canonical-service-controller-manager-metrics-service created deployment.apps/canonical-service-controller-manager created install_asm: Waiting for deployment... deployment.apps/canonical-service-controller-manager condition met install_asm: ...done! install_asm: install_asm: ***************************** client version: 1.9.3-asm.2 control plane version: 1.9.3-asm.2 data plane version: 1.9.3-asm.2 (2 proxies) install_asm: ***************************** install_asm: The ASM control plane installation is now complete. install_asm: To enable automatic sidecar injection on a namespace, you can use the following command: install_asm: kubectl label namespaceistio-injection- istio.io/rev=asm-193-2 --overwrite install_asm: If you use 'istioctl install' afterwards to modify this installation, you will need install_asm: to specify the option '--set revision=asm-193-2' to target this control plane install_asm: instead of installing a new one. install_asm: To finish the installation, enable Istio sidecar injection and restart your workloads. install_asm: For more information, see: install_asm: https://cloud.google.com/service-mesh/docs/proxy-injection install_asm: The ASM package used for installation can be found at: install_asm: /home/kevin_davin/anthos/asm/2021-05-11-apres-midi/asm-downloads/asm install_asm: The version of istioctl that matches the installation can be found at: install_asm: /home/kevin_davin/anthos/asm/2021-05-11-apres-midi/asm-downloads/istio-1.9.3-asm.2/bin/istioctl install_asm: A symlink to the istioctl binary can be found at: install_asm: /home/kevin_davin/anthos/asm/2021-05-11-apres-midi/asm-downloads/istioctl install_asm: The combined configuration generated for installation can be found at: install_asm: /home/kevin_davin/anthos/asm/2021-05-11-apres-midi/asm-downloads/asm-193-2-manifest-raw.yaml install_asm: The full, expanded set of kubernetes resources can be found at: install_asm: /home/kevin_davin/anthos/asm/2021-05-11-apres-midi/asm-downloads/asm-193-2-manifest-expanded.yaml install_asm: ***************************** install_asm: Successfully installed ASM.
Этот скрипт установит пользовательскую версию Istio, названная A ntos S Эрвис M эш В конце у вашего кластера будет два новых пространства имен, ASM-SYSTEM
и Истио-система
:
$ kubectl get ns NAME STATUS AGE asm-system Active 127m default Active 141m istio-system Active 128m kube-node-lease Active 141m kube-public Active 141m kube-system Active 141m
Вы успешно установили Anthos Service Mesh На вашем кластере GKE … мы должны использовать его сейчас!
Активация пространства имен
ISTIO-это инструмент для широкого кластера, который может быть активирован на уровне пространства имен или на уровне компонента (но менее распространен). Мы должны добавить ярлык в нашем Пространство имен
Чтобы вызвать функции ISTIO на нем:
$ kubectl create namespace workshop $ kubectl label namespace workshop istio.io/rev=asm-193-2 --overwrite
Здесь, ASM-193-2
это версия, предоставленная install_asm
командные журналы. С этой информацией, ASM Знает, что ему придется вводить контейнер с боковым автомобилем для каждого компонента этого пространства имен.
ПРИМЕЧАНИЕ: Если вам нужна более подробная информация о процессе установки, официальная документация доступна Здесь и предоставить много информации для различных вариантов использования.
Функциональные возможности
Anthos Service Mesh это фирменная версия ISTIO. Модификации, предоставленные Google, довольно мягкие, и здесь в основном, чтобы сделать систему совместимой с облачной консоли. В Управляемый клиентом плоскость управления , у вас есть доступ к каждой функциональности, подавляющее большинство функций, предоставляемых ISTIO 1.9.
Вы можете проконсультироваться с полным списком доступных функций здесь
Монитоны
Основное преимущество ASM В версии ISTIO Operensource является его интеграция в облачную консоли Google.
Для этого примера я развернул 3 приложения в мастерская
Пространство имен. Эти приложения поступили на нашем семинаре лаборатории Stack Labs на ISTIO (доступный здесь , и полностью открытый исходный код). При этом мы можем использовать их мониторные панели.
Глобальный обзор
Мы можем иметь глобальный точку зрения на наших микро-сервисах, развернутых в нашем кластере. У нас есть табличное представление, которое можно фильтровать в пространстве имен, предоставляя четкое представление о статусе и производительности наших услуг.
Глобальная топология (все еще в бета -версии), позволяющая нам просверлить наши услуги, компоненты, развертывания, стручки … очень полезны, если мы хотим понять схему общения в нашем кластере.
Если мы хотим иметь более глубокое понимание каждого компонента, у нас есть доступ к специфическому представлению службы, доступным, нажав на службу в табличном представлении.
Сервисная панель
Эта панель инструментов обеспечит определенную точку зрения на поведение вашего сервиса. Здесь мы сосредоточимся на службе промежуточного программного обеспечения. Для этого примера мы настроим это приложение, чтобы отправить 500 ошибок в 50% случаев.
Этот основной вид здесь, чтобы обобщить все следующие панели панели в одну. Это точка входа для нашего анализа услуг.
Здоровье здесь, чтобы представить нам Цели уровня обслуживания (SLO) на основе Индикаторы уровня обслуживания (SLI) Мы определили на нашем службе.
ПРИМЕЧАНИЕ: Если вы хотите узнать больше о SLO и SLIS, это Пост в блоге суммирует это (много) идею, стоящей за этим. Вы также можете прочитать документацию, а книги предоставляются свободно от команды Google SRE Здесь Анкет
Мы можем определить SLO и SLIS в нашем сервисе с помощью нескольких информации, собранной облачной консоли и Anthos Service Mesh для нас.
Вы можете определить стратегию оповещения для каждого SLO. Несколько систем доступны от Slack, Pager-Duity, по электронной почте для наиболее стандартного веб-крючка, облачной функции или любой другой системы программирования. Я выбираю электронную почту для этого примера и получаю это через несколько минут, потому что определенный SLO больше не был достигнут.
У нас есть доступ к глобальному представлению услуг. ЦП, ОЗУ, Запросы за секунды … Вся необходимая информация, чтобы иметь возможность следовать здоровью заявки.
Мы можем проанализировать всю связь нашего сервиса. Здесь у нас есть полный список всех служб, подключающихся к нашим услугам ( inbound ) или службы, достигнутые нашим сервисом ( outbound ).
Инфраструктурная кастрюля позволяет нам видеть каждый экземпляр нашего сервиса с течением времени. У каждого из них есть свои собственные метрики (процессор, ОЗУ, частота ошибок…), и поэтому мы можем проанализировать на уровне тонкого зерна производительность и поведение нашей системы.
Панель безопасности позволяет анализировать уровень безопасности коммуникации между услугами. Истио и ASM Предоставляет встроенный способ общения с MTLS между компонентами. Здесь вы увидите, сделаны ли обмены «в чистоте» или с безопасным протоколом. Я ничего не настраивал и не настраивал между фронт , промежуточное программное обеспечение и База данных защищены по умолчанию.
Наконец, полезное представление доступно для консультирования YAML Resources, развернутых в кластере, соответствующем этой услуге. Развертывание, VirtualService, DestinationRoute … Все ресурсы доступны в Web-UI, снова упрощающего анализ.
Временная шкала везде!
Когда вы анализируете производство, особенно когда возникает проблема, вы не можете только использовать текущий Данные, вы должны сравнить данные с прошлыми данными той же системы, чтобы разработать вывод. Здесь, на каждой панели, я представляю вам, у вас есть возможность активировать временная шкала и сузить свои наблюдения до определенного периода времени.
Каждая таблица, график, метрики будут адаптированы к данному времени, чтобы представить вам информацию в определенный момент. Это будет удобно, когда вы захотите сравнить поведение услуги до и после обновления, например.
Эта функция действительно потрясающая, потому что вам не придется настраивать панель инструментов для каждой потребности. Система, предоставленная вам, предназначена для оператора, не нужно настраивать Promql или Графана Запрос проанализировать, что в настоящее время происходит в производстве …
Вывод
Я сосредоточил эту статью в основном на Наблюдаемость , потому что Anthos Service Mesh предоставляет это из коробки. Даже если Istio Имеет замечательные функции для расщепления трафика, зеркализации, авторизации … Первая причина, по которой вы захотите использовать его, — это Наблюдаемость 🕵♂️.
Google сейчас делает с Истио Что это сделал с Kubernetes много лет назад. Он интегрировал его и упростит его использование, чтобы сделать его доступным для всех. Будущая версия с Google управляемый плоскость управления должен упростить это еще больше.
Если вы хотите повысить свою наблюдаемость с помощью управляемой и предварительно настроенной системы, я советую вам протестировать Anthos Service Mesh !
Оригинал: «https://dev.to/stack-labs/anthos-service-mesh-istio-on-google-cloud-51eo»