Рубрики
Uncategorized

Anthos Service Mesh, ISTIO на Google Cloud ⛵

Anthos Service Mesh, управляемый Istio ⛵ Истио — одна из самых продвинутых фрагментов программного обеспечения … Tagged with Istio, Anthos, Googlecloud, DevOps.

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 namespace  istio-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»