Развертывание надстройки сетки служб на основе Istio для службы Azure Kubernetes
В этой статье показано, как установить надстройку сетки службы на основе Istio для кластера Служба Azure Kubernetes (AKS).
Дополнительные сведения о надстройке сетки Istio и сетке служб см. в надстройке сетки на основе Istio для Служба Azure Kubernetes.
Подготовка к работе
Для надстройки требуется установка Azure CLI версии 2.57.0 или более поздней. Чтобы проверить версию, можно запустить
az --version
. Чтобы выполнить установку или обновление, см. сведения в статье Установка Azure CLI.Чтобы найти сведения о версиях кластеров AKS, доступных в регионе и их совместимости с версиями кластера AKS, используйте команду
az aks mesh get-revisions
:az aks mesh get-revisions --location <location> -o table
Настройка переменных среды
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.
Выбор редакции
Если надстройка включена без указания редакции, для вас устанавливается поддерживаемая по умолчанию редакция.
Чтобы указать редакцию, выполните следующие действия.
az aks mesh get-revisions
Используйте команду, чтобы проверить, какие редакции доступны для разных версий кластера AKS в регионе.- На основе доступных редакций можно включить
--revision asm-X-Y
флаг (например--revision asm-1-20
, ) в команду включения, используемую для установки сетки.
Установка сетки во время создания кластера
Чтобы установить надстройку 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:
Внимание
Невозможно включить надстройку Istio в существующем кластере, если надстройка 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
выполнения модулей pod (плоскости управления Istio):
kubectl get pods -n aks-istio-system
Убедитесь, что модуль istiod
pod имеет состояние Running
. Например:
NAME READY STATUS RESTARTS AGE
istiod-asm-1-18-74f7f7c46c-xfdtl 1/1 Running 0 2m
istiod-asm-1-18-74f7f7c46c-4nt2v 1/1 Running 0 2m
Включение внедрения бокового автомобиля
Чтобы автоматически установить боковую панель в любые новые модули pod, необходимо заметить пространства имен с меткой редакции, соответствующей версии плоскости управления, установленной в настоящее время.
Если вы не уверены, какая редакция установлена, используйте:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.istio.revisions'
Примените метку редакции:
kubectl label namespace default istio.io/rev=asm-X-Y
Внимание
Метка по умолчанию istio-injection=enabled
не работает. Явное управление версиями, соответствующее редакции плоскости управления (например, istio.io/rev=asm-1-18
требуется).
Для ручного внедрения бокового автомобиля 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
данных, например:
kubectl describe pod -n namespace <pod name>
Контейнер — это istio-proxy
боковая машина Envoy. Теперь приложение является частью плоскости данных.
Разверните пример приложения
Используйте kubectl apply
для развертывания примера приложения в кластере:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml
Примечание.
Кластерам, использующим прокси-сервер HTTP для исходящего доступа к Интернету, потребуется настроить запись службы. Инструкции по настройке см. в разделе поддержки прокси-сервера 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
Убедитесь, что все модули pod имеют состояние Running
с двумя контейнерами в столбце READY
. Второй контейнер (istio-proxy
) добавляется к каждому модулю pod— это боковая машина Envoy, внедренная Istio, а другая — контейнер приложения.
Чтобы протестировать это пример приложения на основе входящего трафика, ознакомьтесь со следующими инструкциями.
Удаление ресурсов
Используется kubectl delete
для удаления примера приложения:
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml
Если вы не планируете включить входящий трафик Istio в кластере и хотите отключить надстройку Istio, выполните следующую команду:
az aks mesh disable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Внимание
Отключение надстройки сетки службы полностью удаляет плоскость управления Istio из кластера.
Istio CustomResourceDefintion
s (CRD) не удаляются по умолчанию. Чтобы очистить их, используйте:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
Используется az group delete
для удаления кластера и связанных ресурсов:
az group delete --name ${RESOURCE_GROUP} --yes --no-wait
Следующие шаги
Azure Kubernetes Service