ハイパーバイザーを利用した仮想マシン技術は、2000 年代後半から急速に広がり、仮想マシンの利用は普遍的なものになりました。その後、2010 年代になると、ハイパーバイザーを必要としない Linux コンテナ技術に注目が集まるようになり、最近では、様々なところでコンテナ技術が活用されるようになっています。
シスコでも早くから製品の中でコンテナ テクノロジーを利用していて、例えば IOS-XR 6.0 からはルータの管理用 LXC(Linux Container)と制御用 LXC に別れたアーキテクチャを採用していますし、ルータ上に独自コンテナを作ることができます。他にも、例えば、以下の用途でコンテナ技術が活用されています。
- ルータのコントロールプレーンの分離(IOS-XR、NX-OS)
- アプリケーションのホスティング(IOS-XR、IOS-XE、NX-OS)
- Docker によるマイクロサービス化(APIC-EM コントローラ)
シスコのコンテナ技術への取り組みは、上記のような、自社製品での利用にとどまりません。Web サービスをはじめとする大規模なクラウドネイティブ アプリケーションの分野においても、オープンソース コミュニティに貢献しています。例えば、オープンソースのコンテナベース クラウド技術を構築することを目的とした非営利団体 CNCF(Cloud Native Computing Foundation)では初期からのプラチナ メンバーです。さらに、kubernetes や Docker swarm などのコンテナ プラットフォームで利用されるコンテナ ネットワーキングのプラグインについても、オープンソースでの開発を進めています。それが本日ご紹介する「Contiv」です。
Project Contiv
コンテナ テクノロジーは新しい技術でありながら、従来から存在するコンセプトがベースになっています。Linux のカーネル仮想化技術は、昔からある技術ですが、近年になって様々なライブラリが整備されたことで、より使いやすくなりました。さらには、Docker 社によって、コンテナのポータビリティが提供されたことにより、爆発的に広がってきたという背景があります。多くの開発者は、コンテナの特徴である Agility(迅速さ)や、軽量さ、手軽さにメリットを感じているはずです。
docker を使えば、必要なアプリケーション要素が構成済みのコンテナを即座に起動することができますし、Kubernetes などのコンテナ スケジューラを使って必要なコンテナ イメージとアプリケーション パラメータを定義して、大規模なアプリケーションを素早く立ち上げることもできます。こういったオープンソースのツール群が成熟してきたことで、多くの開発者が docker-compose や kubernetes でアプリケーションの定義を作成することにフォーカスしています。
ところが、開発環境で動作を確認し、いざプロダクション環境にコンテナ アプリケーションを移動しようとすると、開発環境にはなかったような問題が発生します。例えば、企業内インフラ上で共通に定義されているインフラ オペレーション ポリシー、セキュリティ ポリシーにどう準拠させるかといったことです。利便性ばかりが注目されているコンテナですが、コンテナ ワークロードではオペレーションやセキュリティが全く考慮されていないということが、今、まさに課題として浮上しているのです。
この課題のソリューションとして注目されているのが Contiv です。Contiv は、非常に柔軟なポリシー制御フレームワークと実装を提供し、共有のインフラ(ネットワークやサーバ)にまたがってコンテナを連携させる大規模アプリケーション構築の際に、運用管理の観点から必要な機能を実現するのに役立ちます。またプロダクション レディなコンテナ ネットワーク ファブリックの実現を目指し、「オープンソース」で開発されています。
今回、Contiv は めでたく version 1.0 となり、初の Docker 認定ネットワーク プラグインとなりました!パチパチ!
Contiv の特徴
- 100% オープンソース
Github からどなたもコードをダウンロードすることができますし、contiv.io には、チュートリアルとマニュアル、さらには、ラップトップ上で、すぐに動作を確認できる Vagrantfile もご用意しています。
困ったことがあっても、Slack の Contiv ユーザ コミュニティから情報を得ることが可能です。また今後、有償サポートが必要な場合は、コマーシャルサポートサービスの提供の予定があります。 - 様々なコンテナデプロイ環境に対応
コンテナ プラットフォームが、Kubernetes、Docker Swarm、また OpenShift にも対応しています。 - 柔軟なポリシー制御
これまでのコンテナネットワーク プラグインでは、iptables をベースとしたアクセス制御が一般的でした。Contiv では、アプリケーション グループごとのポリシー制御や、帯域、QoS など、柔軟なポリシーをコンテナ ネットワークに適用できます。 - 豊富なネットワーク レイヤ オプション
現在、マルチホストのコンテナ ネットワークは(VXLAN などの)オーバーレイ ネットワークで実装されることが多いのではないかと思います。オーバーレイ ネットワークには、非常にシンプルで(アンダーレイを気にしないため)使いやすい面もありますが、パフォーマンスの面においては、ネットワーク ヘッダが増えることが課題となるケースもあります。
また、ホスト管理の利便性を理由に、ハイパーバイザー上の仮想マシンでコンテナを動作させるケースもあるかと思いますが、その際、コンテナ ネットワークをオーバーレイにすると、オーバーレイ on オーバーレイという形になり、ネットワーク管理の複雑性が増してしまいます。
Contiv では L2 ネイティブ接続、L3 ネイティブ接続に対応しています。すなわちコンテナ ネットワークを、既存 L2, L3 のネットワークに直接接続することで、上記のパフォーマンス劣化や複雑性を回避することができます。もちろん、オーバーレイも可能です。
さらには、Cisco ACI(Application Centric Infrastructure)にも対応してます!ACI を使えば、仮想マシン、ベアメタル、コンテナに関わらず、共通のポリシーを適用可能となり、混在環境においても柔軟なポリシーで制御可能なユニファイドなネットワーク ファブリックを構築することができます。ACI + Contiv により、とても機能的なネットワークデザインが可能になります。
ということで、様々なデザイン オプションに対応しているというのも Contiv の特徴です。
その他にも、
- マルチテナント対応
- サービスロードバランサー
- IPAM(IP Address Management) / サービスディスカバリ
- LDAP 連携
- RBAC(Role Based Access Control) 対応
そして、GUI もあります。
なかなか、ここですべてを説明しきれませんが、Contiv に関しては、Contiv.ioだけでなく、先日行われた Cisco Live Berlin 2017 のコンテンツ「BRKDCT-2023 – Container Networking – Deep dive into Project Contiv」(無料アカウント登録が必要)や、Youtube 上のデモ動画などもご覧いただけます。
Cisco Live Berlin での Contiv デモ
これからも、まだまだコンテナ ネットワークのエリアには発展の余地があります。シスコもクラウドネイティブな分野には引き続き力をいれています!
興味を持った方、今すぐ Contiv.ioにて Tutorial をお試しください〜!