[和訳] Docker Enterprise Edition 2.0上でDockerを動かす #docker #kubernetes #k8s
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿は Running Docker on Docker Enterprise Edition 2.0 (2018/4/17) の和訳です。
Docker Hubは毎2週間で100万のユーザがコンテナイメージを約1億回ダウンロードしているってご存知でしたか? しかもそれがDocker Enterprise Edition上で動いていることもご存知でしたか?
Docker Enterprise Edition 2.0は、お客様のエンタープライズ級のコンテナプラットフォームを求める声に応じて発表しました。同時に、Docker社の運用チームは既にDocker EEを本番環境で動かしていたのです。高品質なソフトウェアデリバリに対する私達のコミットメントの一つとして、ミッションクリティカルなアプリケーションに対応する準備ができました。そこで私達はDocker HubやSaaSサービス、Docker Store、Docker CloudとのプラットフォームとしてDocker Enterprise Edition 2.0を利用しています。
ある人はこれを「ドッグフーディング」とか「自家製シャンパンを飲む」と呼びます。何とお呼びしてもかまいませんが、このプログラムの重要性は、私達が自身のコンテナプラットフォームを完全に運用し、お客様と同じ運用体験を共有することです。
Kubernetesへの移行
最新リリースの主要な機能の1つはKubernetes統合です。そこで、私達はこの機能を活用していることを確認したかったのです。私達のSaaSチームと密に連携することで、いくつかのサービスはSwarm上に置いたまま、他のいくつかのサービスをKubernetesに移行することを決めました。
既にDocker EEを動かしている人にとって、Kubernetesクラスタを稼動する最新バージョンにアップグレードする手順は本当に簡単です。既存のDocker EEのUniversal Control Plane (UCP)をアップグレードするたった1行のコマンドを実行するだけです。新規ユーザはこのコマンドの「upgrade」を「install」に書き換えてください。ほら! こんなに簡単です:
docker run --rm -it --name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp:3.0.0 upgrade --interactive
自前でetcdクラスタを構築する必要はありません! 詳細はインストールガイドに従ってください。Docker EE 2.0を使えば、複雑なKubernetesデプロイをすることなしで、すぐに使えるバニラなKubernetes環境が構築・管理できます。
そして、既存のアーキテクチャとソリューションがKubernetesのサービスと連携していることを確認する作業を行いました。ここでよいお知らせがあります。既にDocker環境を使っている場合、Docker EE 2.0でKubernetesを導入すると、環境に合わせてアーキテクチャやツールを変更せずに、両者を統合することができます。例えば、既存のロギングソリューションやモニタリングソリューションのすべてをそのまま使い続けることができました。SwarmとKubernetesサービスを同時にサポートするルーティングソリューションにちょっとだけ更新を加えました。これはDocker EE 2.0に統合したProject Calicoネットワーキングコンポーネント上に構築しています。
ここから引き続き、私達のアプリケーションチームがいくつかのアプリケーションをKubernetesに移動しました。コンテナスケジューラを切り替えるだけだったので、アプリケーションコードの変更は必要ありませんでした。さらにSwarmサービスを定義するDocker Composeファイルを利用していたので、それらをKubernetesへのデプロイにそのまま変換することができました。
これらはすべてDocker EE 2.0のパブリックリリース前に行ったことです。過去2週間のうちにイメージをDocker Hubからプルしていたら、リクエストの一部はDocker EE 2.0クラスタのKubernetesでオーケストレーションされているコンテナに渡されていたのです!
Dockerチーム内のセキュアなアプリケーションゾーン
インフラチームとしての私達の目標は、開発チームに対してセルフサービスなインフラリソースを提供することです。Docker社のSaaS製品を動かすために多くのチームやアプリケーション群が存在しているので、100ノード以上の本番クラスタにわたるDocker EEワークロードやパーミッションを分割することは極めて重要です。Docker EEはリソースセットという概念を通して、Docker EE 2.0ではこの概念をKubernetesのネームスペースに拡張しました。
ノードをリソースセットに追加する、ユーザアクセスをそのセットにロールベースのアクセス制御に基いて許可することで、そのユーザが正しいノードにアクセスし、ネームスペースに基く他のKubernetesオブジェクトに対して正しいパーミッションを持つことを保証することができます。
つまり、ワークロードをセキュアに、要求通りに分割したまま、多くのチームに対してインフラを提供できることを意味します。さらに、アプリケーションやチーム間でのリソースの競合を防ぎます。これにより、私達や開発者の人生は大いに簡単になるでしょう!
次なるステップ
このリリースについてより詳しく:
- 来たるバーチャルイベントに登録: Docker Chief Product OfficerのScott Johnston、Sr. Director of Product ManagementのBanjot Chananaが登壇。
- ホステッド版を無料で試用してみる。本記事で記述した先進的な機能を30分程度で体験できます。
- Docker Enterprise Edition 2.0 について読むか、ドキュメントにアクセスする。
- DockerCon 2018 in San Francisco (6/12-15 訳注:現地時間)のプレミアムコンテナカンファレンスに登録する。Dockerエキスパートや顧客から本番環境にどのようにDocker EEを実装したのか話す。