Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как установить дополнение сетевой сетки на базе Istio для кластера Azure Kubernetes Service (AKS).
Для получения дополнительной информации о Istio и дополнении для сервисной сетки см. дополнение для сервисной сетки на основе Istio для службы Kubernetes в Azure.
Tip
Вы можете использовать Azure Copilot для развертывания Istio в кластерах AKS на портале Azure. Дополнительные сведения см. в статье "Работа с кластерами AKS эффективно с помощью Azure Copilot".
Перед началом
Для надстройки требуется установка Azure CLI версии 2.57.0 или более поздней. Чтобы проверить версию, можно запустить
az --version. Чтобы выполнить установку или обновление, см. сведения в статье Установка Azure CLI.Чтобы найти сведения о версиях надстройки Istio, доступных в регионе и их совместимости со стандартными и LTS-версиями кластера AKS, используйте команду
az aks mesh get-revisions:az aks mesh get-revisions --location <location> -o tableДополнительные сведения о совместимости надстройки Istio с AKS см. в политике поддержки совместимости.
В некоторых случаях CRD Istio от предыдущих установок могут не удаляться автоматически при деинсталляции. Убедитесь, что существующие CRD-файлы Istio удаляются:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')Рекомендуется также очистить другие ресурсы от самостоятельно управляемых установок Istio, таких как ClusterRoles, MutatingWebhookConfigurations и ValidatingWebhookConfigurations.
Обратите внимание, что если вы решили использовать какие-либо
istioctlкоманды CLI, необходимо включить флаг, чтобы указать на установку надстройки Istio:--istioNamespace aks-istio-system
Настройка переменных среды
export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>
Установить дополнение Istio
В этом разделе описано, как установить надстройку Istio во время создания кластера или включить для существующего кластера с помощью Azure CLI. Если вы хотите установить дополнение с помощью Bicep, обратитесь к руководству по установке кластера AKS с дополнением сетки службы Istio с помощью Bicep. Чтобы получить подробную информацию об определении ресурсов Bicep для кластера AKS, см. справочник по Bicep managedCluster.
Note
Если вам нужны istiod модули pod шлюза и входящего трафика, запланированные на определенные узлы, можно использовать системные узлы AKS или azureservicemesh/istio.replica.preferred метку узла. Pod имеют привязанности к узлам с взвешанным предпочтением 100 для системных узлов AKS, помеченных kubernetes.azure.com/mode: system, и взвешанным предпочтением 50 для узлов, помеченных azureservicemesh/istio.replica.preferred: true.
Выбор версии
Если надстройка включена без указания редакции, для вас устанавливается поддерживаемая по умолчанию редакция.
Чтобы указать исправление, выполните следующие шаги.
-
az aks mesh get-revisionsИспользуйте команду, чтобы проверить, какие редакции доступны для разных версий кластера AKS в регионе. - На основании доступных ревизий вы можете включить флаг
--revision asm-X-Y(например,--revision asm-1-24) в команду включения, используемую для установки сетки.
Установка сетки во время создания кластера
Чтобы установить надстройку Istio при создании кластера, используйте --enable-azure-service-mesh или--enable-asm параметр.
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
az aks create \
--resource-group ${RESOURCE_GROUP} \
--name ${CLUSTER} \
--enable-asm \
--generate-ssh-keys
Установка сетки для существующего кластера
Следующий пример включает надстройку Istio для существующего кластера AKS:
Important
Невозможно включить надстройку Istio в существующем кластере, если надстройка Open Service Mesh (OSM) уже находится в кластере. Удалите надстройку OSM перед установкой надстройки Istio. Дополнительные сведения см. в статье об удалении надстройки OSM из кластера AKS. Надстройка Istio может быть включена только в кластерах AKS версии >= 1.23.
az aks mesh enable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Проверка установки
Чтобы проверить установку надстройки Istio в кластере, выполните следующую команду:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.mode'
Подтвердите, что отображается Istio.
Используйте az aks get-credentials для получения учетных данных для кластера AKS:
az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Используйте kubectl, чтобы убедиться, что поды istiod (контрольной плоскости Istio) успешно работают:
kubectl get pods -n aks-istio-system
Убедитесь, что модуль istiod pod имеет состояние Running. Рассмотрим пример.
NAME READY STATUS RESTARTS AGE
istiod-asm-1-24-74f7f7c46c-xfdtl 1/1 Running 0 2m
istiod-asm-1-24-74f7f7c46c-4nt2v 1/1 Running 0 2m
Включение внедрения сайдкара
Чтобы автоматически установить контейнер-сайдкар в любые новые pods, необходимо добавить аннотацию к пространствам имен с меткой редакции, соответствующей версии плоскости управления, установленной в настоящее время.
Если вы не уверены, какая редакция установлена, используйте:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.istio.revisions'
Примените метку редакции:
kubectl label namespace default istio.io/rev=asm-X-Y
Important
Явное управление версиями, соответствующее редакции плоскости управления (например, istio.io/rev=asm-1-24) требуется.
Значение по умолчанию istio-injection=enabled не будет работать и вызовет пропуск пространственной области при внедрении побочного модуля для добавки.
Для ручного внедрения сайдкара с помощью istioctl kube-inject, необходимо указать дополнительные параметры для istioNamespace (-i) и revision (-r). Рассмотрим пример.
kubectl apply -f <(istioctl kube-inject -f sample.yaml -i aks-istio-system -r asm-X-Y) -n foo
Триггерная инъекция сайдкара
Вы можете развернуть предоставленное для тестирования пример приложения или активировать внедрение сайдкара для существующих рабочих нагрузок.
Существующие приложения
Если у вас есть приложения, которые нужно добавить в сеть, убедитесь, что их пространства имен разметлены, как на предыдущем шаге, а затем перезапустите их внедрение, чтобы активировать внедрение сайдкара.
kubectl rollout restart -n <namespace> <deployment name>
Убедитесь, что внедрение сайдкара прошло успешно, убедившись, что все контейнеры готовы и проверьте наличие контейнера в выводе istio-proxy, например:
kubectl describe pod -n namespace <pod name>
Контейнер istio-proxy является сайдкаром Envoy. Теперь приложение является частью плоскости данных.
Разверните примерное приложение
Используйте kubectl apply для развертывания примера приложения в кластере:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/platform/kube/bookinfo.yaml
Note
Кластерам, использующим HTTP прокси-сервер для доступа в Интернет по исходящему трафику, потребуется настроить Service Entry. Для получения инструкций по настройке см. поддержку прокси-сервера HTTP в Службе Azure Kubernetes
Убедитесь, что в вашем кластере имеются несколько развертываний и служб. Рассмотрим пример.
service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created
Используйте kubectl get services для проверки успешности создания служб:
kubectl get services
Убедитесь, что развернуты следующие службы:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
details ClusterIP 10.0.180.193 <none> 9080/TCP 87s
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 15m
productpage ClusterIP 10.0.112.238 <none> 9080/TCP 86s
ratings ClusterIP 10.0.15.201 <none> 9080/TCP 86s
reviews ClusterIP 10.0.73.95 <none> 9080/TCP 86s
kubectl get pods
NAME READY STATUS RESTARTS AGE
details-v1-558b8b4b76-2llld 2/2 Running 0 2m41s
productpage-v1-6987489c74-lpkgl 2/2 Running 0 2m40s
ratings-v1-7dc98c7588-vzftc 2/2 Running 0 2m41s
reviews-v1-7f99cc4496-gdxfn 2/2 Running 0 2m41s
reviews-v2-7d79d5bd5d-8zzqd 2/2 Running 0 2m41s
reviews-v3-7dbcdcbc56-m8dph 2/2 Running 0 2m41s
Подтвердите, что все поды имеют статус Running с двумя контейнерами в колонке READY. Второй контейнер (istio-proxy), добавленный к каждому поду, — это сайдкар Envoy, внедренный Istio, а другой — контейнер приложения.
Чтобы протестировать это примерное приложение на основе ингресс, ознакомьтесь со следующими шагами.
Дальнейшие шаги
- Развертывание внешних или внутренних входов для дополнения сетевой службы Istio
- Масштабирование istiod и шлюза входа HPA
- Сбор метрик для рабочих процессов надстроек сервиса Istio в Azure Managed Prometheus
- Развертывание шлюзов исходящего трафика для дополнения сервисной сети Istio
- Активировать Istio CNI для дополнения сетевой структуры Istio (Предварительная версия)