Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

複数のインターフェイスを指したVMにcloudinitで複数のゲートウェイが設定される #180

Closed
h-otter opened this issue Feb 28, 2019 · 6 comments

Comments

@h-otter
Copy link
Member

h-otter commented Feb 28, 2019

No description provided.

@h-otter h-otter added this to the Feb. 2019 milestone Feb 28, 2019
@h-otter h-otter added this to Undecided in Triage via automation Feb 28, 2019
@h-otter h-otter modified the milestones: Feb. 2019, Mar. 2019 Feb 28, 2019
@h-otter h-otter moved this from Undecided to Emergency in Triage Mar 5, 2019
@h-otter
Copy link
Member Author

h-otter commented Mar 14, 2019

一番上に刺さっているインターフェイスがデフォルトゲートウェイに繋がっているという仕様でいいんだろうか 🤔

それともデフォルトは一番上で connecting_gateway みたいなannotationsをつけるべきなんだろうか

@h-otter
Copy link
Member Author

h-otter commented Mar 14, 2019

@Kurorororo 意見ください

@Kurorororo
Copy link
Contributor

個人的には nics 以外のパラメータで明示的に gateway ip を設定する方がわかりやすいと思っています。
なので annotations あるいは独立したパラメータとして gateway4/6 があると良いと思います。
grpc で optional は面倒臭そうであるため、あってもなくても良いパラメータは annotations につけるのが良さそうかなと思います。

nics の欄で一番上に来ているサブネットの末尾をゲートウェイとして自動的に設定するような暗黙の形より、明示的に指示する方が個人的には好きです。
暗黙の規約を覚えるのはエンドユーザにとってやや負担ではないかと思うからです。
ですが、好き好きなので nics で一番上のサブネットの末尾をゲートウェイとする仕様でも良いと思います。

@h-otter
Copy link
Member Author

h-otter commented Mar 14, 2019

その場合、例えばVM AとVM Bが同じネットワークに繋がっていて、違うゲートウェイを指定した場合、クラスタは同じネットワークに違うゲートウェイを作成してしまい動作の保証が難しくなるという問題点があると思います

個人的には

ゲートウェイとして自動的に設定するような暗黙の形より、明示的に指示する方が個人的には好きです。

というのに賛成で、ユーザーがそれぞれネットワークを作ったときにゲートウェイを ReserveNetworkInterface で予約してほしいんですが、流石にそれは難しいんだろうなと思って渋々現在の末尾にとりあえずゲートウェイを作るという実装にしています

ネットワークにゲートウェイをどのように設定するかと、VMがどのネットワークをデフォルトゲートウェイとして設定するかという2つの問題があると思っていてその2つをいい感じに解決する方法が思いついてない状況です

@h-otter
Copy link
Member Author

h-otter commented Mar 14, 2019

うまく言語化するのが難しいんですが、n0protoの定義によるものはメタデータのみを管理するコントロールプレーンでn0coreの実装がデータプレーンの実装になると思っています
具体的に言うとネットワークでゲートウェイが何なのかを定義する必要があるけど、実際にゲートウェイをどこで設定するかはn0coreに任されるという感じで
今はブリッジにIPを設定する関係上、virtual machineの作成時にフックして設定していますが、l3 agentみたいにクラスタで統一的なゲートウェイを作る場合はnetworkの作成時にフックするのが自然だと思いますし、それはn0coreみたいなn0protoのデータ構造に従った様々な実装によって自由に作り変えられるようにしたいと考えています
要はn0coreで設定しようがしなかろうがn0protoで定義されたデータ構造でデータセンターのすべてのステータスを管理できるようにはしたいなと考えています
また、将来的には物理的な機材のゲートウェイをn0stackで設定できるようにしたいと思っています

`n0core network apply --gateway=192.168.0.254 --ipv4_cidr=192.168.0.0/24 hogehoge-network`みたいな感じでcliで吸収するのはありかなと思い始めました

結論として、

ネットワークにゲートウェイをどのように設定するかが n0core network apply --gateway=192.168.0.254 --ipv4_cidr=192.168.0.0/24 hogehoge-network
VMがどのネットワークをデフォルトゲートウェイとして設定するかはVMに設定された一番上の nic or 明示的な設定で VM のゲートウェイを決定という感じが言う感じで行きたいと思います

@h-otter
Copy link
Member Author

h-otter commented Apr 3, 2019

fixed on 780ec9b

@h-otter h-otter closed this as completed Apr 3, 2019
Triage automation moved this from Emergency to Done Apr 3, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Triage
  
Done
Development

No branches or pull requests

2 participants