Поделиться через


Интеграция с 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.

Создание пространства имен и развертывание службы приложений

  1. Установка контроллера входящего трафика AGIC.

  2. Создайте пространство имен для службы приложений с помощью kubectl create ns команды.

    kubectl create ns httpbin
    
  3. Добавьте пространство имен в сетку с помощью osm namespace add команды CLI OSM.

    osm namespace add httpbin
    
  4. Разверните службу приложений в пространстве имен с помощью 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
    
  5. Убедитесь, что модули pod запущены и запущены, и у него есть боковая машина посланника, внедренная с помощью kubectl get pods команды.

    kubectl get pods -n httpbin
    

    Выходные данные должны выглядеть примерно так:

    NAME                      READY   STATUS    RESTARTS   AGE
    httpbin-7c6464475-9wrr8   2/2     Running   0          6d20h
    
  6. Список сведений о службе с помощью 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
    

Развертывание конфигураций входящего трафика и проверка доступа к службе приложений

  1. Разверните следующие 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
    
  2. Убедитесь, Ingress что объект был успешно развернут с помощью kubectl get ingress команды и запишите внешний IP-адрес.

    kubectl get ingress -n httpbin
    

    Выходные данные должны выглядеть примерно так:

    NAME      CLASS    HOSTS   ADDRESS         PORTS   AGE
    httpbin   <none>   *       20.85.173.179   80      6d20h
    
  3. Убедитесь, что IngressBackend объект успешно развернут с помощью kubectl get ingressbackend команды.

    kubectl get ingressbackend -n httpbin
    

    Выходные данные должны выглядеть примерно так:

    NAME      STATUS
    httpbin   committed
    
  4. Убедитесь, что вы можете получить доступ к httpbin службе с помощью внешнего IP-адреса службы входящего трафика и следующей curl команды.

    curl -sI http://<external-ip>/get
    
  5. Подтвердите получение ответа с помощью status 200.

Наблюдаемость метрик

Наблюдаемость метрик позволяет просматривать метрики сетки и развертывания в сетке. OSM поддерживает использование Prometheus и Grafana для обеспечения наблюдаемости метрик, но политика поддержки AKS не распространяется на эти интеграции.

OSM можно также интегрировать с Azure Monitor.

Прежде чем включить метрики в сетке для интеграции с Azure Monitor, убедитесь, что у вас есть следующие предварительные требования:

  • Включите Azure Monitor в кластере.
  • Включите надстройку OSM для кластера AKS.
  • Подключение пространств имен приложения к сетке.
  1. Включите метрики для пространства имен в сетке osm metrics enable с помощью команды.

    osm metrics enable --namespace myappnamespace
    
  2. Создайте 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
    
  3. Примените ConfigMap с помощью kubectl apply команды.

    kubectl apply -f monitor-configmap.yaml
    
  4. Перейдите к портал Azure и выберите кластер AKS.

  5. В разделе Мониторинг выберите Журналы.

  6. В разделе "Мониторинг" запросите таблицу 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.