Skip to content

Design #1

@tsuzu

Description

@tsuzu

WHY

  • インターネットを介してKubernetesクラスタ同士のネットワークを接続したい
  • 暗号化したい
  • NATの内側にあっても良いようにしたい
  • 既存のCNIの課題
    • 暗号化を行うものや、クラスタ同士を接続できるものはある
    • 一方で、Full meshのReachabilityが必須となる

WHAT

暗号化したP2PのFull mesh P2P(with NAT traversal) CNIを開発する。

HOW

https://github.com/tailscale/tailscale がOSSとなっており、これがFull mesh P2P(with NAT traversal) CNIを提供してくれているのでいい感じに実装する。

その他要件

  • Control Planeを外部に置くことができる(ルート情報の交換や接続の確立のための情報の交換)
  • Control PlaneへのAPI経由で経路情報を追加できる(TailscaleにおけるSubnet router機能)
    • Podにsubnet単位でroutingできるようにしたい

コンポーネント

  • Control Plane: Tailscaleで言うところのipnserver
    • 上記で説明した機能を担当する。gRPC等で実装することを想定。
  • Controller(DaemonSet/Kubernetes): Wireguardのインターフェースを作成し、Control Planeと接続してインターフェースの更新を行う。
  • (CNI): bridge CNI等で事足りるなら不要だが必要に応じて開発

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions