PulpはRPM, Debian, Puppetモジュール,今回のDockerリポジトリ,その他のコンテントをサポートする,リポジトリコンテント管理ツールである。バグを修正し,Dockerリポジトリを管理するプラグインを新たに加えた,バージョン2.5がリリースされた。
SysAdventブログ記事の中では,Justin Garrison氏が,Pulpによるリポジトリ管理について紹介している。Pulpはインポータ(importer)を使用して,外部のソースやローカルファイルシステム,その他のリポジトリを対象に,コンテントのフェッチと同期を行う。そのコンテントをディストリビュータ(distributor)がHTTP, ISO, rsyncなどの手段を通じて公開する仕組みだ。新しいソースやフォーマットの追加と拡張には,プラグインによって対応する。
Pulp 2.5.0では,現時点ではまだ技術プレビューの段階にあるpulp_dockerという,Dockerリポジトリ管理用のオプションプラグインが使用できる。このプラグインでは,Dockerリポジトリの全体ないし一部をローカルにミラーしたり,新しいリポジトリにコンテントをホストしたり,複数のソースにあるコンテントをひとつの場所で管理できる他,次のような機能もある。
- 管理インターフェース(Pulp API)とエンドユーザインターフェース(Docker)の分離
- ロールベースのアクセス管理(RBAC)とLDAPサポート
- ノードを使った組織全体のコンテント同期
- "dev", "test", "prod"など,ユーザが定義した環境を通じてのコンテント利用の促進
- HTTP, amqp, Eメールなどによるイベントベースの通知機能
- 独立デプロイの可能なDockerレジストリAPIの読み取り専用実装
Pulpは,Dockerレジストリ機能をVM,CraneをDockerコンテナとして,あるいはマルチコンテナ環境を使用してデプロイすることができる。RHELとFedoraにインストールと設定を行うためのPuppetモジュールも提供されている。
Pulpコンポーネントに含まれるのは,
- Apache httpd: リポジトリを公開するAPIとHTTPのフロントエンド。
- Pulp Workers: リポジトリ同期や公開のように,長時間実行されるタスクのためのプロセス。
- Pulp CeleryBeat: ワーカの維持とタスクのキャンセル。
- Pulp Resource Manager: タスクへのジョブ割り当て。
- MongoDB: リポジトリとコンテントのメタデータ値の格納。
- Apache Qpid/RabbitMQ: ジョブ割り当て用のメッセージバス。
- pulp-admin: コンテントとコンシューマを管理するコマンドラインツール。
サービスをスケーラブルにするために,いずれのコンポーネントも分散可能である。Pulpサーバも分散に対応している。親子のノード関係内の複数のロケーションで,他のサーバを全体的に,あるいは部分的にレプリケーションすることも可能だ。