Harborについて

Harbor概要

HarborはVMwareが開発したオープンソースのプライベートコンテナレジストリであり、Docker Registryと同じようにコンテナイメージを管理する機能を実装したレジストリである。
Docker Hubのようにイメージを保存できるリポジトリとして、Registryの利点を備え、直感的なWebベースのUser Interfaceを提供するため、効率的なイメージ管理が可能である。

一般的にDockerを使用する場合、dockerコマンドを使ってNginxやbusyboxなどのコンテナイメージをデプロイする。このイメージの取得元がレジストリであり、デフォルトではDocker Hubから取得している。
しかし、Docker Hubは公開レジストリであるため、セキュアなアクセスができなかったり、会社プロジェクトで作成するような独自コンテナイメージをアップロードする用途には適さない場合がある。
Harborはこのような問題を解決するため、閉鎖環境で使用されることを想定したプライベートレジストリとして、さまざまな機能を提供する。

もともとHarborは、2014年にVMwareがイメージ利用におけるセキュリティ体制の強化やコンプライアンス遵守を目的として開発を開始した。
2016年にオープンソース化され、2018年にはKubernetesなどの開発をホストするCloud Native Computing Foundation(CNCF)プロジェクトの一つとして採択され、2020年にプロジェクトを卒業した。

Harborの主な特徴

  • Docker Imageのプライベートリポジトリを提供
  • Cloud-Nativeベースのオープンソースレジストリ
    • HarborはコンテナイメージとHelmチャートの両方をサポートし、コンテナランタイムやオーケストレーションプラットフォームなど、クラウドネイティブ環境のレジストリとして機能する。
  • ロールベースアクセス制御管理(RBAC)
    • ユーザーやプロジェクトごとに、公開するコンテナイメージや操作を制御できる。
  • ポリシーベースのレプリケーション
    • フィルター(リポジトリ、タグ、ラベル)を使用するポリシーに基づき、サーバーをまたぐ複数のレジストリインスタンス間でイメージを複製し、負荷分散と高可用性を提供する。
  • LDAP/ADサポート
    • ADやLDAPなどのユーザー管理システムを使用している場合、そのシステムをHarborに統合してRBACに使用できる。
  • 脆弱性スキャン
    • リポジトリ内のコンテナイメージに対して定期的に脆弱性を検査し、脆弱なイメージがデプロイされることを防ぐ。
  • OIDCサポート
    • HarborはOpenID Connect(OIDC)を利用して、Keycloakなどの外部認証サーバーからHarborポータルへのシングルサインオン(SSO)を実現できる。
  • グラフィカルユーザーポータル
    • Web UIを提供する。
    • ユーザーはHarborポータル(WebUI)を通じてリポジトリを参照、検索し、プロジェクトを管理できる。
  • 監査
    • リポジトリに対するすべての操作は、WebUIやログを通じて監査・追跡できる。

Harborの運用環境

オペレーティングシステムとDocker

Harborは複数のDockerコンテナとしてデプロイされる。したがって、DockerをサポートするすべてのLinuxディストリビューションにデプロイできる。ホストにはDockerおよびDocker Composeのインストールが必要である。

ハードウェア

次の表は、Harborを配置するための最小構成と推奨構成である。

リソース 最小構成 推奨構成
CPU 2 CPU 4 CPU
メモリ 4 GB 8 GB
ディスクサイズ 40 GB 160 GB

ソフトウェア

次の表は、ホストにインストールする必要があるソフトウェアとそのバージョンである。

ソフトウェア バージョン 説明
Docker Engine Version 17.06.0-ce+ 以上 インストール方法の詳細は Docker Engineドキュメント を参照してほしい。
Docker Compose Version 1.18.0 以上 インストール方法の詳細は Docker Composeドキュメント を参照してほしい。
Openssl Latest Harborの証明書とキーを生成するために使用される。

ネットワークポート

Harborを使用するには、ホストで次のポートが開いている必要がある。

ポート プロトコル 説明
443 HTTPS HarborポータルとコアAPIは、このポートでHTTPSリクエストを受け付ける。
このポートは設定ファイルで変更できる。
4443 HTTPS HarborのDocker Content Trustサービスへ接続するために使用される。
Notaryが有効な場合にのみ必要である。
このポートは設定ファイルで変更できる。
80 HTTP HarborポータルとコアAPIは、このポートでHTTPリクエストを受け付ける。
このポートは設定ファイルで変更できる。

Harborライセンス

HarborのライセンスはApache License version 2に基づいて公開されており、営利・非営利を問わず誰でも自由かつ無料で利用、変更、再配布できる。

参考