2017.10.19

コンテナ運用を自動化しよう

加藤学
ソフトバンク コマース&サービス株式会社
テクニカルフェロー
このエントリーをはてなブックマークに追加

前回の「現状の見える化から始めましょう」では課題を浮き彫りにし、それを改善する取り組みをいくつか紹介いたしましたが、今回は「インフラストラクチャの自動化」、さらには「コンテナ運用の自動化」にフォーカスを当てていきます。

エンタープライズ向けのコンテナ運用を自動化する方法の一例として、「Docker Enterprise Edition (EE)」の機能についてご紹介します。世の中は、Dockercon17 EUでのKubenetesインテグレーションの発表でわいていますが、国内のお客さまより、「各エディションの違いや機能についてざっくり教えて欲しい」というお問い合わせを多数いただいていますので、現行のバージョン17.06をベースにした解説をしていきたいと思います。

Docker EE (17.06)の機能表

Docker EEは大きく分けて、Basic、Standard、Advancedの3つのエディションに分かれています。
(厳密にはバージョン17.06より従来のLinuxに加え、Windows Server 2016環境でも動作しますので、5つのエディションが存在しますが、WindowsのみでDocker EEのクラスタは構成できないため今回は割愛します。)


171019_kato_1.png
また、それぞれのライセンスは、年間サブスクリプションとして提供され、ノード数 (Docker Engineが動作するOSの数)に応じた数を購入する必要があります。価格やサポート条件などの詳細はこちらのページを参照ください。

Basicで提供される機能

Basicはその名の通り、ベースとなる基本的な機能のみを提供するエディションで、ほぼ、Engine部分の製品サポートを受けられる権利を購入することと同じ意味合いを持ちます。
Docker 1.12.0以降では、複数のDocker Engineを管理するDocker SwarmがEngineに統合されたことで、複数のDocker Engineをコマンドラインを用いてSwarmで管理するケースでのご利用が主なパターンかと思います。また、他社のオーケストレーションツール (例えば、Kubenetes、Rancherなど)を利用する場合の選択肢にもなるのが、このBasicというライセンスの特長です。

Standardで提供される機能

StandardがBasicと大きく異なる点は、GUIが付属することです。
各Docker Engineにはこのアドオンの機能を持ったエージェントプログラムがインストールされます。このエージェントにより、コンテナのデプロイ・変更・削除や、モニタリング、アクセスコントロール、サービスディスカバリを全体で制御するUCP (Universal Control Plane)、Dockerイメージのプライベートレジストリを提供するDTR (Docker Trusted Registory) の機能が提供されます。


171019_kato_2.pngUCP (Universal Control Plane)

171019_kato_3.pngDTR (Docker Trusted Registory)

また、RBAC (Role Based Access Control : 役割によるアクセス制御)も最近のバージョンで改善され、今まではざっくりしたロールしか利用できませんでしたが、カスタムロールが定義できるようになってからは、Dockerのコマンドレベルの粒度まで(例えば、イメージ操作のBuild、Push、Deleteなど)でロールを作成しアクセスコントロールができるようになりました。


171019_kato_4.png

カスタムロール

エンタープライズ向けという点では、外部のLDAP (Active Directory)とのアカウント連動や、シークレット(ユーザ名とパスワード、TLS証明書とキー、SSHキー、データベース名などの文字列やバイナリコンテンツなど)の管理をUCPに任せることで、コンテナデプロイ時の環境変数へ、ベタ打ちしていたセンシティブな情報の集中管理が可能になるなど、セキュリティーに配慮した機能もあります。

Advancedで提供される機能

Advancedのアドオン機能は、主にDTRが提供し、Dockerイメージに関するセキュリティーと自動化機能です。
まず、イメージの脆弱性検索機能についてご紹介します。CVE (Common Vulnerabilities and Exposures)識別子のデータベースに合致する脆弱性をDockerイメージが持っているかどうかを自動もしくはpush時に自動で検索する機能です。


171019_kato_5.png

イメージの脆弱性検索機能

また、Dockerイメージはレイヤ(層)で管理されていますが、その層ごとにどのような脆弱性が含まれるのかやライブラリごとに視覚化することで管理者の負担を減らす工夫がされています。なお、CVEのデータベースはDTRがインターネット接続を持つ場合、自動的に更新されます。もう一つの自動イメージプロモーションは、残った脆弱性の数やタグ名などを条件式として設定することで、その式が満たさせたタイミングで自動的に異なるレポジトリへコピーする機能となります。これは、テスト、ステージング環境用のイメージを本番へ自動的に昇格(プロモーション)するようなシーンに活用いただけます。


171019_kato_6.png残った脆弱性の数やタグ名などを条件式として設定

いかがでしたでしょうか。まずは触ってみないとなんとも言えないという方も多いかもしれませんが、1か月評価版をご利用いただければ、Advanced エディション・10ノード相当が利用可能となります。評価は、Linuxさえあればどこでも動作します。AWSやAzureに代表されるパブリッククラウドやオンプレミスでも30分あれば環境を作れますので、是非試してみてください。
次回は、インフラや開発環境の自動化・効率化を行うソリューションの紹介をしていきます。お楽しみに!

この記事の著者:加藤学

ソフトバンク コマース&サービス株式会社
テクニカルフェロー

エンタープライズ領域での開発から運用監視までの幅広い業務経験を活かし、事業開発やマーケティングチームと一緒になってビジネスの立ち上げを行っている。日本とアメリカ、特にシリコンバレーへ滞在し、新規プロダクトの発掘調査や国内外の新規パートナーリクルーティング、技術戦略、ポートフォリオの策定など、技術をバックグラウンドにしたさまざまな活動を行っている。最近では、DevOpsを始めとした開発者向けビジネスの立ち上げを行い、プロジェクトの責任者として慌ただしい日々を送っている。


DevOps Hubのアカウントをフォローして
更新情報を受け取る

  • Like on Feedly
    follow us in feedly

関連記事

このエントリーをはてなブックマークに追加

お問い合わせ

DevOpsに関することなら
お気軽にご相談ください。

Facebook、TwitterでDevOpsに関する
情報配信を行っています。