Concepts
Goを用いた Network Configuration as Code
K-SOTは、複雑なネットワーク装置のコンフィグを抽象化し、ユーザのインテントを簡単に記述できる高レベルのデータモデルとAPIを公開することをサポートします。ネットワーク装置のデータモデルは、数多のネットワーキング機能を提供するために詳細かつ複雑であり、Infrastructure as Codeのリソースモデルとして扱うには適していません。ユーザのインテントを簡単に表現できるデータモデルを提供するためには、複雑さを隠蔽しわかりやすく抽象化した高レベルなデータモデルが必要です。加えて、E2E接続のようなドメイン全体を抽象化したモデルを実現するには、複数のネットワーク装置をまたいで設定を行うデータモデルが必要になります。
このような上位モデルへの抽象化を行うと、上位モデルから低レベルな装置コンフィグへのデータマッピングは非常に複雑になります。 上位モデルと下位モデルは多対多の関係性を持つため、データマッピングに加えてデータの合成も同時に行う必要があります。このとき、データの欠損や競合、データ制約違反を起こさないように配慮しなければなりません。 Python/Jinjaを用いたシンプルなテキストテンプレートのアプローチでは、この複雑な問題を解くのは困難です。
K-SOTでは、上位モデルから下位モデルへのデータマッピングロジックをGoで記述できます。また、データの合成についてはユーザーが意識せずに実装することができます。
GitHubによるデータ管理
K-SOTは、ネットワーク装置コンフィグのためのGitHubによるデータ管理を提供します。ネットワーク全体のコンフィグを宣言的に記述し、GitHubリポジトリでバージョン管理し、信頼できる唯一の情報源(Single Source of Truth: SSoT) とすることを目的としています。
K-SOTのコンポーネント
K-SOTは以下のコンポーネントから構成されています。
- nb-server はサービスモデルを受け取り、装置設定の導出を実施します。
- github-server はGitHubの更新を行います。
- sb-server は装置に設定を投入します。
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.