Интеграция с Open Service Mesh в Службе Kubernetes Azure (AKS)
Надстройка Open Service Mesh (OSM) интегрируется с функциями, предоставляемыми Azure и некоторыми проектами открытый код.
Примечание.
При выходе из системы Open Service Mesh (OSM) в Cloud Native Computing Foundation (CNCF) рекомендуется определить конфигурации OSM и перенести их в эквивалентную конфигурацию Istio. Сведения о миграции из OSM в Istio см . в руководстве по миграции конфигураций Open Service Mesh (OSM) в Istio.
Внимание
Политика поддержки AKS не распространяется на интеграцию с проектами с открытым кодом.
Входящий трафик
Входящий трафик обеспечивает маршрутизацию внешнего по отношению к сети трафика во внутрисетевые службы. С помощью OSM можно настроить большинство решений входящего трафика для работы с сеткой, но OSM лучше всего работает с одним из следующих решений:
Примечание.
В настоящее время контроллер входящего трафика шлюза Azure (AGIC) работает только для серверных служб HTTP. Если вы настроите OSM для использования AGIC, agIC не будет использоваться для других серверных компонентов, таких как HTTPS и mTLS.
Использование контроллера входящего трафика шлюза Azure (AGIC) с надстройкой OSM для входящего трафика HTTP
Внимание
Невозможно настроить контроллер входящего трафика шлюза Azure (AGIC) для входящего трафика HTTPS.
Создание пространства имен и развертывание службы приложений
Установка контроллера входящего трафика AGIC.
Создайте пространство имен для службы приложений с помощью
kubectl create ns
команды.kubectl create ns httpbin
Добавьте пространство имен в сетку с помощью
osm namespace add
команды CLI OSM.osm namespace add httpbin
Разверните службу приложений в пространстве имен с помощью
kubectl apply
команды.export RELEASE_BRANCH=release-v1.2 kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm-docs/$RELEASE_BRANCH/manifests/samples/httpbin/httpbin.yaml -n httpbin
Убедитесь, что модули pod запущены и запущены, и у него есть боковая машина посланника, внедренная с помощью
kubectl get pods
команды.kubectl get pods -n httpbin
Выходные данные должны выглядеть примерно так:
NAME READY STATUS RESTARTS AGE httpbin-7c6464475-9wrr8 2/2 Running 0 6d20h
Список сведений о службе с помощью
kubectl get svc
команды.kubectl get svc -n httpbin
Выходные данные должны выглядеть примерно так:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE httpbin ClusterIP 10.0.92.135 <none> 14001/TCP 6d20h
Развертывание конфигураций входящего трафика и проверка доступа к службе приложений
Разверните следующие
Ingress
иIngressBackend
конфигурации, чтобы разрешить внешним клиентам доступ кhttpbin
службе через порт14001
с помощьюkubectl apply
команды.kubectl apply -f <<EOF apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: httpbin namespace: httpbin annotations: kubernetes.io/ingress.class: azure/application-gateway spec: rules: - http: paths: - path: / pathType: Prefix backend: service: name: httpbin port: number: 14001 --- kind: IngressBackend apiVersion: policy.openservicemesh.io/v1alpha1 metadata: name: httpbin namespace: httpbin spec: backends: - name: httpbin port: number: 14001 # targetPort of httpbin service protocol: http sources: - kind: IPRange name: 10.0.0.0/8 EOF
Убедитесь,
Ingress
что объект был успешно развернут с помощьюkubectl get ingress
команды и запишите внешний IP-адрес.kubectl get ingress -n httpbin
Выходные данные должны выглядеть примерно так:
NAME CLASS HOSTS ADDRESS PORTS AGE httpbin <none> * 20.85.173.179 80 6d20h
Убедитесь, что
IngressBackend
объект успешно развернут с помощьюkubectl get ingressbackend
команды.kubectl get ingressbackend -n httpbin
Выходные данные должны выглядеть примерно так:
NAME STATUS httpbin committed
Убедитесь, что вы можете получить доступ к
httpbin
службе с помощью внешнего IP-адреса службы входящего трафика и следующейcurl
команды.curl -sI http://<external-ip>/get
Подтвердите получение ответа с помощью
status 200
.
Наблюдаемость метрик
Наблюдаемость метрик позволяет просматривать метрики сетки и развертывания в сетке. OSM поддерживает использование Prometheus и Grafana для обеспечения наблюдаемости метрик, но политика поддержки AKS не распространяется на эти интеграции.
OSM можно также интегрировать с Azure Monitor.
Прежде чем включить метрики в сетке для интеграции с Azure Monitor, убедитесь, что у вас есть следующие предварительные требования:
- Включите Azure Monitor в кластере.
- Включите надстройку OSM для кластера AKS.
- Подключение пространств имен приложения к сетке.
Включите метрики для пространства имен в сетке
osm metrics enable
с помощью команды.osm metrics enable --namespace myappnamespace
Создайте ConfigMap в
kube-system
пространстве имен, которое позволяет Azure Monitor отслеживать пространства имен. Например, создайтеmonitor-configmap.yaml
следующее содержимое для мониторингаmyappnamespace
:kind: ConfigMap apiVersion: v1 data: schema-version: v1 config-version: ver1 osm-metric-collection-configuration: |- # OSM metric collection settings [osm_metric_collection_configuration] [osm_metric_collection_configuration.settings] # Namespaces to monitor monitor_namespaces = ["myappnamespace"] metadata: name: container-azm-ms-osmconfig namespace: kube-system
Примените ConfigMap с помощью
kubectl apply
команды.kubectl apply -f monitor-configmap.yaml
Перейдите к портал Azure и выберите кластер AKS.
В разделе Мониторинг выберите Журналы.
В разделе "Мониторинг" запросите таблицу
InsightsMetrics
для просмотра метрик в включенных пространствах имен. Например, следующий запрос показывает метрики посланника для пространства имен по умолчанию :InsightsMetrics | where Name contains "envoy" | extend t=parse_json(Tags) | where t.namespace == "default"
Средства автоматизации и разработки
OSM можно интегрировать с некоторыми проектами автоматизации и инструментами разработчика, чтобы операторам и разработчикам было проще создавать и выпускать приложения. Например, OSM интегрируется с Flagger для поэтапной доставки и с Dapr для создания приложений. Интеграция OSM с Flagger и Dapr не охватывается политикой поддержки AKS.
Внешняя авторизация
Внешняя авторизация позволяет снизить нагрузку на процесс авторизации HTTP-запросов к внешней службе. OSM может использовать внешнюю авторизацию путем интеграции с Open Policy Agent (OPA), но на эту интеграцию не распространяется действие политики поддержки AKS.
Управление сертификатами
OSM использует несколько типов сертификатов при работе в кластере AKS. OSM имеет собственный диспетчер сертификатов под названием Tresor, который используется по умолчанию. В качестве альтернативы OSM позволяет настроить интеграцию с Hashicorp Vault и cert-manager, однако политика поддержки AKS не распространяется на эти интеграции.
Следующие шаги
В этой статье рассматриваются интеграции с надстройками Open Service Mesh (OSM) с функциями, предоставляемыми Azure и некоторыми проектами открытый код. Дополнительные сведения об OSM см. в статье Об OSM в AKS.
Azure Kubernetes Service