contiv 20160914
TRANSCRIPT
Contiv ⇒
Takao Setaka
@twtko
Sep 14, 2016
What is Contiv?
コンテナで構成されたアプリケーションリソースをポリシー管理する取り組み
• 2015年のDockerCon EuropeにてCiscoが発表したオープンソースプロジェクト
Source Code - Githubhttps://github.com/contiv
Documentshttp://contiv.io/
Twitter@projectcontiv
Slackhttps://contiv-slack.herokuapp.com/
What is Contiv?
ネットワーク、ストレージ、クラスタ連携
■オープンソース
• ネットワークの抽象化:論理ネットワーク、ACI連携
• ストレージの抽象化:コンテナに対する永続的ストレージの提供(Ceph/NFS)
• クラスタ連携:Docker Compose, Kubernetes, Mesos, Nomad
■シスコ提供
• Contiv Manager:管理UI(GUI,CLI,REST/API)
What is Contiv Networking(netplugin)?
• ポリシーモデル
• マルチテナント (隔離とIP/サブネットの重複)
• IPAMなどとの連携
• 様々な物理トポロジ (L2/VLAN, L3/BGP, Overlay/VXLAN, ACI)
• IPv4/v6対応
• SLB機能
などなど・・・
Contivを一番簡単に試してみる方法
Vagrant on Linux/MacOS X環境に簡単に構成できます。
• VirtualBox 5.0.2以降
• Vagrant 1.7.4以降
• Make
⇒ Docker Swarm構成でContivが動作する3ノード構成が作られます。(Kubernetes, Mesos & Marathon, Nomad構成も試せます)
git clone https://github.com/contiv/netplugincd netplugin; make demo
ContivとACIを連携させる方法
ACIとの接続点となる機能はContivからは切り離されてコンテナとしてDocker Hubで提供されています(contiv/aci-gw)。
/usr/bin/docker run --net=host ¥-e "APIC_URL=https://10.10.10.10" ¥-e "APIC_USERNAME=admin" ¥-e "APIC_LEAF_NODE=topology/pod-1/node-101,topology/pod-1/node-102" ¥-e "APIC_PHYS_DOMAIN=contivPhysDom" ¥-e "APIC_CERT_DN=uni/userext/user-admin/usercert-admin" ¥-v /shared/keys:/aciconfig ¥--name=contiv-aci-gw ¥-t contiv/aci-gw
ContivとACIを連携させる方法
物理サーバなどを使ってDocker Swarm環境の構成については、Ansibleを使って一連の必要構成を行うスクリプトが提供されています。
必要な事前準備や詳細手順については以下を参照くださいhttp://contiv.github.io/documents/gettingStarted/networking/install-swarm.html
wget https://raw.githubusercontent.com/contiv/demo/master/net/net_demo_installer
Contiv Netplugin - Architecture
Today’s demo
ContivとACIの連携デモを...お見せしたかったのですが...
Docker Nodes
DockerとACIの連携構成
物理ドメインとして連携(VLAN)
各ノードではOVSを使用
Contiv Netplugin – ネットワークリソース割当
netctl global set --fabric-mode aci --vlan-range 400-500
VLANを識別子とした物理ドメイン連携を構成する
(ACI側で事前に構成した物理ドメインとVLANプールに合わせて指定する)
Contiv Netplugin – テナント作成
netctl tenant create DockerDemo1
テナントを作成する(ACI側で同じ名前のテナントがすでにある場合は、その配下に以降の構成が行われる)
Contiv Netplugin – 外部コントラクト作成
netctl external-contracts create -t DockerDemo1 -c -a "uni/tn-MixedTenant/brc-allowicmp" ToConsumenetctl external-contracts create -t DockerDemo1 -p -a "uni/tn-MixedTenant/brc-allowicmp" -a "uni/tn-MixedTenant/brc-allowtcp8080" ToProvide
テナントにコントラクトを作成する(-cはconsume, -pはprovide方向のコントラクトとなる)
コントラクトはグループ化して管理することが可能
netctl group create -t DockerDemo1 -e ToConsume net1 QueryApp
Contiv Netplugin – ネットワーク作成
netctl net create -t DockerDemo1 -e vlan -s 192.168.1.0/24 -g 192.168.1.254 net1
テナントにネットワークを作成する(ACI連携の場合はEncapとしてVLANを使用する)
既存Bridge Domainを使用する場合には、コンテナに割り当てるIP範囲を指定することも可能
netctl net create -t DockerDemo1 -e vlan -s 192.168.1.50-99/24 -g 192.168.1.254 net1
Contiv Netplugin – ポリシー作成
netctl policy create -t DockerDemo1 app2db
ルールを束ねるためのポリシーを作成する
(EPGにはポリシーと外部コントラクトを紐付ける)
Contiv Netplugin – ルール作成
netctl policy rule-add -t DockerDemo1 -d in --protocol tcp --port 1234 --from-group app --action allow app2db 1
ルールをポリシーに加える
Contiv Netplugin – EPG作成
netctl group create -t DockerDemo1 -p app2db net1 dbnetctl group create -t DockerDemo1 -e ToConsume -e ToProvide -p app2db net1 app
Endpoint Group (EPG)を作成し、ポリシーと外部コントラクト、ネットワークを結びつける
Contiv Netplugin – Application Profile作成
netctl app-profile create -t DockerDemo1 -g app,db ANP-for-Docker
テナント内にグループを指定してApplication Profileを作成する