Cloud Foundry Container-to-Container Networking

Preview:

Citation preview

Cloud FoundryContainer-to-Container Networking

Pivotal Japan - Platform Architect

Kazuto Kusama@jacopen

Microserviceしてますか?

FourBlairServicesPvt.Ltd.https://commons.wikimedia.org/wiki/File:Services4.png

機能ごとにソフトウェアを細分化

開発チームも機能単位

いままでのCFだと・・・

appA appB appC appD appA appD

`

Router

DB MQ

Cell Cell Cell

HTTPのエンドポイントがRouter経由になってしまう

コンテナ間で直接通信したい!

appA appB appC appD appA appD

Router

DB MQ

Cell Cell Cell

そこで

Container-to-Container Networking

Container-to-Container Networking• Cloud Foundryでコンテナ間通信を可能にする新機能• 最近GAになりました!• 最新版は1.1.0

• Pivotal Cloud Foundryだと1.11からGAとして提供

利用方法• 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

さっそくDEMO

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

Architecture

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

青: 元からある仕組み緑: 新しく追加された仕組み赤: 差し替え可能

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

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

Container Runtime

Container Network Interface

LoopbackPlugin

BridgePlugin

PTPPlugin

MAC VLANPlugin

3rd-partyPlugin

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

作り直したらしい

Garden-runc

Garden External Networker

CF Wrapper CNI Plugin

Silk CLI Plugin

Linux

コンテナランタイム

Garden External Networker API

CNI API

Legacy NetworkingNetIn(NAT from Host)NetOut(Application Security Group)

Silk daemon

Silk Controller

diego cell

IPAMiptablesnetlinkなどなど設定

Garden-runc

Garden External Networker

CF Wrapper CNI Plugin

Silk CLI Plugin

Linux

コンテナランタイム

Garden External Networker API

CNI API

Legacy NetworkingNetIn(NAT from Host)NetOut(Application Security Group)

Silk daemon

Silk Controller

diego cell

IPAMiptablesnetlinkなどなど設定

Silk controllerがCellにsubnetを

払い出す Wrapper PluginがPort forwardingや

ASGを設定

veth pairの作成etc...

cf allow-accessmyapp backend-app--port7000--protocoltcp

Policyの設定

AgentがPolling

iptablesに反映

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

Next Steps• App Identity for external services• Bandwidth limiting• logging enhancement• support port ranges

• https://www.pivotaltracker.com/n/projects/1498342

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

Recommended