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) を構成することはできません。
名前空間を作成してアプリケーション サービスをデプロイする
AGIC イングレス コントローラーのインストール。
kubectl create ns
コマンドを使用して、アプリケーション サービスの名前空間を作成します。kubectl create ns httpbin
osm namespace add
OSM CLI コマンドを使用して、メッシュに名前空間を追加します。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
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
イングレス構成をデプロイし、アプリケーション サービスへのアクセスを確認する
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
kubectl get ingress
コマンドを使用してIngress
オブジェクトが正常にデプロイされたことを確認し、外部 IP アドレスをメモします。kubectl get ingress -n httpbin
出力は次の出力例のようになります。
NAME CLASS HOSTS ADDRESS PORTS AGE httpbin <none> * 20.85.173.179 80 6d20h
kubectl get ingressbackend
コマンドを使用して、IngressBackend
オブジェクトが正常にデプロイされたことを確認します。kubectl get ingressbackend -n httpbin
出力は次の出力例のようになります。
NAME STATUS httpbin committed
イングレス サービスの外部 IP アドレスを使用し、
curl
コマンドに従うことで、httpbin
サービスにアクセスできることを確認します。curl -sI http://<external-ip>/get
status 200
で応答を受信したことを確認します。
メトリック監視
メトリックを監視することにより、メッシュとメッシュ内のデプロイのメトリックを表示できます。 OSM では、Prometheus と Grafana をメトリック監視に使用できますが、これらの統合は AKS サポート ポリシーの対象にはなりません。
OSM を Azure Monitor と統合することもできます。
メッシュ上のメトリックを有効にして Azure Monitor と統合する前に、次の前提条件があることを確認してください。
- クラスターで Azure Monitor を有効にする。
- AKS クラスターに対して OSM アドオンを有効にする。
- アプリケーション名前空間をメッシュにオンボードする。
osm metrics enable
コマンドを使用してメッシュ内の名前空間でメトリックを有効にします。osm metrics enable --namespace myappnamespace
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
kubectl apply
コマンドを使用して ConfigMap を適用します。kubectl apply -f monitor-configmap.yaml
Azure portal に移動し、AKS クラスターを選択します。
[監視] で [ログ] を選択します。
[監視] セクションで、
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 に関する記事を参照してください。
Azure Kubernetes Service