次の方法で共有


Azure Kubernetes Service (AKS) での Open Service Mesh との統合

Open Service Mesh (OSM) アドオンは、Azure および一部のオープン ソース プロジェクトによって提供される機能と統合されます。

Note

Cloud Native Computing Foundation (CNCF) による Open Service Mesh (OSM) の廃止に伴い、OSM 構成を特定して、同等の Istio 構成に移行することをおすすめします。 OSM から Istio への移行の詳細については、「Open Service Mesh (OSM) 構成から Istio への移行ガイダンス」を参照してください。

重要

オープン ソース プロジェクトとの統合は、AKS サポート ポリシーの対象にはなりません。

イングレス

イングレスでは、メッシュ外部のトラフィックをメッシュ内のサービスにルーティングできます。 OSM を使用すると、ほとんどのイングレス ソリューションをメッシュで動作するように構成できますが、OSM は次のソリューションのいずれかで最も適切に動作します。

Note

現時点では、Azure ゲートウェイ イングレス コントローラー (AGIC) は HTTP バックエンドでのみ機能します。 AGIC を使用するように OSM を構成した場合、AGIC は HTTPS や mTLS などのその他のバックエンドには使用されません。

HTTP イングレス用に Azure ゲートウェイ イングレス コントローラー (AGIC) と OSM アドオンを使用する

重要

HTTPS イングレス用に Azure ゲートウェイ イングレス コントローラー (AGIC) を構成することはできません。

名前空間を作成してアプリケーション サービスをデプロイする

  1. AGIC イングレス コントローラーのインストール。

  2. kubectl create ns コマンドを使用して、アプリケーション サービスの名前空間を作成します。

    kubectl create ns httpbin
    
  3. osm namespace add OSM CLI コマンドを使用して、メッシュに名前空間を追加します。

    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. 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. kubectl apply コマンドを使用して、外部クライアントがポート 14001 上の httpbin サービスにアクセスできるように、次の Ingress および IngressBackend 構成をデプロイします。

    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. kubectl get ingress コマンドを使用して Ingress オブジェクトが正常にデプロイされたことを確認し、外部 IP アドレスをメモします。

    kubectl get ingress -n httpbin
    

    出力は次の出力例のようになります。

    NAME      CLASS    HOSTS   ADDRESS         PORTS   AGE
    httpbin   <none>   *       20.85.173.179   80      6d20h
    
  3. kubectl get ingressbackend コマンドを使用して、IngressBackend オブジェクトが正常にデプロイされたことを確認します。

    kubectl get ingressbackend -n httpbin
    

    出力は次の出力例のようになります。

    NAME      STATUS
    httpbin   committed
    
  4. イングレス サービスの外部 IP アドレスを使用し、curl コマンドに従うことで、httpbin サービスにアクセスできることを確認します。

    curl -sI http://<external-ip>/get
    
  5. status 200 で応答を受信したことを確認します。

メトリック監視

メトリックを監視することにより、メッシュとメッシュ内のデプロイのメトリックを表示できます。 OSM では、Prometheus と Grafana をメトリック監視に使用できますが、これらの統合は AKS サポート ポリシーの対象にはなりません。

OSM を Azure Monitor と統合することもできます。

メッシュ上のメトリックを有効にして Azure Monitor と統合する前に、次の前提条件があることを確認してください。

  • クラスターで Azure Monitor を有効にする。
  • AKS クラスターに対して OSM アドオンを有効にする。
  • アプリケーション名前空間をメッシュにオンボードする。
  1. osm metrics enable コマンドを使用してメッシュ内の名前空間でメトリックを有効にします。

    osm metrics enable --namespace myappnamespace
    
  2. kube-system 名前空間に、Azure Monitor で名前空間を監視できるようにする Configmap を作成します。 たとえば、次のコンテンツを使用して 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. kubectl apply コマンドを使用して ConfigMap を適用します。

    kubectl apply -f monitor-configmap.yaml
    
  4. Azure portal に移動し、AKS クラスターを選択します。

  5. [監視][ログ] を選択します。

  6. [監視] セクションで、InsightsMetrics テーブルに対してクエリを実行し、有効な名前空間のメトリックを表示します。 たとえば、次のクエリは、default 名前空間の envoy メトリックを表示します。

    InsightsMetrics
    |     where Name contains "envoy"
    |     extend t=parse_json(Tags)
    |     where t.namespace == "default"
    

Automation と開発者向けツール

OSM は、特定のオートメーション プロジェクトと開発者ツールを統合することにより、オペレーターや開発者がアプリケーションをビルドしてリリースできるようにします。 たとえば、OSM は、プログレッシブ配信のための Flagger、アプリケーションをビルドするための Dapr と統合されています。 Flagger および Dapr との OSM の統合は、AKS サポート ポリシーの対象ではありません。

外部承認

外部承認を使用すると、外部サービスへの HTTP 要求の承認をオフロードできます。 OSM は、Open Policy Agent (OPA) と統合することによって外部承認を使用できますが、その統合は AKS サポート ポリシーの対象にはなりません。

証明書の管理

OSM には、AKS クラスターで動作するために使用する証明書の種類がいくつかあります。 OSM には、Tresor と呼ばれる独自の証明書マネージャーが含まれています。これは、既定で使用されます。 また、OSM を Hashicorp Vault および cert manager と統合することもできますが、これらの統合は AKS サポート ポリシーの対象にはなりません。

次の手順

この記事では、Open Service Mesh (OSM) アドオンと、Azure および一部のオープン ソース プロジェクトによって提供される機能との統合について説明しました。 OSM の詳細については、AKS の OSM に関する記事を参照してください。