1.18.12. サービスのフェデレーションメッシュへのインポート


サービスをインポートすると、別のメッシュからエクスポートされたサービスの内、サービスメッシュ内でアクセスできるものを明示的に指定できます。

Service Mesh federation importing service illustration

ImportedServiceSet リソースを使用して、インポートするサービスを選択します。メッシュピアによってエクスポートされ、明示的にインポートされるサービスのみがメッシュで利用できます。明示的にインポートしない場合には、サービスは、メッシュ内で利用できません。

  • サービスは、namespace または名前別に選択できます。
  • namespace にエクスポートされたすべてのサービスをインポートするなど、ワイルドカードを使用してサービスを選択できます。
  • メッシュにグローバルであるか、特定のメンバーの namespace の範囲内にあるラベルセレクターを使用してエクスポートするサービスを選択できます。
  • エイリアスを使用してサービスをインポートできます。たとえば、custom-ns/bar サービスを other-mesh/bar としてインポートできます。
  • カスタムドメイン接尾辞を指定できます。これは、bar.other-mesh.imported.local など、インポートされたサービスの name.namespace に、完全修飾ドメイン名として追加されます。

以下の例は、red-mesh でエクスポートされたサービスをインポートする green-mesh の例です。

ImportedServiceSet の例

kind: ImportedServiceSet
apiVersion: federation.maistra.io/v1
metadata:
  name: red-mesh #name of mesh that exported the service
  namespace: green-mesh-system #mesh namespace that service is being imported into
spec:
  importRules: # first matching rule is used
  # import ratings.bookinfo as ratings.bookinfo
  - type: NameSelector
    importAsLocal: false
    nameSelector:
      namespace: bookinfo
      name: ratings
      alias:
        # service will be imported as ratings.bookinfo.svc.red-mesh-imports.local
        namespace: bookinfo
        name: ratings

表1.12 ImportedServiceSet パラメーター
パラメーター説明
metadata:
  name:

サービスをフェデレーションメッシュにエクスポートした ServiceMeshPeer の名前。

 
metadata:
  namespace:

ServiceMeshPeer リソース (メッシュシステム namespace) を含む namespace の名前。

 
spec:
  importRules:
  - type:

サービスのインポートを管理するルールのタイプ。サービスで最初に一致するルールがインポートに使用されます。

NameSelector

spec:
  importRules:
  - type: NameSelector
    nameSelector:
      namespace:
      name:

NameSelector ルールを作成するには、namespace およびエクスポートされたサービスの name を指定します。

 
spec:
  importRules:
  - type: NameSelector
    importAsLocal:

リモートエンドポイントをローカルサービスで集約するには、 true に設定します。true の場合は、サービスは <name>.<namespace>.svc.cluster.local としてインポートされます。

true/false

spec:
  importRules:
  - type: NameSelector
    nameSelector:
      namespace:
      name:
      alias:
        namespace:
        name:

サービスの namespacename を指定した後に、namespace のエイリアスと、サービスの name として使用するエイリアスを指定し、このサービスのエイリアスに使用する NameSelector ルールを作成します。

 

red-mesh から blue-mesh への "bookinfo/ratings" サービスのインポート

kind: ImportedServiceSet
apiVersion: federation.maistra.io/v1
metadata:
  name: red-mesh
  namespace: blue-mesh-system
spec:
  importRules:
  - type: NameSelector
    importAsLocal: false
    nameSelector:
      namespace: bookinfo
      name: ratings

Red-mesh の west-data-center namespace からすべてのサービスを green-mesh にインポートします。これらのサービスは、<name>.west-data-center.svc.red-mesh-imports.local としてアクセスできます。

kind: ImportedServiceSet
apiVersion: federation.maistra.io/v1
metadata:
  name: red-mesh
  namespace: green-mesh-system
spec:
  importRules:
  - type: NameSelector
    importAsLocal: false
    nameSelector:
      namespace: west-data-center
      name: "*"

1.18.12.1. ImportedServiceSet の作成

ImportedServiceSet リソースを作成し、メッシュにインポートするサービスを明示的に宣言します。

