San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
DevSecOps

Harborとは?

どの基準で見ても、セルフホスティングの考えは革新的とは言えませんが、自由度と柔軟性が大いに向上します。IT管理者やプログラマーは長い間、自社製品をセルフホスティングする方法を模索してきました。クラウドサービスがまだ広く知られていなかったため、セルフホスティングが実質的に唯一の実現方法でした。 

近年、ウェブ企業が注目されるようになったにもかかわらず、セルフホスティングを行うかどうか悩む方も多いでしょう。Docker Hub用のHarborコンテナレジストリを自社で運用するのであれば、Harborを活用することが最適な戦略です。HarborはVMwareで初めて開発された後、CNCFに採用されています。 

現在、ほとんどのソフトはオープンソースとして提供され、コストをかけずに多くの機能を実現しています。本記事では、Harborの概要、利用する理由、特徴、導入プロセスなどを解説します。では、始めましょう。

Harborとは

Harborは、Dockerコンテナの管理と保持に優れた手法です。著名な仮想マシンメーカーであるVMwareがHarborを開発し、その後、世界最大級のオープンソースプロジェクトとされるCNCFに引き継がれました。

Harborプロジェクトは、harbor dockerのプログラミング言語から発展しました。開発者やボランティアが協力して機能の向上やセキュリティ脅威の解消に努めました。 

どちらの取り組みも、世界中のプログラマーの労力によって支えられました。そのため、一部で一貫性に欠ける可能性がありましたが、Harbor Container Registryでは、以前のバージョンよりも安全性を高めるために尽力しています。

Harborはクラウド上で開発されました。保存するだけでなく、画像の詳細なセキュリティ脆弱性のチェックも行います。また、開発者は自身のキーを使ってレジストリにアップロードした画像の正当性を確認できるため、コンテナ画像の信頼性が保証されます。

なぜHarborを使うのか

他のソリューションではなく、なぜHarborを選ぶべきか疑問に思うかもしれません。しかし、他のプログラムより優れている多くの理由があります。

レジストリを自由に制御し、望む通りにカスタマイズできる点が大きな魅力です。多くのプロバイダが多数の設定を提供しているにもかかわらず、提供された展開方法に縛られることが多いです。セルフホスティングであれば、実装の方法を自由に設定できます。

さらに、Harborには他では得られない独自の特徴があります。開発、品質保証、運用といった各環境ごとに異なるレジストリを持つのは一般的ですが、Harborではそれぞれを連携させながら管理することが容易です。複数の管理段階で画像を同期させながら運用を進める柔軟性も備えています。 

導入プロセス

商用環境では、AWSやGCP上にHarbor Kubernetesサーバを構築するのが一般的ですが、学習用としては複雑すぎます。ここでは、Kubernetesクラスターを手軽に立ち上げるMinikubeを使用します。minikube導入後、以下のコマンドで新しいクラスターを起動してください:

$ minikube start --vm-driver virtualbox

コマンド完了後、少々時間はかかりますが、動作するテクノロジースタックが得られます。次に、Harbor設定に接続するため、以下のコマンドでingressアドオンを有効にしてください:

$ minikube addons enable ingress

この時点でminikubeが設定されているはずです。その後、HelmのソースにHarborリポジトリを追加し、Helmテンプレートをインストールします:

$ helm repo add harbor https://helm.goharbor.io

ソース追加後、以下の手順でHelmチャートをデプロイしてください:

$ helm install my-release harbor/harbor

すべてのポッドが動作するまで待機する必要があります。kubectl get podsコマンドで状態を確認してください。依存関係により、一部が一時的に正常動作しない場合があります。大体15~20分程度待つことになるでしょう。ポッドにIPが割り当てられたら、minikube ipコマンドで確認してください。

次に、このIPを用いて/etc/hostsファイルを編集します。初期設定のURLはhttps://core.harbor.domainですが、ブラウザに入力した際にクラスターに接続されるよう設定する必要があります。以下の2行を/etc/hostsファイルに追加してください:

<ip-of-minikube>	core.harbor.domain
<ip-of-minikube>	notary.harbor.domain

これにより、https://core.harbor.domainへアクセスし、初期のユーザー名とパスワードでログインできるようになります。  

username: admin

password: Harbor12345

Dockerクライアントの設定

動作中のHarborデプロイメントの利用を検討してもよいですが、レジストリとしてのみ使用する場合は注意が必要です。レジストリがアクセス不能にならないよう、Harborの認証情報をシステムに設定してください。

まず、minikube版のDockerサーバを利用するように設定する必要があります。LinuxまたはOS Xをお使いの場合、以下の方法を試してください:

その後、環境変数がminikubeのDockerサーバを参照するよう設定されます。次に、KubernetesのSecretから証明書を取得してください:


kubectl -n harbor get secrets harbor-ingress -o jsonpath="{.data['ca\.crt']}" | base64 -D > harbor-ca.crt

【注意】base64 -Dを使用しますが、Linuxではbase64 -dを使用してください。

これで、証明書を含むharbor-ca.crtファイルを入手しました。次に、認証情報をminikube VMにコピーして、Dockerサーバで利用できるようにしてください:

$ scp -o IdentitiesOnly=yes -i $(minikube ssh-key) harbor-ca.crt docker@$(minikube ip):./harbor-ca.crt

証明書の転送が完了したら、minikube VM上で以下のようにインストールしてください:

$ minikube ssh
$ sudo mkdir -p /etc/docker/certs.d/core.harbor.domain
$ sudo cp harbor-ca.crt /etc/docker/certs.d/core.harbor.domain

通常の端末に戻るにはexitを実行してください。認証情報が設定された後、ログインしてdocker画像をプッシュし、動作確認を行ってください:

$ docker login core.harbor.domain --username=admin --password Harbor12345

# Docker Hubから画像を取得
$ docker pull nginx

# 画像がプッシュ可能な状態でないため、タグ付けしてから実施
$ docker tag nginx core.harbor.domain/library/nginx:latest

# 画像をレジストリへプッシュ
$ docker push core.harbor.domain/library/nginx:latest

注目の4つの特徴

統合されたUAA認証: Harbor、VMware Tanzu Application Service for VMs (TAS for VMs)およびTKGIはUAA認証を共有できます。

LDAP/Active Directory (AD)との相互運用性: 身元管理やシステム管理のため、Harborは企業のLDAP/ADシステムと連携します。

RESTful API: 外部システムとの連携が容易なRESTful APIが、ほとんどの管理作業に利用できます。 RESTful APIs

プロジェクトの再作成: Harborはプロジェクトの複製をサポートし、あるHarborアカウントから別のアカウントへソースを複製できます。

まとめ

ここまで進めば、Harborはインストールされ動作しており、自社専用のレジストリとして利用可能です。これにより、レジストリの使い方や実装方法を自由に設定できます。また、攻撃検知やコンテナ画像の複製検出など、オープンソースプログラムの全機能を活用できます。

FAQ

最新情報を購読

学習目標
最新情報を
購読
購読する
関連トピック