(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023089043
(43)【公開日】2023-06-27
(54)【発明の名称】分離型クラウドネイティブネットワークアーキテクチャ
(51)【国際特許分類】
G06F 11/30 20060101AFI20230620BHJP
【FI】
G06F11/30 155
G06F11/30 140C
G06F11/30 151
【審査請求】有
【請求項の数】18
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023059696
(22)【出願日】2023-04-03
(62)【分割の表示】P 2021547658の分割
【原出願日】2019-10-24
(31)【優先権主張番号】62/805,931
(32)【優先日】2019-02-14
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/753,792
(32)【優先日】2018-10-31
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/850,810
(32)【優先日】2019-05-21
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/880,268
(32)【優先日】2019-07-30
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】517308688
【氏名又は名称】インフォブロックス・インコーポレーテッド
【氏名又は名称原語表記】INFOBLOX INCORPORATED
(74)【代理人】
【識別番号】110000028
【氏名又は名称】弁理士法人明成国際特許事務所
(72)【発明者】
【氏名】フェレル・フィリップ
(72)【発明者】
【氏名】クリシュナムルティ・プラサンナ・クマー
(72)【発明者】
【氏名】ガンタカ・ビジャーサーガラ・レディ
(72)【発明者】
【氏名】ダバラ・ベンカット
(72)【発明者】
【氏名】ヴォビリセティー・サレシュ
(72)【発明者】
【氏名】ヴァーシュニー・ヒマーンシュ
(57)【要約】 (修正有)
【課題】マイクロサービスのユーザカスタム可能なレンダリング、マイクロサービスの旧バージョン及び新バージョンの調整並びに複数のノードの円滑な管理を可能にする、柔軟で拡張性が高く、かつ、効率的なクラウドベースネットワーク及びその管理方法を提供する。
【解決手段】複数のノードを備えるクラウドベースネットワークにおいて、各ノードは、少なくとも1つのコンテナ化マイクロサービス245A,245Bを含む。カスタムリソースを管理するよう各々指定された1または複数のリソースコントローラは、ノード及びノードの内でコンテナ化された任意のマイクロサービスの動作状態及び構成状態を管理するために、マスタ210と通信する。マスタは、ユーザが、マイクロサービス及びクラウドベースネットワーク全体の管理を監視しかつ自動化する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
複数のノードを備えたクラウドベースネットワークであって、各ノードは、
マスタコントローラと、
前記マスタコントローラによって管理される1または複数のカスタムコントローラであって、前記1または複数のカスタムコントローラは、カスタムリソースにアクセスして格納するよう構成されており、各カスタムリソースは、
前記ノードの動作状態、
前記ノードの構成状態、および、
前記ノードを表す1セットのテレメトリデータ、を含む、1または複数のカスタムコントローラと、
前記カスタムコントローラの少なくとも1つによって管理される1または複数のコンテナ化マイクロサービスと、
を備える、クラウドベースネットワーク。
【請求項2】
請求項1に記載のクラウドベースネットワークであって、少なくとも1つのコンテナ化マイクロサービスが、前記クラウドベースネットワーク内での1または複数の意図駆動型の動作の実行を可能にする、クラウドベースネットワーク。
【請求項3】
請求項1に記載のクラウドベースネットワークであって、前記複数のノードは、外部システムによって管理される、クラウドベースネットワーク。
【請求項4】
請求項1に記載のクラウドベースネットワークであって、前記ノードは、さらに、
前記マスタコントローラおよび前記カスタムコントローラをインスタンス化するよう構成されたホストコントローラを備える、クラウドベースネットワーク。
【請求項5】
請求項1に記載のクラウドベースネットワークであって、データは、前記ノードの外部に格納され、オンデマンドでアクセス可能である、クラウドベースネットワーク。
【請求項6】
請求項1に記載のクラウドベースネットワークであって、前記マスタコントローラは、アプリケーションプログラミングインターフェース(API)サーバを備え、前記マスタコントローラは、前記APIサーバを用いて標準ストレージインターフェースを確立するよう構成されている、クラウドベースネットワーク。
【請求項7】
請求項6に記載のクラウドベースネットワークであって、前記ノードの外部に格納された前記データは、前記標準ストレージインターフェースを介してカスタムコントローラによってアクセスされる、クラウドベースネットワーク。
【請求項8】
請求項1に記載のクラウドベースネットワークであって、少なくとも1つのカスタムコントローラは、さらに、
前記マスタコントローラから、
前記ノードの所望の動作状態、および、
前記ノードの所望の構成状態を受信し、
前記ノードの前記動作状態および前記所望の動作状態を調和させ、
前記ノードの前記構成および前記所望の構成を調和させるよう構成されている、クラウドベースネットワーク。
【請求項9】
請求項1に記載のクラウドベースネットワークであって、前記マスタコントローラは、さらに、
マイクロサービスから、
前記マイクロサービスの動作状態、および、
前記マイクロサービスの構成状態を受信し、
前記動作状態および前記構成状態は、前記マイクロサービスの現行バージョンに関連し、
前記マイクロサービスへ、
前記マイクロサービスの第2動作状態、および、
前記マイクロサービスの第2構成状態を提供し、
前記第2動作状態および前記第2構成状態は、前記マイクロサービスの第2バージョンに関連し、
前記マイクロサービスの前記現行バージョンおよび前記第2バージョンを1または複数の他のマイクロサービスと調和させるよう構成されている、クラウドベースネットワーク。
【請求項10】
請求項1に記載のクラウドベースネットワークであって、少なくとも1つのコンテナ化マイクロサービスは、前記カスタムコントローラによって格納された前記カスタムリソースをノードオペレータへの表示に向けてレンダリングするよう構成されたコマンドライン・インターフェース(CLI)マイクロサービスである、クラウドベースネットワーク。
【請求項11】
請求項1に記載のクラウドベースネットワークであって、前記複数のノードは、クラスタを備え、前記クラスタは、前記クラウドベースネットワーク内の対応するセットのノードを各々備えた複数のクラスタの内の1つを含む、クラウドベースネットワーク。
【請求項12】
請求項11に記載のクラウドベースネットワークであって、少なくとも1つのクラスタは、外部クラスタであり、前記外部クラスタは、
複数のマスタコントローラであって、各マスタコントローラは、前記複数のクラスタの内の1クラスタを管理するよう構成されている、複数のマスタコントローラと、
ファブリックコントローラと、
を備える、クラウドベースネットワーク。
【請求項13】
請求項12に記載のクラウドベースネットワークであって、前記ファブリックコントローラは、
前記複数のマスタコントローラの各々を監視し、
前記複数のマスタコントローラの各々を管理し、
各クラスタ内の前記複数のノードの各々にアクセスし、
各クラスタ内の前記複数のノードの各々を管理するよう構成されている、クラウドベースネットワーク。
【請求項14】
クラウドベースネットワークを管理するための方法であって、
複数のノードを生成して管理する工程を備え、各ノードは、
マスタコントローラと、
1または複数のカスタムコントローラと、
1または複数のコンテナ化マイクロサービスと、
を備え、
前記ノードの各々を管理する工程は、
前記マスタコントローラによって、前記1または複数のカスタムコントローラを管理する工程と、
少なくとも1つのカスタムコントローラによって、前記1または複数のコンテナ化マイクロサービスを管理する工程と、
カスタムリソースにアクセスして格納する工程と
を含み、各カスタムリソースは、
前記ノードの動作状態、
前記ノードの構成状態、および、
前記ノードを表す1セットのテレメトリデータ、
を含む、方法。
【請求項15】
請求項14に記載の方法であって、少なくとも1つのコンテナ化マイクロサービスが、前記クラウドベースネットワーク内での1または複数の意図駆動型の動作の実行を可能にする、方法。
【請求項16】
請求項14に記載の方法であって、前記複数のノードは、外部システムによって管理される、方法。
【請求項17】
請求項14に記載の方法であって、各ノードは、さらに、
前記マスタコントローラおよび前記カスタムコントローラをインスタンス化するよう構成されたホストコントローラを備える、方法。
【請求項18】
請求項14に記載の方法であって、少なくとも1つのカスタムコントローラは、
前記マスタコントローラから、
前記ノードの所望の動作状態、および、
前記ノードの所望の構成状態を受信し、
前記ノードの前記動作状態および前記所望の動作状態を調和させ、
前記ノードの前記構成および前記所望の構成を調和させるよう構成されている、方法。
【請求項19】
請求項14に記載の方法であって、前記のマスタコントローラは、さらに、
マイクロサービスから、
前記マイクロサービスの動作状態、および、
前記マイクロサービスの構成状態を受信し、
前記動作状態および前記構成状態は、前記マイクロサービスの現行バージョンに関連し、
前記マイクロサービスへ、
前記マイクロサービスの第2動作状態、および、
前記マイクロサービスの第2構成状態を提供し、
前記第2動作状態および前記第2構成状態は、前記マイクロサービスの第2バージョンに関連し、
前記マイクロサービスの前記現行バージョンおよび前記第2バージョンを1または複数の他のマイクロサービスと調和させるよう構成されている、方法。
【請求項20】
請求項19に記載の方法であって、少なくとも1つのコンテナ化マイクロサービスは、前記カスタムコントローラによって格納された前記カスタムリソースをノードオペレータへの表示に向けてレンダリングするよう構成されたコマンドライン・インターフェース(CLI)マイクロサービスである、方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への相互参照
本願は、2019年7月30日出願の米国仮出願第62/880,268号;2019年5月21日出願の米国仮出願第62/850,810号;2019年2月14日出願の米国仮出願第62/805,931号;および、2018年10月31日出願の米国仮出願第62/753,792号の各々の利点を主張し、それらの出願の各々は、参照によって全体が援用される。
【0002】
本開示は、クラウドベースのコンピュータネットワーキングに関する。
【背景技術】
【0003】
コンピュータネットワーキングシステムが、複数のクライアントデバイスを接続し、それらの間でのデータ転送を可能にする。クラウドベースのアプリケーションおよびデータ処理の急速な成長についていくには、既存のネットワーキングソリューションでは不十分である。したがって、より柔軟で、拡張性が高く、かつ、効率的なクラウドベースのネットワークアーキテクチャソリューションが求められている。
【発明の概要】
【0004】
クラウドベースネットワークが、マイクロサービスベースのアプリケーションアーキテクチャを備えており、そのアーキテクチャにおいては、ネットワーククラスタ内の複数のノードが各々、少なくとも1つのマイクロサービスを含んでいる。クラウドベースネットワークは、個々のマイクロサービス、ノード、および、クラスタの自動化、可視性の向上、監視の軽減、ならびに、ネットワークの制御の向上を可能にする。
【0005】
クラウドベースネットワークは、複数のノードを備えており、各ノードは、マスタコントローラと、1または複数のカスタムコントローラと、1または複数のコンテナ化マイクロサービスと、を備える。マスタコントローラは、1または複数のカスタムコントローラを管理し、カスタムコントローラは、ノードの動作状態、ノードの構成状態、および、ノードを表す1セットのテレメトリデータを示すカスタムリソースにアクセスして格納するよう構成されている。カスタムコントローラの少なくとも1つは、1または複数のコンテナ化マイクロサービスを管理する。また、クラウドベースネットワークは、カスタムリソースのユーザカスタム可能なレンダリングと、カスタムリソースを表示するコマンドライン・インターフェース(CLI)シェルの動的更新とを可能にする。
【0006】
少なくとも1つのカスタムコントローラは、ノードの所望の動作状態および構成状態をそれぞれ、ノードの既存の動作状態および構成状態と調和させるよう構成されてよい。同様に、マスタコントローラは、異なるバージョンの複数のマイクロサービスを調和させることで、更新中にノードの円滑な機能を可能にするよう構成されてよい。
【0007】
クラウドベースネットワークの複数のノードは、複数のクラスタにわたって分散されてよく、各クラスタは、外部ネットワーククラスタに配置されたマスタコントローラによって制御されてよい。ファブリックコントローラが、マルチクラスタクラウドベースネットワークを制御することができ、ファブリックコントローラは、各クラスタ内のノードの各々を監視、管理、および、アクセスする。
【図面の簡単な説明】
【0008】
【
図1】1または複数の実施形態に従って、クラウドベースネットワークを示す図。
【0009】
【
図2】1または複数の実施形態に従って、
図1に示したクラウドベースネットワーク内のノードを示す図。
【0010】
【
図3】1または複数の実施形態に従って、クラウドベースネットワーク内の変化を監視するための方法を示す図。
【0011】
【
図4】1または複数の実施形態に従って、ユーザがクラウドベースネットワークと相互作用しうる環境を示す図。
【0012】
【
図5】1または複数の実施形態に従って、クラウドベースネットワーク・コマンドライン・インターフェースを動的にレンダリングするための方法を示す図。
【0013】
【
図6】1または複数の実施形態に従って、クラウドベースネットワーク内のマイクロサービスに更新を適用するための処理を示す図。
【0014】
【
図7】1または複数の実施形態に従って、クラウドベースネットワーク内での動的なモデル駆動マイクロロギングのための方法を示す図。
【0015】
【
図8】1または複数の実施形態に従って、クラウドベースネットワーク内で構造化カスタムリソース記述(CRD)をレンダリングするための方法を示す図。
【0016】
【
図9A】1または複数の実施形態に従って、テンプレート化せずにレンダリングされたCRDのモデル駆動出力を示す図。
【0017】
【
図9B】1または複数の実施形態に従って、
図9Aに示したCRDのテンプレート化された出力を示す図。
【0018】
【
図9C】1または複数の実施形態に従って、ユーザが定義したCRDのテンプレート化された出力を示す図。
【0019】
【
図10】1または複数の実施形態に従って、複数のネットワーククラスタを備えたクラウドベースネットワークを示す図。
【0020】
図面は、例示の目的でのみ、様々な実施形態を示している。当業者であれば、本明細書に記載の原理から逸脱することなしに、本明細書に記載の構造および方法の別の実施形態を利用できることが、以下の議論から容易に分かる。
【発明を実施するための形態】
【0021】
クラウドベースネットワークは、ネットワークの各ノード内のマイクロサービスを介してユーザにコンテナ化ネットワークサービスを提供する。ユーザは、本明細書に記載のクラウドベースネットワークアーキテクチャを介して、自身のネットワーキングデバイスを商業クラウドサービスプロバイダと統合できる。したがって、ユーザは、ネットワークサービスを自動化しつつ、可視性を維持し、自身のクラウドベースネットワークシステムを制御する。クラウドベースネットワークは、さらに、ユーザのネットワーク動作をソフトウェア開発および品質保証と統一するのに役立ちうる。
【0022】
図1は、1または複数の実施形態に従って、クラウドベースネットワーク100を示す。クラウドベースネットワーク100は、デバイス間のデータパケット転送を可能にする。クラウドベースネットワーク100は、分散型ネットワーククラスタ(”クラスタ”)110と、時系列データベース140と、クライアント150A、150Bと、を備える。時系列データベース140は、データベースデータリンク145を介してクラスタ110に接続しており、クライアント150A、150Bは、それぞれ、クライアントデータリンク152A、152Bを介してクラスタに接続している。クラウドベースネットワーク100は、 例えば、さらなるネットワークノードおよび/またはクライアントデバイスなど、
図1に示したもの以外の構成要素を備えてもよい。
【0023】
分散型ネットワーククラスタ110は、複数のネットワークノード120A、120B、120Cと、いくつかの実施形態においては、複数のサーバノード121A、121Bと、を備える。ネットワークノード120A~Cおよびサーバノード121A~Bは、集合的に「ノード」と呼ばれ、1または複数のデータリンク130を介して互いに接続している。
図2を参照して後に詳述するように、クラスタ110内のノード120A~C、121A~Bは、1または複数のネットワークサービスを実行および/またはサポートして、クラウドベースネットワークオペレーティングシステムを確立する。
【0024】
ネットワークノード120A~Cの例は、ネットワークルータ、スイッチ、または、それらの組みあわせ、を含む。サーバノード121A~Bは、例えば、サーバコンピュータであってよい。クラウドベースネットワークは、ハードウェア構成要素および/またはソフトウェア構成要素によってパケット転送を可能にする。いくつかの実施形態において、クラウドベースネットワークは、ソフトウェアによってサーバノード121A~B上に配備され、ハードウェアによってノード120A~C上に配備される。いくつかの実施形態において、クラウドベースネットワークは、ソフトウェアによってクラスタ110内のノード120A~C、121A~Bの大部分またはすべてに配備される。
【0025】
クラスタ110内のノード120A~C、121A~Bは、個別に動作しても、分散合意で動作してもよい。ノード120A~C、121A~Bの各々は、それぞれのノードの動作を管理するマスタ構成要素(
図1には図示せず)を備える。いくつかの実施形態において、クラスタ110内のすべてのノード120A~C、121A~Bのマスタ構成要素は、クラスタ内での集合的動作および同期を可能にするように協働する。ノード120A~C、121A~Bは、ノード120A~C、121A~Bの動作を管理および調整するために、アルゴリズム(Raftコンセンサス、Paxos、または、委任ビザンチン・フォールト・トレランス(“dBFT”)、もしくは、それらの何らかの組みあわせなど)を用いてよい。
【0026】
データリンク130、データベースリンク140、および、クライアントデータリンク152A~Bなどの接続が、クラウドベースネットワーク100内の通信カップリングを可能にする。例えば、接続は、ケーブル媒体(電線または光ケーブルなど)もしくは無線媒体(WiFiなど)で確立されてよい。クライアント150A~Bは、ノード120A~C、121A~Bの一部または全部にあるポートを介して、クラスタ110内のノード120A~C、121A~Bに接続してよい。
【0027】
時系列データベース140Aは、シーケンシャルな順序タイムスタンプ付きデータを格納する。タイムスタンプ付きデータは、例えば、60秒間隔で取得されるクラスタ100内のノードの構成状態および/または動作状態の測定結果を含んでよい。時系列データベース140は、ノード120A~C、121A~Bから時系列データを受信して格納する。いくつかの実施形態において、クラウドベースネットワーク100のユーザは、クラスタ110およびそのノード120A~C、121A~Bならびにクラスタ110内で動作するネットワークサービスの動作状態および/または構成状態に関する解析を実行するために、時系列データベース140にクエリしてよい。時系列データベース140内の時系列データは、クラスタ110の制御ループの一部として用いられてよく、制御ループは、例えば、履歴レートと比較してネットワークトラフィック内で不規則なスパイクをチェックするために用いられてよい。
【0028】
クライアント150A~Bは、分散型ネットワーククラスタ110によって提供されるネットワークサービスを利用する。クライアント150A~Bは、例えば、ボーダー・ゲートウェイ・プロトコル(”BGP”)などのネットワークプロトコルを利用しうる電子デバイス(スマートフォン、ラップトップ、パーソナルコンピュータ、および、サーバなど)である。
【0029】
図2は、1または複数の実施形態に従って、
図1に示したクラウドベースネットワーク100内のノード200を示す。
図1のノード120A~C、121A~Bの各々は、ノード200の実施形態である。ノード200は、時系列データベース205と、マスタコントローラ(”マスタ”)210と、管理コントローラ211と、1または複数の外部ノードエージェント220と、サードパーティコンテナ226と、ホストコントローラ230と、1または複数のリソースコントローラ235A、235Bと1または複数のカスタムコントローラ236と、を備える。いくつかの実施形態において、ノード200は、
図2に示したもの以外の構成要素を備えてもよい。
【0030】
時系列データベース205は、ノード200の1または複数の状態に関する時系列データを記録する。例えば、一実施形態において、時系列データベース205は、ノード200の構成状態、動作状態、および、テレメトリに関するデータを受信する。時系列データベース205は、記録したデータを
図1の時系列データベース140に提供する。ユーザは、ノード200の状態を特定するために、時系列データベース205にクエリしてよい。
【0031】
マスタ210は、ノード200の1または複数の状態を管理する。マスタ210は、アプリケーションプログラミングインターフェース(”API”)サーバ212と、スケジューラ214と、ストレージ216と、を備える。マスタ210は、管理コントローラ211に接続されており、管理コントローラ211は、ユーザ(ネットワークエンジニアなど)が、マスタ210、ノード200、クラスタ110、または、それらの何らかの組みあわせ、と相互作用するために利用するコマンドラインインターフェース(”CLI”)を提供する。CLIについては、
図5に関してさらに詳細に論じる。
【0032】
APIサーバ212は、クラウドベースネットワーク100内のノード200の状態を表すAPIオブジェクトのためのデータを検証および構成する。APIオブジェクトは、API関数に基づいており、特定のオブジェクトモデルに従う。例えば、APIオブジェクトは、クラウドベースネットワーク100のユーザによって設定された構成状態を示してよい。異なるAPIオブジェクトは、異なるコンテナ化されたマイクロサービス、様々なリソース、および、ポリシー(リスタートポリシー、アップグレード、フォールト・トレランスなど)を表してよい。いくつかの実施形態において、ノード200の他の構成要素が、APIオブジェクトを用いて、宣言自動化を実行し、様々な状態(ノード200の動作状態および構成状態など)を維持するための制御ループを形成する。APIサーバ212は、新しいマイクロサービスを登録し、その後、新たに登録されたマイクロサービスのCRDのインスタンス化を表す1セットのCROを決定および/または導出してよい。いくつかの実施形態において、APIサーバ212は、リプレゼンテーショナル・ステート・トランスファ(”REST”)動作をサービスし、ノード200の状態およびクラスタ110全体の状態の両方にフロントエンドを提供する。ユーザは、ノード200および/またはクラスタ110の構成ひいては動作の変更を実行するため、もしくは、クラスタ110内の活動(すなわち、動作状態)を監視するために、管理コントローラ211によって提供されたフロントエンドと相互作用してよい。
【0033】
スケジューラ214は、クラスタ110内の複数のノード(ノード200など)にわたってコンテナ化マイクロサービスのためのスケジューリングを管理する。コンテナ化マイクロサービスは、コンテナ(後述のコンテナ240Aなど)内で互いに結合されてよい。いくつかの実施形態において、複数の結合されたマイクロサービスは、ポッドと呼ばれうる。スケジューラ214は、新たに作成されたポッドの個別および集合的なリソース要件、クラスタ110内の新たに生成されたポッドおよび/またはノードのハードウェア、ソフトウェア、および、ポリシー制約、アフィニティ仕様およびアンチアフィニティ仕様、データ局所性、作業負荷間干渉、ならびに、期限を考慮する。スケジューラ214は、スケジューリングタスクに関する合意に達するために、クラスタ110内の他のノード(ノード200と同様のノード)のスケジューラ214と連携して動作する。例えば、クラスタ110内の各ノードのスケジューラ214は、ポッドを配備すべきノードを決定するために連携して動作する。
【0034】
ストレージ216は、カスタムリソースのためのテンプレートである1または複数のカスタムリソース記述(”CRD”)217と、CRD217の動作インスタンス化である1または複数のカスタムリソースオブジェクト(”CRO”)218と、を格納する。カスタムリソースは、マイクロサービスまたはその他のソフトウェア構成要素のデータ構造を表すデータオブジェクトモデルである。ノード200は、ストレージ216に対して読み出しおよび書き込みを行ってよい。いくつかの実施形態において、ストレージ216は、ノード200の外部にあり、その場合、マスタ210は、ノード200の様々な構成要素がストレージ216にアクセスできるようにする標準ストレージインターフェースを確立する。ノード200は、リアルタイムかつオンデマンドでストレージ216にアクセスしてよい。いくつかの実施形態において、マスタ210は、2以上のストレージを備える。例えば、1つのストレージが、ランダムアクセスメモリ(”RAM”)などの主メモリを備えてよく、第2ストレージが、ハードドライブなどの補助メモリを備えてよい。一実施形態において、ストレージ216は、etcdであり、それは、分散キー/値ストアである。
【0035】
外部ノードエージェント220は、ノード200上で実行しているコンテナ化マイクロサービスを、マスタ210によって提供された構成の通りに維持する。マスタ210は、少なくとも1つのCRD217を用いて構成を提供する。いくつかの実施形態において、外部ノードエージェント220は、1または複数のサードパーティコンテナ226を維持はしないが、それらと通信することができる。ノード200は、複数の外部ノードエージェント220を備えてもよい。外部ノードエージェント220は、例えば、Kubeletであってよい。外部ノードエージェント220は、コンテナマネージャ225およびプロキシ250に接続されている。コンテナマネージャ225は、ノード内のマイクロサービスのコンテナ化を実行するために用いられるコンテナエンジン(DOCKERなど)である。外部ノードエージェント220は、コンテナマネージャ225を用いて、ノード200で実行しているマイクロサービス内のコンテナ240を維持する。コンテナマネージャ225は、1または複数のサードパーティコンテナ226またはその他のサードパーティソフトウェアにも接続されており、コンテナ化を実行するために1または複数のサードパーティコンテナ226またはソフトウェアによって用いられる。
【0036】
プロキシ230は、ノード200内でのパケット転送を可能にするサーバである。プロキシ230は、ストリーム転送またはラウンドロビン転送を実行するために、ユーザ・データグラム・プロトコル(”UDP”)、トランスミッション・コントロール・プロトコル(“TCP”)、および、ストリーム・コントロール・トランスミッション・プロトコル(”SCTP”)をプロキシすることができる。例えば、プロキシ230は、kubeプロキシであってよい。別の実施形態において、他のプロキシサービスを実行するプロキシ230と同様のさらなるプロキシが、ノード200に備えられてもよい。例えば、ノード200は、ハイパーテキスト・トランスファ・プロトコル(”HTTP”)をプロキシするためなど様々な目的のために、kubectlプロキシ、APIサーバプロキシ、などを備えてもよい。
【0037】
リソースコントローラ235A~Bは、ノード200のリソースを管理および包含する。リソースコントローラ235A~Bの各々は、少なくとも1つのカスタムコントローラ236を備えており、カスタムコントローラ236は、1または複数のコンテナ化マイクロサービス245A~Bを管理するよう構成されている。いくつかの実施形態において、ノード200は、
図2に示したものより多くのリソースコントローラおよび/またはカスタムコントローラを備える。
【0038】
リソースコントローラ235A~Bは、各々が管理する1または複数のカスタムコントローラ236ひいてはマイクロサービスへアクセスできる。いくつかの実施形態において、リソースコントローラ235A~Bは、新しいマイクロサービスを発見および/またはインスタンス化し、その後、ノード200内での登録および利用のために、マスタ210のAPIサーバ212にそれらを提示してよい。したがって、マスタ210は、リソースコントローラ235A~Bにノード200の所望の構成状態を提供し、ノード200内に登録された新しいマイクロサービスの構成が所望の構成状態に達することを円滑にする。また、リソースコントローラ235A~Bは、マスタ210から受信したノード200の所望の動作状態に従って、マイクロサービスの動作を管理する。
【0039】
カスタムコントローラ236は、カスタムリソースへのアクセスを可能にし、ノード200内のコンテナ化マイクロサービス245A~Bを管理する。カスタムコントローラ236は、動作状態CRD243A、構成状態CRD243B、および、テレメトリ状態CRD243Cなどのオブジェクトモデル242と、マイクロサービス245A~Bを含む1または複数のコンテナ240A~Bと、を備える。動作状態CRD243Aは、クラウドベースネットワーク100の実際のランタイム状態を表すデータオブジェクトであり、構成状態CRD243Bは、クラウドベースネットワーク100の所望の状態を表し、テレメトリ状態CRD243Cは、クラウドベースネットワーク100の動作の解析を表す。いくつかの実施形態において、マイクロサービスに関連付けられた複数のCRD243A~Cの間の依存順序が、ネットワークサービスの機能を決定してよい。APIサーバ212は、依存順序を考慮するために、CRDおよびCROが登録および配備される順序を中継してよい。例えば、依存順序は、マイクロサービスのCRD内でアノテートされてよい。
【0040】
カスタムコントローラ236は、カスタムコントローラ236によって制御されるカスタムリソースと相互作用するために様々な関数およびロジックを備える。例えば、カスタムコントローラ236は、カスタムコントローラ236によって制御されるカスタムリソースのデータ構造に固有の“create”、“read”、“update”、および、“delete”(“CRUD”)関数を備えてよい。カスタムコントローラ236は、APIサーバ212にこれらの関数を拡張して、それらをAPIに追加し、カスタムリソースとのユーザ相互作用を可能にしてよい。
【0041】
カスタムコントローラ236は、1または複数のマイクロサービス245A~Bおよび/またはコンテナ240A~B、ならびに、オブジェクトモデル242の状態を定期的に観察する制御ループを有効にする。また、カスタムコントローラ236は、マイクロサービス245A~Bおよび/またはコンテナ240A~Bの現在の状態を、オブジェクトモデル242によって指定された所望の状態に変更してよい。例えば、オブジェクトモデル242によって定義されたカスタムリソースが、カスタムコントローラ236Aのドメイン内の特定のマイクロサービス245AのためのAPIを拡張してよく、カスタムコントローラ236Aは、カスタムコントローラ236の関数に基づいて、マイクロサービス245Aを制御してよい。
【0042】
マイクロサービス245A~Bは、アプリケーションの機能を提供するために互いに連携するアプリケーションの分散ソフトウェア構成要素である。マイクロサービス245A~Bは、ユーザがクラウドベースネットワーク100内の1または複数の意図駆動型の動作を実行することを可能にする。完全なネットワーキングオペレーティングシステムが、多くの意図駆動型の動作を実行できる。いくつかの実施形態において、マイクロサービスは、ネットワークプロトコルスタックの様々な層を管理してよい。例えば、マイクロサービス245Aは、ネットワークプロトコルスタック層の中でも特に、BGP、オープン・ショーテスト・パス・ファースト(“OSPF”)、インターミディエイト・システム・トゥ・インターミディエイト・システム(“IS-IS”)、スパニング・ツリー・プロトコル (“STP”)、および、リンク・アグリゲーション・コントロール・プロトコル(“LACP”)を管理してよい。別の実施形態において、マイクロサービス245A~Bは、新しいクラウドネイティブネットワーキングオペレーティングシステムサービス(サービス発見またはサイドカーサービスなど)であってよい。
【0043】
マイクロサービス245A~Bは、コンテナ240A~B内で動作する。上述のように、コンテナマネージャ225は、ノード200内のコンテナ240A~Bを管理する。コンテナ240A~Bは各々、(ノード200のオペレーティングシステムを除いて)外部リソースから独立して機能するようにコンテナに含まれたマイクロサービス245A~Bに必要な依存関係(ライブラリなど)を含む個別の実行可能なソフトウェアパッケージである。コンテナ240A~Bは、オペレーティングシステムレベルでの仮想化メカニズムであり、複数のコンテナが、ノード200のオペレーティングシステムのカーネルを共有する。
【0044】
ホストコントローラ250は、ノード200内の制御ループを管理するデーモンである。各制御ループは、コントローラのロジックに基づいており、動作状態を構成状態に変更するため、もしくは、ノード200またはクラスタ110内の1または複数の関数を実行するために用いられる。ホストコントローラ250は、リソースコントローラ235A~Bおよびカスタムコントローラ236内で動作する制御ループを維持するために、それぞれ、リソースコントローラ235A~Bおよびカスタムコントローラ236と相互作用する。複数のリソースコントローラ235A~Bにより、ホストコントローラ250は、異なるリソースに対応する複数の制御ループを可能にしうる。いくつかの実施形態において、ホストコントローラ250は、マスタ210、リソースコントローラ235A~B、および、カスタムコントローラ236を自動的にインスタンス化するよう構成されている。いくつかの実施形態において、ホストコントローラは、別のノード、ネットワークオペレータ、ファブリックコントローラ、または、任意のその他の適切なエンティティから、1または複数のコントローラをインスタンス化するための命令を受信する。
【0045】
クラウドベースネットワークにおける変化の監視
図3は、1または複数の実施形態に従って、クラウドベースネットワーク100内の変化を監視するための方法300を示す。ノード200内で、マスタ210は、ウォッチ記述に基づいて、変化を監視するカスタムリソースを動的に選択する(工程310)。例えば、マスタ210は、ユーザからウォッチ記述を受信してよく、ユーザは、その後、カスタムリソースに対応するカスタムコントローラ236を用いてカスタムリソースを監視するよう、ホストコントローラ250に命令する。ウォッチ記述は、変化を監視する1または複数の所望のパラメータと、パラメータの少なくとも1つに対してアクションを取るべき変化閾値と、を記述する。ウォッチ記述は、さらに、カスタムリソースで検出された変化に応答して取るべき1または複数のアクション(すなわち、1セットの応答命令)を含む。例えば、ウォッチ記述は、メモリ使用量閾値を特定してよく、カスタムリソースがメモリ使用量閾値を超えたことに応答して、利用不可能としてカスタムリソースにフラグを立ててよい。
【0046】
マスタ210は、監視対象のカスタムリソースの動作状態に基づいて、変化通知を受信する(工程320)。例えば、ホストコントローラ250は、監視対象のカスタムリソースに関連する時系列データを解析してよい。カスタムリソースのパラメータに対する変化閾値を超えたことを検出すると、ホストコントローラ250は、マスタ210に警告する。
【0047】
ホストコントローラ250の変化通知に応答して、マスタ210は、制御シーケンスを開始する(工程330)。マスタ210が制御シーケンスで取るアクションは、ウォッチ記述によって記述されてよい。
【0048】
マスタ210は、ウォッチ記述に関連付けられた1セットの応答命令に従う(工程340)。応答命令は、カスタムリソースの変化に関してユーザに電子メールおよび/またはインスタントメッセージを送信するよう、マスタ210に命令してよい。いくつかの実施形態において、ユーザは、ノード200の管理コントローラ211によって管理されているユーザインターフェースを介してカスタムリソースの変化に関する通知を受信する。
【0049】
いくつかの実施形態において、マスタ210は、関連する制御後のアクションを関連付けて、それらのアクションを取る(工程350)。制御後のアクションは、他のカスタムリソースの監視および/または解析を含んでよい。例えば、監視対象のカスタムリソースの変化が、ノード200内のその他のカスタムリソースの変化を示唆しうる。したがって、カスタムリソースの動作状態の変化が、その他のカスタムリソースの監視をトリガできる。
【0050】
動的な自動クラウドベースネットワークCLIレンダリング
図4は、1または複数の実施形態に従って、ユーザ405がクラウドベースネットワーク100と相互作用しうる環境400を示す。環境400は、1または複数のCRD217と、APIサーバ212と、ユーザ405と、CLIマイクロサービス410と、ユーザアクセス可能なコマンドライン・インターフェース(CLI)シェル420)と、情報モデルツリー430と、を備える。
【0051】
ユーザ405は、ノード内の複数のマイクロサービスにアクセスできるクラウドベースネットワーク100のオペレータであってよい。
【0052】
CLIマイクロサービス410は、APIサーバ212にアクセスし、CLIシェル420をレンダリングし、情報モデルツリー430を生成および維持する。CLIマイクロサービス410は、
図2のマイクロサービス245A~Bの一実施形態であるが、具体的には、CLIシェル420をレンダリングするよう構成されている。CLIマイクロサービス410は、
図5に関して詳述するように、CRD217のコンテンツをYANGフォーマットに変換してよい。
【0053】
CLIシェル420は、APIサーバ212に登録されたマイクロサービスに関連付けられたCRD217をレンダリングする。CLIシェル420は、ユーザ405が、コマンドライン・インターフェースにおいて1または複数のCRDによって定義された階層オブジェクト(シミュレートされたフォルダ-ファイルデータ構造など)を閲覧およびアクセスすることを可能にする。登録されているマイクロサービスは、ノード200のマイクロサービス245A~Bを含んでよい。
図2に関して記載したノード200の管理コントローラ210は、ユーザがCLIシェル420へアクセスすることを可能にしてよい。一実施形態において、ユーザは、APIサーバ212および/または登録済みCRD217によって定義および/または利用されるネットワークプロトコルで、登録済みCRD217と通信および/または相互作用する。別の実施形態において、CLIマイクロサービス410は、CLIシェル420とは異なるネットワークインターフェースを通して、登録済みCRD217へのアクセスを可能にする。
【0054】
情報モデルツリー430は、CLIシェル420がCRD217をレンダリングする方法を決定する。情報モデルツリー430は、クラウドベースネットワーク100内の複数のノード(ノード200など)の間の関係性と、CRD217に関する構造情報とを記録し続ける。いくつかの実施形態において、情報モデルツリー430は、CRD217の構造およびコンテンツに関する階層情報を格納する。情報モデルツリー430は、新たに登録されたCRD217で動的に更新する。
【0055】
図5は、1または複数の実施形態に従って、クラウドベースネットワーク・コマンドライン・インターフェース(CLI)を動的にレンダリングするための方法500を示す。クラウドベースネットワークCLIの動的レンダリングは、
図1、
図2、および、
図4にそれぞれ示したクラウドベースネットワーク100、ノード200、および、システム環境400内で実行される。
【0056】
APIサーバ212が、1または複数のCRD217を登録する(工程510)。APIサーバ212は、クライアントデバイス(クライアントデバイス150A~Bなど)および/またはカスタムコントローラ236からCRDを受信してよい。いくつかの実施形態において、ノード200内の任意のコントローラ(例えば、リソースコントローラ235A~B、ホストコントローラ250)が、APIサーバ212にCRD217を登録してもよい。
【0057】
少なくとも1つのCRD217を登録すると、APIサーバ212は、CLIマイクロサービス410に通知する(工程520)。通知は、登録されたCRD217の構造およびコンテンツ(もしくは、構造およびコンテンツを記述する情報)を含む。
【0058】
CLIマイクロサービス410は、CRD217の構造を、ネットワーク状態情報および構成にアクセスするかまたは表すために用いられるYANGまたは別の適切な言語に変換する(工程530)。
【0059】
YANGフォーマット済みのCRD217を用いて、CLIマイクロサービス410は、情報モデルツリー430を生成する(工程540)。あるいは、CLIマイクロサービス410は、例えば、情報モデルツリー430内のYANGフォーマット済みのCRD217に見られる新たな情報ブランチを生成することによって、要求されたCRD217に対応する既存の情報モデルツリー430を修正および/またはそれに寄与する。かかる例において、登録されたCRD217のコンテンツが変化すると、APIサーバ212は、その変化をCLIマイクロサービス410へ伝えることができ(例えば、リアルタイムで、または、変化の検出後すぐに)、CLIマイクロサービス410は、登録されたCRD217の変化を反映するように情報モデルツリー430を動的に修正できる。
【0060】
また、APIサーバ212は、非機能的または旧版のコントローラに起因して、CRD217を登録解除してよい。一実施形態において、APIサーバ212は、ユーザ405がクラウドベースネットワーク100のノード200内のCRD217に関連するコントローラをアンインストールしたか、または、そのコントローラの利用をもはや必要としなくなった後に、CRD217を登録解除してよい。CRD217が登録解除されると、APIサーバ212は、CLIマイクロサービス410に通知する。CLIマイクロサービス410は、その後、情報モデルツリー430に格納されたCRD217に関連するデータおよび構造を除去する。
【0061】
CLIマイクロサービス410は、その後、情報モデルツリー430に基づいてCLIシェル420をレンダリングする(工程550)。いくつかの実施形態において、CLIマイクロサービス410は、クライアントデバイス(例えば、クライアントデバイス150A~Bの内の1つ)にCLIを表示させ、表示されたインターフェースは、ユーザ405がCLIにクエリおよび/またはCLIをナビゲートすることを可能にするプロンプトを備えうる。例えば、ユーザ405は、ネットワークおよびその機器内のオブジェクトのステータスを見て、オブジェクトを構成し、ナビゲートし、および/または、修正するために、キーボードまたはその他の入力メカニズムを介して、CLIシェル420にテキストコマンドを入力できる。ユーザ405は、ネットワーク通信プロトコルを各々定義するオブジェクトを格納するフォルダへナビゲートすることができ、CLIシェル420内でプロトコルのコンテンツ/詳細を見ることができる。いくつかの実施形態において、ユーザ405は、CLIシェル420を介してAPIサーバ212自体にアクセスできる。
【0062】
図5に示した処理は、CLIマイクロサービス410が、CRD217における変化またはCRD217の登録解除に応答して、新たな情報モデルツリー430を生成する必要がないように、動的にリアルタイムで実行されてよい。さらに、APIサーバ212が登録できるサービスは、分離型クラウドベースネットワーク100の動作に関与するエンティティによって開発されたサービスに限定されないことに注意されたい。例えば、APIサーバ212で最初に登録解除されたCRD217を備えたサービスが、サードパーティ、コミュニティ、または、任意のその他の適切な外部ソースによって開発されてよい。APIサーバ212は、これらのサービスに由来するCRD217を登録すると、経時的にCRD217の状態を反映するために情報モデルツリー430を動的に更新するよう、CLIマイクロサービス410に要求してよい。その後、CLIシェル420にアクセスするユーザ400は、情報モデルツリーの更新を要求することをユーザへ明示的に求めることなしに動的に更新された情報モデルツリー430に反映されたCRD217データの最新バージョンを見ることができる。
【0063】
図2に関して論じたように、APIサーバ212は、経時的に新しいサービスを登録してよく、情報モデルツリー430は、1または複数のCRD217に対応してよい。いくつかの実施形態において、APIサーバ212は、異なるCRD217に対応する情報モデルツリー430の部分を記述する情報を提供するよう、マイクロサービス410に要求し、その後、要求した情報モデルツリーの部分を記述する情報を組み合わせて、新しいCRD(複合または統合CRDなど)を生成する。いくつかの実施形態において、CLIマイクロサービス410は、複数の情報モデルツリー430(例えば、APIサーバ212によって登録または要求されたCRD217ごとに1つの情報モデルツリー、APIサーバ212に関連するサービスごとに1つの情報モデルツリー、など)を生成することにも注意されたい。
【0064】
APIサーバ212は、CLIマイクロサービス410が情報モデルツリー430を更新する時にユーザに通知するよう構成されてよく、更新は、ノード200および/またはクラウドベースネットワーク100の動作状態の変化を反映する。例えば、ユーザは、情報モデルツリー430のユーザ指定の部分が更新または生成される時、ユーザ指定のCRDが更新される時、1または複数のアクションまたはアクティビティがネットワーク内で実行される時、情報モデルツリー内の1または複数のオブジェクトがアクセスされる時、ユーザ指定のエンティティがネットワークの一部にアクセスする時、および/または、ユーザ指定のサービスがAPIサーバ212または情報モデルツリー430にアクセスする時に、通知を受信することを選んでよい。別の実施形態において、APIサーバ212は、CLIシェル420内に表示された情報モデルツリー430の組織構造の変化、CLIシェル420を介してアクセスされた情報モデルツリー430内のオブジェクトをユーザ405に通知し、もしくは、任意のその他の適切なネットワークの変化またはアクティビティに応答して、ユーザ405に通知する。
【0065】
クラウドネイティブネットワーク環境におけるサービスアップグレード
図6は、1または複数の実施形態に従って、クラウドベースネットワーク100内のマイクロサービスに更新を適用するための処理600を示す。処理600は、環境内に実装されたネットワークプロトコルサービスおよびアプリケーションのライフサイクルの管理を可能にする。クラウドベースネットワーク100は、マイクロサービスなどネットワークプロトコルサービスおよびアプリケーションの無停止での更新および調和を可能にする。ノード内のマイクロサービス(ノード200のマイクロサービス245A~Bなど)の更新は、マイクロサービス、バージョン、性能、または、機能のアップグレードまたはダウングレードを含んでよい。いくつかの実施形態において、処理600は、複数のノード(例えば、ノード120A~C、121A~B)における複数のマイクロサービスにわたって行われる。
【0066】
ノード内のマイクロサービス(例えば、マイクロサービス245A~B)は、マイクロサービスの構成状態および動作状態のモデルを備え、モデルは、ノード内のAPIサーバ(例えば、APIサーバ212)に通信されて、それに登録される。APIサーバは、構成状態および動作状態を連続的に受信して記録する(工程610)。いくつかの実施形態において、APIサーバは、マイクロサービスの構成状態および動作状態を記述する情報を蓄積または集約する。APIサーバは、例えば、APIサーバによってアクセス可能なデータベースまたはその他のストレージ(例えば、ストレージ216)内にマイクロサービスの状態を格納してよい。別の実施形態では、APIサーバ自体が、マイクロサービスの全体的な実行状態を直接管理し、それにより、APIサーバが、マイクロサービスに更新を適用する直前にマイクロサービスの動作状態および構成状態を特定することが可能になる。
【0067】
APIサーバは、マイクロサービスの更新を特定して適用する(工程620)。一実施形態において、APIサーバは、複数のサービスまたはコントローラに更新を適用する(工程620)。更新の適用時に、マイクロサービスは、第1動作バージョンから第2動作バージョンへ更新される。しかしながら、更新の適用中に、マイクロサービスのメモリ、構成状態、および、動作状態が、リセットされるか、または、他の形で失われる場合がある。
【0068】
したがって、更新後に、更新されたマイクロサービスは、マイクロサービスの第1動作バージョンの最後の構成状態および動作状態をAPIサーバに要求できる(工程630)。
【0069】
それに応答して、APIサーバは、要求された最新の構成および動作状態にアクセスして、更新後のマイクロサービスバージョンに提供する(工程640)(例えば、APIサーバは、更新が適用される前の最後の構成状態および動作状態をAPIサーバが格納したデータベース、ストレージ媒体、または、蓄積ログから、最後の構成状態および動作状態にアクセスできる)。いくつかの実施形態において、APIサーバは、(例えば、マイクロサービスからの明示的な要求なしに)マイクロサービスへの更新の適用時に以前の構成状態および動作状態を提供できる。
【0070】
マイクロサービスが更新されると、APIサーバは、以前のマイクロサービスバージョンの最後の構成状態および動作状態を、クラウドベースネットワーク100内に実装された他のサービスまたはAPIサーバに関連する他のサービスと調和させることができる(工程640)。調整処理は、最後の構成状態および動作状態が古いかまたはその他の点で他のサービスと不適合であるか否かをチェックすることを含んでよい。他のサービスとの不適合が検出された場合、APIサーバは、その不適合を調整するために、更新されたマイクロサービスの構成状態および動作状態を更新できる(例えば、アップグレードされたマイクロサービスが適合しないサービスの要件またはパラメータに照らして新しい構成状態または動作状態を特定することによって)。APIサーバは、他のサービスでの変化が生じた時にユーザ(例えば、ユーザ405)に通知してよく、その後、ユーザは、調整処理を明示的にまたは手動でトリガしてよい。あるいは、APIサーバは、変更、アップグレード、ダウングレード、または、修正が他のサービスに適用された時に、調整処理を自動的に開始するよう構成されてもよい。
【0071】
APIサーバは、マイクロサービスの動作またはマイクロサービスとの動作の中断を回避または最小化するように、マイクロサービスを更新して調整できる(工程640)。マイクロサービスへ更新を適用する間、もしくは、マイクロサービスの動作状態または構成状態を調整する間、APIサーバは、以前のバージョンのマイクロサービスが完全にオフラインになることを許容でき、次いで、新たな更新済みのマイクロサービスを開始できる。APIサーバは、スタンバイサービスの動作が、マイクロサービスの旧バージョンから新バージョンへの移行中にオフラインマイクロサービスの必要な機能を実行することを可能にしうる。あるいは、APIサーバは、以前のバージョンのマイクロサービスがまだ動作している間に、更新されたマイクロサービスの開始を可能にしうる。両方のマイクロサービスのバージョンが、機能してオンラインである間に、APIサーバは、他方の完全に機能するサービスの管理下で必要な機能を実行するように、一方のサービスをスタンバイサービスとして指定する。スタンバイサービスは、データプレーン(ユーザトラフィックが通るネットワークの部分)が、中断なしに機能し続けることを可能にする。
【0072】
いくつかの実施形態において、マイクロサービスに依存するサービスの更新は、APIサーバがマイクロサービスを更新する間、保留または遅延されてよい。これらのサービスは、調整処理に関与してよいが、変更されないままであってもよく、それにより、調整中に中断されない。
【0073】
動的なモデル駆動マイクロロギング
図7は、1または複数の実施形態に従って、クラウドベースネットワーク内での動的なモデル駆動マイクロロギングのための方法700を示す。ユーザ(例えば、ユーザ405)は、マイクロサービス(例えば、マイクロサービス245A~B)の異なるサブモジュールに対するロギングレベルを指定したい場合がある。
【0074】
マイクロサービスは、APIサーバ(例えば、APIサーバ212)にロガーCRDを登録する(工程720)。ロガーCRDは、CRD217の一実施形態であってよい。ロガーCRDは、ロガー名と、デフォルトロギングレベルと、1セットの利用可能なロギングレベルの各々に対する定義と、を含む。各ロギングレベルは、イベントが記録される際の冗長性または特異性を指定する。例えば、アクティブなトラブルシューティングおよびデバッギングは、ロガーによって生成されたログ内のさらなる詳細をキャプチャするロギングレベルを必要としうる。また、登録されたロガーCRDは、ユーザまたはマイクロサービスの要求を、ロガーCRDによって定義されたロギングレベルに変換する関数のリストを含むこともできる。例えば、ユーザによる「デバッグ」関数またはサービスの要求が、ロガーCRDによって定義された特定のロギングレベル(例えば、「ロギングレベル3.2」または特定のロギングレベルに対応する任意の適切な命名規則)と等価であることを、ロガーCRD内の関数が規定してよい。
【0075】
マイクロサービス内の各サブモジュールは、設定された、標準的な、または、デフォルトのロギングレベルを用いて動作してよい。特定のサブモジュールの動作中に、異なるサブモジュール、異なるサービス、または、ユーザが、例えば、より少ないまたは多い情報を得たいことに応じて、セキュリティ要件の変更に応じて、もしくは、一様なロギングレベルで動作するように1セットのサブモジュールまたはサービスを構成するために、デフォルトロギングレベルとは異なるロギングレベルを必要とするか、または、要求してもよい。
【0076】
サブモジュールのロギングレベルを変更する要求に応答して、サブモジュールは、例えば、サブモジュールのサービスまたは機能を中断することなしに、要求されたロギングレベルに関する情報を取得するためにAPIサーバにクエリする(工程740)。
【0077】
APIサーバは、要求されたロギングレベルに関する情報の要求を受信したことに応じて、要求されたロギングレベルをロガーCRDから特定できる。上述のように、APIサーバは、要求されたロギングレベルに対応付けられたロガーCRDによって定義されたロギングレベルを特定するために、変換関数を適用してよい。
【0078】
要求されたロギングレベルを特定すると、APIサーバは、特定されたロギングレベルで動作するようにサブモジュールを再構成すること(工程760)によって、特定されたロギングレベルを要求側サブモジュールに適用できる(工程750)。さらに、ユーザは、どのAPIサーバが、要求されたロギングレベルに対応するロギングレベルを特定でき、同時にまたは閾値期間にわたって、特定されたロギングレベルで動作するようにマイクロサービスのすべてのサブモジュールを構成できるのかに応じて、マイクロサービスのすべてのサブモジュールがグローバルロギングレベルを継承することを要求できるので、マイクロサービス内のすべてのサブモジュールが、同時またはほぼ同時に、特定されたロギングレベルで記録されることを有益に保証する。
【0079】
関係モデル情報のフォーマットおよび表示のためのCLIシェルテンプレート
図8は、1または複数の実施形態に従って、クラウドベースネットワーク100内で構造化カスタムリソース記述(CRD)をレンダリングするための方法800を示す。ユーザ(例えば、ユーザ405)は、CLIシェル(例えば、CLIシェル420)内に表示されたCRD(例えば、CRD217)のフォーマットをカスタマイズしたい場合がある。いくつかの実施形態において、ユーザは、システム環境(
図4のシステム環境400など)を用いてCLIシェルにアクセスしてよい。カスタマイズの前、CRDのコンテンツのフォーマットは、モデルおよびオブジェクト駆動型であり、すなわち、フォーマットは、CRDおよびCROごとに異なり、人間のユーザへの表示の助けとなるように構造化されていない場合がある。ユーザは、複数のCRDおよびCROにわたって表示コンテンツのフォーマットを統一したい場合がある。CRDの統一フォーマットは、CROの間の関係制約を得てよい。ユーザは、CRDを含むノードのホストコントローラ(例えば、ノード200のホストコントローラ250)によって格納および実行されるCLIシェルテンプレートを用いて、CRDのコンテンツのカスタマイズされたテンプレート化を可能にすることができる。
【0080】
CLIシェルテンプレートの実行時、ユーザは、CRD217をレンダリングするために所望のテンプレートを特定する。テンプレートは、ホストコントローラ上に前もって格納されてよく、または、いくつかの実施形態においては、ユーザが、自身のカスタマイズ済みテンプレートを書き込むことができる。テンプレートは、表示される時に、どのCRDコンテンツがどのようにフォーマットされるのかを記述するメタデータを定義する。例えば、フォーマットメタデータは、各CRO変数の配置および配列と、各変数間の間隔と、を指定してよい。テンプレートは、さらに、例えば、CRD内の各CRO変数を繰り返し特定し、CRO変数を表示するか否か、どのように、どこに表示するのかを決定することによって、フォーマットメタデータに従ってCRDコンテンツを処理する1または複数のスクリプトを備えることができる。
【0081】
ユーザは、CLIシェル内の特定済みテンプレートおよびCRDにアクセスする(工程820)。いくつかの実施形態において、ユーザは、CLIシェル内の複数のCRDにアクセスしてよく、アクセスされたCRDをフォーマットするために、1または複数のテンプレートにアクセスできる。
【0082】
ホストコントローラは、ユーザの特定したテンプレートに基づいてCRDをレンダリングし(工程830)、CLIシェル内での表示に向けて構造化されたCRDを出力する。ユーザは、CLIシェルを通して、構造化されたCRDを見てよいおよび/またはアクセスしてよい。
【0083】
図9Aは、1または複数の実施形態に従って、テンプレート化せずにレンダリングされたCRDのモデル駆動出力900を示す。モデル駆動出力900は、1または複数のCRD905と、CRDに関連付けられた1または複数のCRO910と、CROに関連付けられた複数の変数915と、を示す。出力900は、具体的に2つのCRD(CRD1およびCRD2)のコンテンツと、3つの関連付けられたCRO(CRO A、CRO B、および、CRO C)と、3つの変数に関連付けられた変数(VAR1、VAR2、および、VAR3)とを示す。いくつかの実施形態において、モデル駆動出力900は、ユーザ(例えば、ユーザ405)によってアクセス可能なCLIシェル(例えば、CLIシェル420)を介して示される。
【0084】
図9Bは、1または複数の実施形態に従って、
図9Aに示したCRDのテンプレート化された出力950を示す。ユーザ(例えば、ユーザ405)は、CRDのコンテンツをレンダリングするために用いられる構造を定義するテンプレートを特定する。
図9Bの特定されたテンプレートの構造は、表示のCRD部分の上部中心に各CRDを特定し、特定されたCROのすぐ下の列の上部に各CRDに関連付けられた各CROを特定する。最後に、テンプレートは、CROの列内の各CRO内で、特定されたCROすぐ下に変数を特定する。CRDを含むノードのホストコントローラ(例えば、ノード200のホストコントローラ250)が出力950をレンダリングすると、CLIシェルは(
図9Bに示すように)フォーマット化され構造化されたCRDコンテンツをユーザに提示する。出力950は、複数のCRDの間の関係結合を反映するようにレンダリングされてよい。
【0085】
図9Cは、1または複数の実施形態に従って、ユーザが定義したCRDのテンプレート化された出力970を示す。新たなCRDは、複数のその他のCRDの組みあわせ(すなわち、複合または統合CRD)および/または1以上のCRDの構成要素を含んでよい。ユーザは、新たなCRDのコンテンツを決定するテンプレートを書き出しおよび/または特定できる。特定されたテンプレートは、CRDとCROとの間の関係制約を考慮してよい。
図9Cにおいて、新たなCRD970は、
図9A~Bに示したCRDの構成要素を含む。新たなCRD970は、CRO A、B、および、Cと、各CROに関連付けられた複数の変数995と、を含む。新たなCRD970に含まれる変数は、
図9A~Bに示した変数915の一部である。
【0086】
本明細書に記載のテンプレートは、各CRD内でそれに関連付けられたCROおよび変数に基づいて、CRDコンテンツをフォーマットしているが、実際には、CROおよび変数を超えた任意のタイプのCRDオブジェクトまたはデータが、本明細書に記載の原理に従って、テンプレートによって定義および構造化されうることに注意されたい。
【0087】
マルチクラスタ管理および制御
図10は、1または複数の実施形態に従って、複数のネットワーククラスタ1020、1022、1025を備えたクラウドベースネットワーク1000を示す。クラウドベースネットワーク1000は、クラウドベースネットワーク100と実質的に同様であってよいが、複数のネットワーククラスタ1020、1022、1025を含む。ネットワーククラスタ1020、1022、1025の各々は、分散型ネットワーククラスタ110と実質的に同様であってよい。
【0088】
各クラスタは、1または複数のノード1010、1012、1014、1016を備える。各ノードは、ノード120A~C、121A~B、および、ノード200と実質的に同様であってよい。例えば、クラスタ1020は、ノード1010およびノード1012を備え、クラスタ1022は、ノード1014およびノード1016を備える。各ノードは、1または複数のマイクロサービス1015を備える。各マイクロサービス1015は、
図2に関して上述したノード200のマイクロサービス245A~Bの実施形態である。
【0089】
ネットワーククラスタ1025は、外部クラスタ1025であってよく、マスタコントローラ1030、マスタコントローラ1032を含む複数のマスタコントローラと、ファブリックコントローラ1060と、を備える。クラスタ1020と同様に、外部クラスタ1025は、例えば、AWSなどのクラウドサービスプロバイダ内で、1または複数のサーバ内に実装されるか、または、サーバを含みうる。各マスタコントローラは、クラスタ1020、1022の各々の動作状態を監視および制御する。特に、マスタコントローラ1030は、クラスタ1020を制御するよう構成されてよく、マスタコントローラ1032は、クラスタ1022を制御するよう構成されてよい。各マスタコントローラは、マスタ構成要素210の一実施形態であってよい。マルチクラスタクラウドネットワーク環境1000は、本明細書に記載するよりも多くの構成要素を備えてもよい。例えば、クラスタ1020は、2つのノード1010、1012より多いノードを備えてもよく、各ノードは、マイクロサービス1015より多い複数のマイクロサービスを備えるかまたは実装してもよい。
【0090】
ファブリックコントローラ1060は、マスタコントローラ1030および1032の各々の動作を監視および制御し、それにより、ファブリック1050にわたってクラスタ1020および1022を管理する。いくつかの実施形態において、ファブリック1050は、
図10に示したものよりも多いクラスタを備えてもよい。システムは、複数クラスタからの負荷バランシングおよびハンドリングの要求を各々が支援する複数のファブリックコントローラ1060を備えてもよい。いくつかの実施形態において、1または複数のファブリックコントローラ1060は、外部クラスタ1025の外側に配備されてもよい。
【0091】
マスタコントローラ1030および1032の各々の監視時に、ファブリックコントローラ1060は、クラスタ1020および1022内で実行するモデルを決定する。モデルは、APIおよび/またはCLIレベルのCRDに対応してよい。ファブリックコントローラ1060は、ノードの一部で動作するモデルと、ファブリック1050にわたって動作するモデルとを決定するよう構成されている。ファブリック1050にわたって動作するモデルは、ファブリック1050のすべてのノードで、すべてのクラスタで、登録され動作してよい。ファブリックコントローラ1060は、異なるバージョンのモデルの共存を許容する。例えば、クラスタ1020内で動作するCRDが、クラスタ1022内で動作する同じCRDと異なるバージョンであってよい。ファブリックコントローラ1060は、かかるケースにおいて、クラスタ1020および1022にわたってCRDの両方のバージョンを監視および制御するよう構成される。また、ファブリックコントローラ1060は、モデルが動作するコンテキストと、モデルの動作要件とを決定して格納する。例えば、ファブリックコントローラ1060によって格納された特定の構成モデルが、クラスタ1020内のノードに関連するが、クラスタ1022内のどのノードにも関連しなくてもよい。ファブリックコントローラ1060は、ファブリックコントローラ1060に結合されたデータベース内に、ファブリック1050にわたって用いられるモデルに関するかかる情報を格納してよい。最初に、ファブリックコントローラ1060のデータベースは、完全に同期されうるが、変化がファブリック1050内で起きた時、ファブリックコントローラ1060は、変化したコンテンツを同期させるだけでよい。したがって、ファブリックコントローラ1060は、帯域幅利用のために最適化しうる。
【0092】
ファブリックコントローラ1060は、関係モデル情報を記載およびレンダリングするために、CLIシェルテンプレート(
図9A~Cに関して上述したものなど)を用いてよい。ユーザは、CLIシェルを用いて、ファブリックコントローラ1060によって格納および制御されるモデル(すなわち、個々のクラスタ内でおよびファブリック1050にわたって用いられるモデル)を閲覧、アクセス、および、カスタマイズすることができうる。個々のノードのためのCLIシェルは、異なるフォーマット、異なるコマンド、および、異なる動作モードを有してよい。ユーザは、
図8に関して上述したように、個々のノード用、および、ファブリック1050全体用に、ファブリックコントローラ1060によってレンダリングされるCLIシェルのテンプレートをカスタマイズしてよい。
【0093】
ユーザは、ファブリックコントローラ1060によって決定および格納されたモデルのCLIシェルレンダリングを用いて、ファブリック1050内のノードの動作およびパフォーマンスを解析してよい。また、ファブリックコントローラ1060は、新たなモデルがノード上で登録され実行された時に、それらの新たなモデルの動的追加を追跡する。新たなモデルが、例えば、クラスタ1020のノード1010上に登録されると、ファブリックコントローラ1060は、新たなモデルが導入されたと判定し、それに従って、CLIシェルテンプレートを更新する。ファブリックコントローラ1060は、新たなノードがネットワークに加わる時と、ネットワーク内のノード全体の傾向と、を決定してよい。ファブリックコントローラ1060は、管理者の意図を決定するために、傾向と、ノードの管理者によって取られるアクションとを相関させてよい。ファブリックコントローラ1060は、ネットワーク内のノード間の相違を特定してよく、次いで、相違を修正し、および/または、相違にネットワーク管理者の注意を向けさせてよい。これらの傾向およびアクションの各々は、ユーザアクセスのためのCLIシェルテンプレートを用いてリスト化されてよい。
【0094】
ファブリックコントローラ1060は、ノードの各々での動作を直接制御してよい。各ノードおよび/またはクラスタは、ノードに直接アクセスして制御する許可をファブリックコントローラ1060に与えてよい。ファブリックコントローラ1060は、ノードおよび/またはクラスタ上で動作するようにマイクロサービスを実行してよい。これらのマイクロサービスは、特に、上述したCLIシェルテンプレートのレンダリングのためのファブリックレベルCLIオペレータ、イーサネットVPNオペレータ、ならびに、モデルバージョンを自動的にダウングレードおよび/またはアップグレードするソフトウェアライフサイクルオペレータを含みうる。ファブリックコントローラ1060は、これらのオペレータの各々を用いて、ファブリック1050のノードを直接制御してよい。ファブリックコントローラ1060によってノードに実施された任意の更新が、ノードですぐに反映される。ノードへの変更(ファブリックコントローラ1060によって実施される変更と同時にまたは独立してノード管理者またはオペレータによってなされる変更など)も、ファブリックコントローラ1060レベルですぐに反映される。例えば、ノード1010における構成への任意の変更が、リアルタムでファブリックコントローラ1060によって記録される。したがって、ファブリックコントローラ1060および個々のノードは各々、同時に修正を行って、双方向同期を可能にする。
【0095】
ファブリックコントローラ1060は、ファブリック全体の構成命令に関するユーザ入力を受けて、各対象ノード上で実施可能になるように命令を変換してよい。ユーザは、ファブリックコントローラ1060にファブリックレベル構成命令を提供してよく、これは、ファブリック1050のクラスタ1020および1022の両方にわたって構成を実装することを意味する。ファブリックコントローラ1060は、各クラスタおよび各ノードのために構成命令を変換し、ユーザの意図の通りに、および、ノード自体のコンテキストの通りに、各ノードを構成してよい。例えば、ユーザは、ファブリック1050内のノードの一部に仮想LAN(VLAN)を構成するためにファブリックコントローラ1060へ命令を提供してよい。ノードの各々は、異なるバージョンのソフトウェアで動作しうるが、ファブリックコントローラ1060は、VLANが対象ノードにわたって構成されることを保障するために、ソフトウェアバージョンの違いを調整できる。ファブリックコントローラ1060は、ノードレベルの構成において任意の違反を解決できてよい。ノードレベルの構成違反のための調整ロジックは、ユーザ入力を必要としうるが、ファブリックコントローラ1060は、各ソフトウェアバージョンの機能を決定し、ファブリック全体の構成命令を実施するために、それらのソフトウェアバージョンに基づいて各ノードを構成することができる。
【0096】
その他の留意事項
本明細書に記載されている特徴および利点は、包括的なわけではなく、特に、多くのさらなる特徴および利点が、図面、明細書、および、特許請求の範囲に照らして当業者にとって明らかになる。さらに、本明細書で用いられている言語は、主に、読みやすさおよび指導の目的で選択されており、開示されている主題を描写または制限するために選択されたのではないことに注意されたい。
【0097】
図面および説明は、本発明の明確な理解に関連する要素を説明するために簡略化されているが、明確にするために、典型的なオンラインシステムに見られる多くの他の要素が取り除かれていることを理解されたい。当業者は、実施形態を実施する際に、他の要素および/または工程が望ましく、および/または、必要であることを認識できる。ただし、かかる要素および工程は当業者に周知であり、実施形態のより良い理解を促進しないので、かかる要素および工程の議論は本明細書では提供されていない。本開示は、当業者に周知なかかる要素および方法に対するすべての変形および修正を対象とする。
【0098】
上記の説明のいくつかの部分は、情報に対する動作のアルゴリズムおよび記号表現の観点で、実施形態を説明している。これらのアルゴリズム的な記述および表現は、仕事の内容を他の当業者に効果的に伝えるためにデータ処理技術の当業者によって一般的に利用される。これらの動作は、機能的、計算的、または、論理的に説明されているが、コンピュータプログラムまたは等価な電気回路、マイクロコードなどによって実施されると理解されている。さらに、一般性を失うことなく、これらの動作の配置をモジュールと呼ぶことが時に便利であることも証明されている。記載されている動作およびそれらに関連するモジュールは、ソフトウェア、ファームウェア、ハードウェア、または、それらの任意の組み合わせで具体化されてよい。
【0099】
本明細書で用いられている「一実施形態」または「実施形態」への任意の言及は、実施形態に関連して記載された特定の要素、特徴、構造、または、特性が、少なくとも1つの実施形態に含まれることを意味する。本明細書の様々な箇所での「一実施形態において」という表現の出現は、必ずしもすべてが同じ実施形態を指すとは限らない。
【0100】
いくつかの実施形態は、「結合された」および「接続された」という表現をそれらの派生語と共に用いて記載されうる。これらの用語は、互いに類義語として意図されていないことを理解されたい。例えば、いくつかの実施形態は、2つ以上の要素が互いに直接物理的または電気的に接触していることを示すために、「接続された」という用語を用いて記載されうる。別の例において、いくつかの実施形態は、2つ以上の要素が直接物理的または電気的に接触していることを示すために「結合された」という用語を用いて記載されうる。ただし、「結合された」という用語は、2つ以上の要素が互いに直接接触していないが、それでも互いに協働または相互作用することを意味する場合もある。実施形態は、この文脈に限定されない。
【0101】
本明細書で用いられる用語「備える」、「備えた」、「含む」、「含んだ」、「有する」、「有した」、または、それらのあらゆる他の変化形は、非排他的な包含を網羅するよう意図されている。例えば、要素のリストを備える処理、方法、物品、または装置は、それらの要素だけに限定されず、リストに明示されていないかまたはかかる処理、方法、物品、または装置に固有の他の要素をも含みうる。さらに、特に明示しない限り、「または(or)」という語は、排他的な「または」ではなく、包括的な「または」を表す。例えば、条件AまたはBは、以下のいずれによっても満たされる。Aが真(または存在する)かつBが偽(または存在しない);Aが偽(または存在しない)かつBが真(または存在する);AとBの両方が真(または存在する)。
【0102】
さらに、不定冠詞“a”または“an”の利用が、本明細書の実施形態の複数の要素および構成要素を記載するために用いられる。これは、単に簡単のため、および、様々な実施形態の一般的な意味を与えるためになされる。本記載は、1つまたは少なくとも1つを含むと読まれるべきであり、単数形は、そうでないよう意図されていることが明らかでない限りは複数形も含む。
【0103】
本開示を読めば、当業者は、本明細書に開示されている原理を通して歪み領域を用いてチャートを表示するためのシステムおよび処理のためのさらなる別の構造的および機能的設計を理解することになる。したがって、特定の実施形態および応用例が図示および説明されているが、開示されている実施形態は、本明細書に開示されている正確な構造および構成要素に限定されないことを理解されたい。当業者にとって明らかである様々な修正、変更、および、変形が、添付の特許請求の範囲で規定されている精神および範囲から逸脱することなく、本明細書に開示されている方法および装置の配置、動作、および、詳細においてなされうる。
【手続補正書】
【提出日】2023-05-02
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
複数のノードを備えたクラウドベースネットワークであって、各ノードは、
マスタコントローラと、
前記マスタコントローラによって管理される1または複数のカスタムコントローラであって、前記1または複数のカスタムコントローラは、記憶装置に格納されたカスタムリソースにアクセスするよう構成されており、各カスタムリソースは、
前記ノードの動作状態に関するノード動作状態データ、
前記ノードの構成状態に関するノード構成状態データ、および、
前記ノードの動作の解析結果に関する、前記ノードを表す1セットのテレメトリデータ、を含む、1または複数のカスタムコントローラと、
前記カスタムコントローラの少なくとも1つによって管理される1または複数のコンテナ化マイクロサービスと、
を備え、
前記複数のノードは、クラスタを備え、
前記クラスタは、前記クラウドベースネットワーク内の対応するセットのノードを各々備えた複数のクラスタの内の1つを含み、
少なくとも1つのクラスタは、外部クラスタであり、前記外部クラスタは、
複数のマスタコントローラであって、各マスタコントローラは、前記複数のクラスタの内の1クラスタを管理するよう構成されている、複数のマスタコントローラと、
ファブリックコントローラと、
を備える、クラウドベースネットワーク。
【請求項2】
請求項1に記載のクラウドベースネットワークであって、少なくとも1つのコンテナ化マイクロサービスが、前記クラウドベースネットワーク内での1または複数の意図駆動型の動作の実行を可能にする、クラウドベースネットワーク。
【請求項3】
請求項1に記載のクラウドベースネットワークであって、前記複数のノードは、外部システムによって管理される、クラウドベースネットワーク。
【請求項4】
請求項1に記載のクラウドベースネットワークであって、前記ノードは、さらに、
前記マスタコントローラおよび前記カスタムコントローラをインスタンス化するよう構成されたホストコントローラを備える、クラウドベースネットワーク。
【請求項5】
請求項1に記載のクラウドベースネットワークであって、データは、前記ノードの外部に格納され、オンデマンドでアクセス可能である、クラウドベースネットワーク。
【請求項6】
請求項5に記載のクラウドベースネットワークであって、前記マスタコントローラは、アプリケーションプログラミングインターフェース(API)サーバを備え、前記マスタコントローラは、前記APIサーバを用いて標準ストレージインターフェースを確立するよう構成されている、クラウドベースネットワーク。
【請求項7】
請求項6に記載のクラウドベースネットワークであって、前記ノードの外部に格納された前記データは、前記標準ストレージインターフェースを介してカスタムコントローラによってアクセスされる、クラウドベースネットワーク。
【請求項8】
請求項1に記載のクラウドベースネットワークであって、少なくとも1つのカスタムコントローラは、さらに、
前記マスタコントローラから、
前記ノードの所望の動作状態、および、
前記ノードの所望の構成状態を受信し、
前記ノードの前記動作状態および前記所望の動作状態を調和させ、
前記ノードの前記構成状態および前記所望の構成状態を調和させるよう構成されている、クラウドベースネットワーク。
【請求項9】
請求項1に記載のクラウドベースネットワークであって、前記マスタコントローラは、さらに、
マイクロサービスから、
前記マイクロサービスの動作状態、および、
前記マイクロサービスの構成状態を受信し、
前記動作状態および前記構成状態は、前記マイクロサービスの現行バージョンに関連し、
前記マイクロサービスへ、
前記マイクロサービスの第2動作状態、および、
前記マイクロサービスの第2構成状態を提供し、
前記第2動作状態および前記第2構成状態は、前記マイクロサービスの第2バージョンに関連し、
前記マイクロサービスの前記現行バージョンおよび前記第2バージョンを1または複数の他のマイクロサービスと調和させるよう構成されている、クラウドベースネットワーク。
【請求項10】
請求項1に記載のクラウドベースネットワークであって、少なくとも1つのコンテナ化マイクロサービスは、前記カスタムコントローラによって格納された前記カスタムリソースをノードオペレータへの表示に向けてレンダリングするよう構成されたコマンドライン・インターフェース(CLI)マイクロサービスである、クラウドベースネットワーク。
【請求項11】
請求項1に記載のクラウドベースネットワークであって、前記ファブリックコントローラは、
前記複数のマスタコントローラの各々を監視し、
前記複数のマスタコントローラの各々を管理し、
各クラスタ内の前記複数のノードの各々にアクセスし、
各クラスタ内の前記複数のノードの各々を管理するよう構成されている、クラウドベースネットワーク。
【請求項12】
クラウドベースネットワークをコンピュータが管理するための方法であって、
前記コンピュータが複数のノードを生成して管理する工程を備え、各ノードは、
マスタコントローラと、
1または複数のカスタムコントローラと、
1または複数のコンテナ化マイクロサービスと、
を備え、
前記コンピュータが前記ノードの各々を管理する工程は、
前記コンピュータとしての前記マスタコントローラによって、前記1または複数のカスタムコントローラを管理する工程と、
前記コンピュータとしての少なくとも1つのカスタムコントローラによって、前記1または複数のコンテナ化マイクロサービスを管理する工程と、
前記コンピュータとしての少なくとも1つのカスタムコントローラが、記憶装置に格納されたカスタムリソースにアクセスする工程と
を含み、各カスタムリソースは、
前記ノードの動作状態に関するノード動作状態データ、
前記ノードの構成状態に関するノード構成状態データ、および、
前記ノードの動作の解析結果に関する、前記ノードを表す1セットのテレメトリデータ、
を含み、
前記複数のノードは、クラスタを備え、
前記クラスタは、前記クラウドベースネットワーク内の対応するセットのノードを各々備えた複数のクラスタの内の1つを含み、
少なくとも1つのクラスタは、外部クラスタであり、前記外部クラスタは、
複数のマスタコントローラであって、各マスタコントローラは、前記複数のクラスタの内の1クラスタを管理するよう構成されている、複数のマスタコントローラと、
ファブリックコントローラと、
を備える、方法。
【請求項13】
請求項12に記載の方法であって、少なくとも1つのコンテナ化マイクロサービスが、前記クラウドベースネットワーク内での1または複数の意図駆動型の動作の実行を可能にする、方法。
【請求項14】
請求項12に記載の方法であって、前記複数のノードは、外部システムによって管理される、方法。
【請求項15】
請求項12に記載の方法であって、各ノードは、さらに、
前記マスタコントローラおよび前記カスタムコントローラをインスタンス化するよう構成されたホストコントローラを備える、方法。
【請求項16】
請求項12に記載の方法であって、少なくとも1つのカスタムコントローラは、
前記マスタコントローラから、
前記ノードの所望の動作状態、および、
前記ノードの所望の構成状態を受信し、
前記ノードの前記動作状態および前記所望の動作状態を調和させ、
前記ノードの前記構成状態および前記所望の構成状態を調和させるよう構成されている、方法。
【請求項17】
請求項12に記載の方法であって、前記のマスタコントローラは、さらに、
マイクロサービスから、
前記マイクロサービスの動作状態、および、
前記マイクロサービスの構成状態を受信し、
前記動作状態および前記構成状態は、前記マイクロサービスの現行バージョンに関連し、
前記マイクロサービスへ、
前記マイクロサービスの第2動作状態、および、
前記マイクロサービスの第2構成状態を提供し、
前記第2動作状態および前記第2構成状態は、前記マイクロサービスの第2バージョンに関連し、
前記マイクロサービスの前記現行バージョンおよび前記第2バージョンを1または複数の他のマイクロサービスと調和させるよう構成されている、方法。
【請求項18】
請求項17に記載の方法であって、少なくとも1つのコンテナ化マイクロサービスは、前記カスタムコントローラによって格納された前記カスタムリソースをノードオペレータへの表示に向けてレンダリングするよう構成されたコマンドライン・インターフェース(CLI)マイクロサービスである、方法。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0062
【補正方法】変更
【補正の内容】
【0062】
図5に示した処理は、CLIマイクロサービス410が、CRD217における変化またはCRD217の登録解除に応答して、新たな情報モデルツリー430を生成する必要がないように、動的にリアルタイムで実行されてよい。さらに、APIサーバ212が登録できるサービスは、分離型クラウドベースネットワーク100の動作に関与するエンティティによって開発されたサービスに限定されないことに注意されたい。例えば、APIサーバ212で最初に登録解除されたCRD217を備えたサービスが、サードパーティ、コミュニティ、または、任意のその他の適切な外部ソースによって開発されてよい。APIサーバ212は、これらのサービスに由来するCRD217を登録すると、経時的にCRD217の状態を反映するために情報モデルツリー430を動的に更新するよう、CLIマイクロサービス410に要求してよい。その後、CLIシェル420にアクセスするユーザ
405は、情報モデルツリーの更新を要求することをユーザへ明示的に求めることなしに動的に更新された情報モデルツリー430に反映されたCRD217データの最新バージョンを見ることができる。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0084
【補正方法】変更
【補正の内容】
【0084】
図9Bは、1または複数の実施形態に従って、
図9Aに示したCRDのテンプレート化された出力950を示す。ユーザ(例えば、ユーザ405)は、CRDのコンテンツをレンダリングするために用いられる構造を定義するテンプレートを特定する。
図9Bの特定されたテンプレートの構造は、表示のCRD部分の上部中心に各CRDを特定し、特定されたCR
Dのすぐ下の列の上部に各CRDに関連付けられた各CROを特定する。最後に、テンプレートは、CROの列内の各CRO内で、特定されたCROすぐ下に変数を特定する。CRDを含むノードのホストコントローラ(例えば、ノード200のホストコントローラ250)が出力950をレンダリングすると、CLIシェルは(
図9Bに示すように)フォーマット化され構造化されたCRDコンテンツをユーザに提示する。出力950は、複数のCRDの間の関係結合を反映するようにレンダリングされてよい。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0103
【補正方法】変更
【補正の内容】
【0103】
本開示を読めば、当業者は、本明細書に開示されている原理を通して歪み領域を用いてチャートを表示するためのシステムおよび処理のためのさらなる別の構造的および機能的設計を理解することになる。したがって、特定の実施形態および応用例が図示および説明されているが、開示されている実施形態は、本明細書に開示されている正確な構造および構成要素に限定されないことを理解されたい。当業者にとって明らかである様々な修正、変更、および、変形が、添付の特許請求の範囲で規定されている精神および範囲から逸脱することなく、本明細書に開示されている方法および装置の配置、動作、および、詳細においてなされうる。また本開示は以下の形態として実現できる。
[形態1]
複数のノードを備えたクラウドベースネットワークであって、各ノードは、
マスタコントローラと、
前記マスタコントローラによって管理される1または複数のカスタムコントローラであって、前記1または複数のカスタムコントローラは、カスタムリソースにアクセスして格納するよう構成されており、各カスタムリソースは、
前記ノードの動作状態、
前記ノードの構成状態、および、
前記ノードを表す1セットのテレメトリデータ、を含む、1または複数のカスタムコントローラと、
前記カスタムコントローラの少なくとも1つによって管理される1または複数のコンテナ化マイクロサービスと、
を備える、クラウドベースネットワーク。
[形態2]
形態1に記載のクラウドベースネットワークであって、少なくとも1つのコンテナ化マイクロサービスが、前記クラウドベースネットワーク内での1または複数の意図駆動型の動作の実行を可能にする、クラウドベースネットワーク。
[形態3]
形態1に記載のクラウドベースネットワークであって、前記複数のノードは、外部システムによって管理される、クラウドベースネットワーク。
[形態4]
形態1に記載のクラウドベースネットワークであって、前記ノードは、さらに、
前記マスタコントローラおよび前記カスタムコントローラをインスタンス化するよう構成されたホストコントローラを備える、クラウドベースネットワーク。
[形態5]
形態1に記載のクラウドベースネットワークであって、データは、前記ノードの外部に格納され、オンデマンドでアクセス可能である、クラウドベースネットワーク。
[形態6]
形態1に記載のクラウドベースネットワークであって、前記マスタコントローラは、アプリケーションプログラミングインターフェース(API)サーバを備え、前記マスタコントローラは、前記APIサーバを用いて標準ストレージインターフェースを確立するよう構成されている、クラウドベースネットワーク。
[形態7]
形態6に記載のクラウドベースネットワークであって、前記ノードの外部に格納された前記データは、前記標準ストレージインターフェースを介してカスタムコントローラによってアクセスされる、クラウドベースネットワーク。
[形態8]
形態1に記載のクラウドベースネットワークであって、少なくとも1つのカスタムコントローラは、さらに、
前記マスタコントローラから、
前記ノードの所望の動作状態、および、
前記ノードの所望の構成状態を受信し、
前記ノードの前記動作状態および前記所望の動作状態を調和させ、
前記ノードの前記構成および前記所望の構成を調和させるよう構成されている、クラウドベースネットワーク。
[形態9]
形態1に記載のクラウドベースネットワークであって、前記マスタコントローラは、さらに、
マイクロサービスから、
前記マイクロサービスの動作状態、および、
前記マイクロサービスの構成状態を受信し、
前記動作状態および前記構成状態は、前記マイクロサービスの現行バージョンに関連し、
前記マイクロサービスへ、
前記マイクロサービスの第2動作状態、および、
前記マイクロサービスの第2構成状態を提供し、
前記第2動作状態および前記第2構成状態は、前記マイクロサービスの第2バージョンに関連し、
前記マイクロサービスの前記現行バージョンおよび前記第2バージョンを1または複数の他のマイクロサービスと調和させるよう構成されている、クラウドベースネットワーク。
[形態10]
形態1に記載のクラウドベースネットワークであって、少なくとも1つのコンテナ化マイクロサービスは、前記カスタムコントローラによって格納された前記カスタムリソースをノードオペレータへの表示に向けてレンダリングするよう構成されたコマンドライン・インターフェース(CLI)マイクロサービスである、クラウドベースネットワーク。
[形態11]
形態1に記載のクラウドベースネットワークであって、前記複数のノードは、クラスタを備え、前記クラスタは、前記クラウドベースネットワーク内の対応するセットのノードを各々備えた複数のクラスタの内の1つを含む、クラウドベースネットワーク。
[形態12]
形態11に記載のクラウドベースネットワークであって、少なくとも1つのクラスタは、外部クラスタであり、前記外部クラスタは、
複数のマスタコントローラであって、各マスタコントローラは、前記複数のクラスタの内の1クラスタを管理するよう構成されている、複数のマスタコントローラと、
ファブリックコントローラと、
を備える、クラウドベースネットワーク。
[形態13]
形態12に記載のクラウドベースネットワークであって、前記ファブリックコントローラは、
前記複数のマスタコントローラの各々を監視し、
前記複数のマスタコントローラの各々を管理し、
各クラスタ内の前記複数のノードの各々にアクセスし、
各クラスタ内の前記複数のノードの各々を管理するよう構成されている、クラウドベースネットワーク。
[形態14]
クラウドベースネットワークを管理するための方法であって、
複数のノードを生成して管理する工程を備え、各ノードは、
マスタコントローラと、
1または複数のカスタムコントローラと、
1または複数のコンテナ化マイクロサービスと、
を備え、
前記ノードの各々を管理する工程は、
前記マスタコントローラによって、前記1または複数のカスタムコントローラを管理する工程と、
少なくとも1つのカスタムコントローラによって、前記1または複数のコンテナ化マイクロサービスを管理する工程と、
カスタムリソースにアクセスして格納する工程と
を含み、各カスタムリソースは、
前記ノードの動作状態、
前記ノードの構成状態、および、
前記ノードを表す1セットのテレメトリデータ、
を含む、方法。
[形態15]
形態14に記載の方法であって、少なくとも1つのコンテナ化マイクロサービスが、前記クラウドベースネットワーク内での1または複数の意図駆動型の動作の実行を可能にする、方法。
[形態16]
形態14に記載の方法であって、前記複数のノードは、外部システムによって管理される、方法。
[形態17]
形態14に記載の方法であって、各ノードは、さらに、
前記マスタコントローラおよび前記カスタムコントローラをインスタンス化するよう構成されたホストコントローラを備える、方法。
[形態18]
形態14に記載の方法であって、少なくとも1つのカスタムコントローラは、
前記マスタコントローラから、
前記ノードの所望の動作状態、および、
前記ノードの所望の構成状態を受信し、
前記ノードの前記動作状態および前記所望の動作状態を調和させ、
前記ノードの前記構成および前記所望の構成を調和させるよう構成されている、方法。
[形態19]
形態14に記載の方法であって、前記のマスタコントローラは、さらに、
マイクロサービスから、
前記マイクロサービスの動作状態、および、
前記マイクロサービスの構成状態を受信し、
前記動作状態および前記構成状態は、前記マイクロサービスの現行バージョンに関連し、
前記マイクロサービスへ、
前記マイクロサービスの第2動作状態、および、
前記マイクロサービスの第2構成状態を提供し、
前記第2動作状態および前記第2構成状態は、前記マイクロサービスの第2バージョンに関連し、
前記マイクロサービスの前記現行バージョンおよび前記第2バージョンを1または複数の他のマイクロサービスと調和させるよう構成されている、方法。
[形態20]
形態19に記載の方法であって、少なくとも1つのコンテナ化マイクロサービスは、前記カスタムコントローラによって格納された前記カスタムリソースをノードオペレータへの表示に向けてレンダリングするよう構成されたコマンドライン・インターフェース(CLI)マイクロサービスである、方法。
【外国語明細書】