contiv 20160914

19
Contiv⇒ Takao Setaka @twtko Sep 14, 2016

Upload: takao-setaka

Post on 16-Apr-2017

445 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Contiv 20160914

Contiv ⇒

Takao Setaka

@twtko

Sep 14, 2016

Page 2: Contiv 20160914

What is Contiv?

コンテナで構成されたアプリケーションリソースをポリシー管理する取り組み

• 2015年のDockerCon EuropeにてCiscoが発表したオープンソースプロジェクト

Source Code - Githubhttps://github.com/contiv

Documentshttp://contiv.io/

Twitter@projectcontiv

Slackhttps://contiv-slack.herokuapp.com/

Page 3: Contiv 20160914

What is Contiv?

ネットワーク、ストレージ、クラスタ連携

■オープンソース

• ネットワークの抽象化:論理ネットワーク、ACI連携

• ストレージの抽象化:コンテナに対する永続的ストレージの提供(Ceph/NFS)

• クラスタ連携:Docker Compose, Kubernetes, Mesos, Nomad

■シスコ提供

• Contiv Manager:管理UI(GUI,CLI,REST/API)

Page 4: Contiv 20160914

What is Contiv Networking(netplugin)?

• ポリシーモデル

• マルチテナント (隔離とIP/サブネットの重複)

• IPAMなどとの連携

• 様々な物理トポロジ (L2/VLAN, L3/BGP, Overlay/VXLAN, ACI)

• IPv4/v6対応

• SLB機能

などなど・・・

Page 5: Contiv 20160914

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

Page 6: Contiv 20160914

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

Page 7: Contiv 20160914

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

Page 8: Contiv 20160914

Contiv Netplugin - Architecture

Page 9: Contiv 20160914

Today’s demo

ContivとACIの連携デモを...お見せしたかったのですが...

Page 10: Contiv 20160914

Docker Nodes

DockerとACIの連携構成

物理ドメインとして連携(VLAN)

各ノードではOVSを使用

Page 11: Contiv 20160914

Contiv Netplugin – ネットワークリソース割当

netctl global set --fabric-mode aci --vlan-range 400-500

VLANを識別子とした物理ドメイン連携を構成する

(ACI側で事前に構成した物理ドメインとVLANプールに合わせて指定する)

Page 12: Contiv 20160914

Contiv Netplugin – テナント作成

netctl tenant create DockerDemo1

テナントを作成する(ACI側で同じ名前のテナントがすでにある場合は、その配下に以降の構成が行われる)

Page 13: Contiv 20160914

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

Page 14: Contiv 20160914

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

Page 15: Contiv 20160914

Contiv Netplugin – ポリシー作成

netctl policy create -t DockerDemo1 app2db

ルールを束ねるためのポリシーを作成する

(EPGにはポリシーと外部コントラクトを紐付ける)

Page 16: Contiv 20160914

Contiv Netplugin – ルール作成

netctl policy rule-add -t DockerDemo1 -d in --protocol tcp --port 1234 --from-group app --action allow app2db 1

ルールをポリシーに加える

Page 17: Contiv 20160914

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)を作成し、ポリシーと外部コントラクト、ネットワークを結びつける

Page 18: Contiv 20160914

Contiv Netplugin – Application Profile作成

netctl app-profile create -t DockerDemo1 -g app,db ANP-for-Docker

テナント内にグループを指定してApplication Profileを作成する

Page 19: Contiv 20160914