$30 off During Our Annual Pro Sale. View Details »

CF Container-to-Container Network

CF Container-to-Container Network

Cloud Foundry Tokyo Meetup #3で発表した資料です

Kazuto Kusama

July 20, 2017
Tweet

More Decks by Kazuto Kusama

Other Decks in Technology

Transcript

  1. Cloud Foundry
    Container-to-Container
    Networking

    View Slide

  2. Pivotal Japan - Platform Architect
    Kazuto Kusama
    @jacopen

    View Slide

  3. Microserviceしてますか?
    Four Blair Services Pvt. Ltd. https://commons.wikimedia.org/wiki/File:Services4.png

    View Slide

  4. 機能ごとにソフトウェアを細分化
    開発チームも機能単位

    View Slide

  5. いままでのCFだと・・・
    appA appB appC appD appA appD
    `
    Router
    DB MQ
    Cell Cell Cell
    HTTPのエンドポイントが
    Router経由になってしまう

    View Slide

  6. コンテナ間で直接通信したい!
    appA appB appC appD appA appD
    Router
    DB MQ
    Cell Cell Cell

    View Slide

  7. そこで

    View Slide

  8. Container-to-Container
    Networking

    View Slide

  9. Container-to-Container Networking
    • Cloud Foundryでコンテナ間通信を可能にする新機能
    • 最近GAになりました!
    • 最新版は1.1.0
    • Pivotal Cloud Foundryだと1.11から
    GAとして提供

    View Slide

  10. 利用方法
    • BOSHでcf-networking-releaseをセットアップ
    https://github.com/cloudfoundry-incubator/cf-networking-release
    • UAAでnetwork.adminのscopeを有効化
    • ドキュメントはこちら
    https://docs.cloudfoundry.org/devguide/deploy-apps/cf-
    networking.html

    View Slide

  11. さっそくDEMO

    View Slide

  12. ざっくりとした仕組みの説明

    View Slide

  13. Architecture
    https://github.com/cloudfoundry-incubator/cf-networking-release/blob/develop/docs/diagram.png
    青: 元からある仕組み
    緑: 新しく追加された仕組み
    赤: 差し替え可能

    View Slide

  14. https://github.com/cloudfoundry-incubator/cf-networking-release/blob/develop/docs/diagram.png

    View Slide

  15. CNI
    • Container Network Interface
    • CNCF(Cloud Native Computing Foundation)によって
    策定されている、コンテナネットワーキングのための
    仕様
    • Cloud Foundryの他、KubernetesやMesos、rkt
    ・・・要はDocker以外 で使われている

    View Slide

  16. Container Runtime
    Container Network Interface
    Loopback
    Plugin
    Bridge
    Plugin
    PTP
    Plugin
    MAC VLAN
    Plugin
    3rd-party
    Plugin

    View Slide

  17. Silk
    • CNI準拠のContainer Networking fabric
    • VXLANを使ってホスト間の通信を行う
    • Flannelにインスパイアされて作られている
    • 初期はFlannelを利用。etcdが嫌でRDBを使うように
    作り直したらしい

    View Slide

  18. View Slide

  19. View Slide

  20. Garden-runc
    Garden External Networker
    CF Wrapper CNI Plugin
    Silk CLI Plugin
    Linux
    コンテナランタイム
    Garden External Networker API
    CNI API
    Legacy Networking
    NetIn(NAT from Host)
    NetOut(Application Security Group)
    Silk
    daemon
    Silk
    Controller
    diego cell
    IPAM
    iptables
    netlink
    などなど設定

    View Slide

  21. Garden-runc
    Garden External Networker
    CF Wrapper CNI Plugin
    Silk CLI Plugin
    Linux
    コンテナランタイム
    Garden External Networker API
    CNI API
    Legacy Networking
    NetIn(NAT from Host)
    NetOut(Application Security Group)
    Silk
    daemon
    Silk
    Controller
    diego cell
    IPAM
    iptables
    netlink
    などなど設定
    Silk controllerが
    Cellにsubnetを
    払い出す Wrapper Pluginが
    Port forwardingや
    ASGを設定
    veth pairの作成
    etc...

    View Slide

  22. cf allow-access myapp backend-app --port 7000 --protocol tcp
    Policyの設定
    AgentがPolling
    iptablesに反映

    View Slide

  23. ここが足りないC2C Networking
    • Service Discovery欲しい・・・
    • 今のところはEurekaやamalgam8を使って実現

    View Slide

  24. Next Steps
    • App Identity for external services
    • Bandwidth limiting
    • logging enhancement
    • support port ranges
    • https://www.pivotaltracker.com/n/projects/1498342

    View Slide

  25. まとめ
    • CFのC2C Networking機能はMicroservicesやるのに便利
    • CNIに準拠したSilkを利用。必要に応じて置き換え可能
    • 足りない機能はあれど、今後いろいろ実装される予定

    View Slide