サービスは、<exported-name>.<exported-namespace>.svc.<ServiceMeshPeer.name>.remote という名前でインポートされます。これは非表示のサービスで、egress ゲートウェイ namespace にのみ表示され、エクスポートされたサービスのホスト名に関連付けられます。このサービスは、ローカルから <export-name>.<export-namespace>.<domainSuffix> として利用可能になります。ここでは、importAsLocaltrue に設定されていない限り、domainSuffix はデフォルトで svc.<ServiceMeshPeer.name>-imports.local となっています。True の場合には、domainSuffixsvc.cluster.local となります。ImportAsLocalfalse に設定されている場合には、インポートルールのドメイン接尾辞が適用されます。ローカルインポートは、メッシュ内の他のサービスと同様に扱うことができます。これは egress ゲートウェイを介して自動的にルーティングされ、エクスポートされたサービスのリモート名にリダイレクトされます。

前提条件

  • クラスターおよび ServiceMeshControlPlane がメッシュフェデレーション用に設定されている。
  • cluster-admin ロールを持つアカウントがある。
注記

サービスがまだエクスポートされていない場合でも、インポートするように設定できます。ImportedServiceSet で指定された値に一致するサービスがデプロイされてエクスポートされると、これは自動的にインポートされます。

CLI からの手順

この手順に従って、コマンドラインから ImportedServiceSet を作成します。

  1. cluster-admin ロールを持つユーザーとして OpenShift Container Platform CLI にログインします。以下のコマンドを入力します。次に、プロンプトが表示されたら、ユーザー名とパスワードを入力します。

    $ oc login --username=<NAMEOFUSER> <API token> https://<HOSTNAME>:6443
  2. Service Mesh コントロールプレーンをインストールしたプロジェクト (例: green-mesh-system) に切り替えます。

    $ oc project green-mesh-system
  3. 以下の例に基づいて ImportedServiceSet ファイルを作成します。ここでは、green-mesh が、red-mesh によって以前にエクスポートされたサービスをインポートします。

    red-mesh から green-mesh への ImportedServiceSet リソースの例

    kind: ImportedServiceSet
    apiVersion: federation.maistra.io/v1
    metadata:
      name: red-mesh
      namespace: green-mesh-system
    spec:
      importRules:
      - type: NameSelector
        importAsLocal: false
        nameSelector:
          namespace: bookinfo
          name: red-ratings
          alias:
            namespace: bookinfo
            name: ratings

  4. 以下のコマンドを実行して、green-mesh-system namespace に ImportedServiceSet リソースをアップロードおよび作成します。

    $ oc create -n <ControlPlaneNamespace> -f <ImportedServiceSet.yaml>

    以下に例を示します。

    $ oc create -n green-mesh-system -f import-from-red-mesh.yaml
  5. フェデレーションメッシュ内のメッシュピアごとに、必要に応じて追加の ImportedServiceSet リソースを作成します。
  6. green-mesh にインポートしたサービスを検証するには、以下のコマンドを実行します。

    $ oc get importedserviceset <PeerMeshImportedInto> -o yaml

    以下に例を示します。

    $ oc get importedserviceset green-mesh -o yaml
  7. 以下のコマンドを実行して、メッシュにインポートされたサービスを検証します。

    $ oc get importedserviceset <PeerMeshImportedInto> -o yaml

    red mesh からエクスポートされたサービスが 'green-mesh-system namespace の importedserviceset/red-mesh' オブジェクト のステータスセクションを使用して、green メッシュにインポートされていることを検証する例:

    $ oc -n green-mesh-system get importedserviceset/red-mesh -o yaml

    status:
      importedServices:
      - exportedName: red-ratings.bookinfo.svc.green-mesh-exports.local
        localService:
          hostname: ratings.bookinfo.svc.red-mesh-imports.local
          name: ratings
          namespace: bookinfo
      - exportedName: reviews.red-mesh-bookinfo.svc.green-mesh-exports.local
        localService:
          hostname: ""
          name: ""
          namespace: ""

    上記の例では、localService の入力済みフィールドで示されているように、ratings サービスのみがインポートされます。Reviews サービスはインポートできますが、ImportedServiceSet オブジェクトの importRules と一致しないため、現時点ではインポートされません。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.