[和訳] Docker EE 2.0のスケーラブルで柔軟なネットワーキング #docker #kubernetes
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿は SCALABLE, FLEXIBLE NETWORKING INCLUDED IN DOCKER ENTERPRISE EDITION 2.0 (2018/4/19) の和訳です。
私たちはユーザが使いやすく入手しやすいテクノロジーを開発することを信念としており、この哲学はDockerの企業向けコンテナプラットフォームにも共通しています。つまり私たちの使命は、企業組織が必要とするプラットフォームの鍵となる拡張機能として、すぐに統合できる製品を提供することです。またそれが内蔵しているソリューションを、ユーザの要望に合わせて適宜、他のツールに交換可能とすることも重要です。
Kubernetesを統合したDocker Enterprise Edition (Docker EE) 2.0 は、複数のクラウドと複数のOS上にデプロイできる唯一のKubernetesプラットフォームです。このリリースの一部として、TigeraによるProject Calicoを、高い拡張性を持ち、業界をけん引するネットワーキングおよびルーティングのソリューションである、"すぐに使える高機能な" KubernetesのCNIプラグインとして搭載しました。
なぜProject Calicoなのか
ユーザが好みのCNIプラグインを使えるようサポートしつつも、Project Calicoを内蔵ソリューションとして選びました。その理由はProject Calicoが、Docker EE 2.0の設計目的にうまく適合するためです:
異なるデプロイメントモデルに対応する豊富な選択肢と柔軟性
エンタープライズ組織はハイブリッドでマルチクラウドな戦略を広く追求しており、私たちはいかなる環境においてもDocker EEを実行できる柔軟性を提供することをユーザにお約束したいと思っています。Project Calicoを裏で支えるTigeraチームは、すべての主要なクラウドプロバイダと密接に連携し、Calicoがそれらのネイティブなクラウドネットワーキングソリューションとうまく動作するようにしてきました。Calicoはまた、オーバーレイ (IPIP)か非オーバーレイかの選択肢を用意しています。そして異なるアーキテクチャ要件に応えるために、ハイブリッドのデータプレーンネットワーキングモデルも提供しています。
高い拡張性と実用性
データセンターのネットワークはいまや、1万台以上のサーバと多数のコンテナエンドポイントに接続できるほどになっています。これは、ネットワークとしてはインターネットに次ぐ規模です。Calicoはインターネットと同じルーティングプロトコル上に構築されているので、ベアメタルのパフォーマンスに近いレベルで稼働している、多数のノードのクラスタの要求に応えるネットワーキングを簡単に運用できます。またCalicoには、Kubernetesのキーバリューストア (etcd) を活用した分散型コントロールプレーンがあり、集中型コントローラなしでの水平的な拡張が可能です。
Kubernetesの緊密な統合によるポリシー主導のセキュリティモデル
TigeraチームはKubernetes ネットワーキングSIGを通じてこのモデルを主導し、コンテナネットワーキング向けの高い粒度でラベルベースのネットワークポリシー導入の手助けをしました。例えばCalicoはIPAMを含むCNI機能のすべてを実装しており、KubernetesのネットワークポリシーAPIのもっとも完全な実装を提供しています。CalicoにはKubernetesの基本的なネットワークポリシーAPIを拡張する多くの重要な機能も持っています。それは追加的プロトコル、ネットワークセット、ホストプロテクションなど、クラウドネイティブなネットワーキングへのゼロトラストアプローチの基本を形成するものです。
Dockerはまた、これらの内蔵ソリューションを、ユーザが自分好みのソリューションに交換できる権利を持つべきであるとも考えています。Project Calicoの他にも、Docker EE 2.0における各社のネットワーキングプラグインを承認するためにDocker社は、Contiv、Infoblox、Weaveworksをはじめとする他社と協働しています。
Docker EE 2.0におけるProject Calico
Docker EE 2.0ではCalicoを事前にインストールおよび設定しているので、Docker EE 2.0をインストールまたはアップグレード後すぐに使えます。関連するCalicoの設定ファイルを更新すれば、インストール後の設定を変更することもできます。今回のリリースでは、デフォルトではCalicoは、フルメッシュのIPIPオーバーレイネットワークを作成するように設定しています。これはクラスタ内の各ノードが、相互接続しルーティングしたノード群のフルメッシュで構成するクラスタ内で、他のすべてのノードとBGPピアリングを確立するということです。そして、Pod間通信用のデータプレーンとして使用するIPIPトンネルは、これらのノード間に作成します。Docker EEでは次の手順によって、デフォルトのオーバーレイモードからネイティブでフラットなルーティングオプションに変更することができます: https://docs.docker.com/ee/ucp/kubernetes/install-cni-plugin/#disable-ip-in-ip-overlay-tunneling
Calicoには次の2つのキーコンポーネントがあります: Calico Kube Controller および Calico Nodeです。CalicoのKube Controllerは、単一のPodによるKubernetes Deploymentとしてデプロイし、Kubernetes APIとCalicoのコントロールプレーン間のインターフェイスに関与します。Calico Nodeは各ホスト上で実行するdaemonsetとしてデプロイし、関連するポリシーとネットワークの設定情報をキーバリューストアから読み込み、Linuxカーネルにおいてそれらを実行します。また、Calico Nodeはクラスタ内の他のノードとBGPピアリングを確立することに関与し、BGPルートでホストのルーティングテーブルを設定します。
Docker EE 2.0でCalicoを使う
Docker EE 2.0でKubernetes Deploymentとしてアプリケーションを立ち上げる際は、Podは自動的にCalico CNIを使用します。各Podは設定済みのCalico IPAMからIPアドレスを取得します。Docker EEクラスタ内のすべてのPodは、他のPodと相互通信が可能になり、異なるネームスペースを超えても有効です。また、KubernetesのDNS Service (kube-dns) はPodのIPアドレスの登録や登録解除を行います。それによって、Podとそれに関連するサービス用にシームレスなDNS解決が可能となります。つまり、Docker EE 2.0でKubernetesアプリケーションをデプロイすることは、アプリケーションの接続と安全性を高める高機能なCalico CNIプラグインを自動的に活用できるということです。
始めるには
Docker EE 2.0はCalico内蔵のエンタープライズ向けコンテナプラットフォームを提供します。もっと知りたい方は:
- 無料トライアル を試してみる。Calico搭載のKubernetes環境にアクセスする最も簡単な方法です。
- Docker EE 2.0についてのドキュメントをもっと読む
- Project CalicoドキュメンテーションでCalicoのプラグインについてもっと学び、Tigeraについてもっと読む