、Haborプロフィール
1、港の紹介
githubのアドレスします。https://github.com/goharbor/harbor
ハーバーは、看板を格納し、オープンソースの信頼できるクラウドネイティブレジストリプロジェクトであり、かつコンテンツをスキャンします。ハーバーは、通常、セキュリティ、アイデンティティや管理などのユーザーが必要な機能を追加することで、オープンソースドッカー分布を拡張します。ビルドと実行環境に近いレジストリを持つことは、画像の転送効率を向上させることができます。ハーバーは、登録簿間の画像の複製をサポートし、また、このようなユーザー管理、アクセス制御およびアクティビティの監査などの高度なセキュリティ機能を提供しています。
ハーバーエンタープライズレジストリは、セキュリティ、アイデンティティ管理など、いくつかの企業のために必要な機能を追加することにより、ミラードッカーを格納して配布するためのサーバであり、オープンソースドッカー分布を拡張します。民間企業のサーバーのレジストリとして、ハーバーは、より良いパフォーマンスとセキュリティを提供します。レジストリユーザーのビルドと透過像のランタイム環境の効率を高めます。ハーバーミラーリソースは、プライベートレジストリに保存されているすべてのミラーリング、複数のレジストリにインストールされたノードの複製をサポートし、企業の内部ネットワークの管理とコントロールのデータや知的財産を確保します。また、ハーバーにも、このようなユーザー管理、アクセス制御、監査活動などの高度なセキュリティ機能を提供します。
2、およびコンポーネントアーキテクチャ図
ハーバーは、主にアーキテクチャの6つのコンポーネントで構成されています。
-
プロキシは、港のレジストリは、UIは、統一戦線によるトークンやその他のサービスは、リバースプロキシ、ブラウザ、ドッカークライアントの要求を受信し、バックエンド異なるサービスに要求を転送します。
-
レジストリ:ドッカー画像を保存し、ドッキングウィンドウのプッシュ/プルコマンドを処理するための責任を負います。私たちは、ユーザーのアクセス制御をしたいので、つまり、異なるユーザが異なる読み取りを持っているとドッカーイメージへの書き込みアクセスを、レジストリがトークンサービスを指すようになります、ドッキングウィンドウプッシュ/プルリクエストあたりの必須ユーザーが有効なトークンを運ぶ必要があり、レジストリが通過しますトークンの検証を復号化するための公開鍵。
-
サービスのコア:これは、コア機能の港では、以下のサービスを提供しています:
-
UIは、ユーザ管理レジストリ上の画像(イメージ)、およびユーザ認証を支援するグラフィカル・インタフェースを提供します。
-
ウェブフック:レジストリ画像状態変化へのタイムリーなアクセスは、ウェブフックレジストリ上に配置された場合には、状態変化がUIモジュールに伝送されます。
-
トークンサービス:各ドッカプッシュする責任は、あなたがトークンを含んでいない場合は/ユーザー権限に基づいてRegiøstryサービスへのクライアントによって開始さドッカーコマンド発行されたトークン要求を引き出し、あなたはここにリダイレクトされ、その後、レジストリにトークン要求を再取得します。..
-
データベースは、コアサービスにデータベースサービスを提供し、ユーザの権限、監査ログ、ドッカー画像グルーピング情報及び他のデータを格納するための責任があります。
-
サービス仕事:リモートレプリケーション機能をミラーリング提供するには、ローカルミラー他のインスタンスハーバーに同期させることができます。
-
ログを収集:ハーバーの動作を監視しやすくするために、後で分析するために、ログの他のコンポーネントを収集するための責任があります。
3、ハーバーを達成します
各成分は、それを展開する公式ドッカー作曲を使用して、フォームハーバードッカー容器で構成されています。ドッカー作曲テンプレートが展開ハーバー港/ドッキングウィンドウ-compose.ymlのために配置され、テンプレートファイルはハーバー容器7その発見されたオープンします。
#psのドッキングウィンドウ-構成 名コマンド州ポートの ----------------------------------------- -------------------------------------------------- ----------------------------------- 港-あるAdminServer /港/アップharbor_adminserver 港-DB]ドッキングウィンドウ・エントリポイントを。 SH 3306 / TCPの最大mysqldの 港-jobservice /港/ harbor_jobserviceアップ 港-ログ/ binに/ shの-c crond &&のrm -f ...アップ127.0.0.1:1514->514/tcpを 港-UI /港/ harbor_uiアップ nginxのnginxの-gオフデーモン。0.0.0.0:443->443/tcpまで、0.0.0.0:4443->4443/tcp、0.0.0.0:80->80/tcp レジストリは、/ etc / ...アップ5000 / tcpのサービスを提供/entrypoint.sh
- nginxの:トラフィック転送およびセキュリティ検証のためのnginxの責任、外国オファーの流れは、nginxのトランジットからUIのバックエンドフローに配布されますので、オープンhttpsポート443、であり、ドッキングウィンドウのドッキングウィンドウのレジストリは、ストレージをミラーリングしています。
- JobService-港:JobServiceジョブ管理モジュールを保有する港、以前に使用イメージリポジトリに同期される港における主な仕事。
- UI-ハーバー:ハーバーUIは、Webページ管理、フロントエンドとCURDインターフェースの背面のメインページです。
- レジストリ:レジストリは画像を保存する責任プライマリ・リポジトリドッキングウィンドウ、です。
- AdminServerの-港:港、港AdminServerのシステム管理インタフェースは、システムを変更し、システム情報を取得するように構成することができるです。
- これらのコンテナは、コンテナの名前との間のコンテナを介して相互にアクセスし、ドッカーリンクの形で一緒に接続されています。エンドユーザーのために、それだけでは、プロキシ(すなわち、nginxの)サービスポートを公開する必要があります。
- DB-港:港は、ジョブとプロジェクトの人事権管理システムを維持する港-DBデータベースです。港は、データ、製造プロセスにおけるほとんどLDAPドッキング企業によって認定されているので、
- ログイン港:港の港は両対数サービス、港湾ログの一元管理です。syslogのコンテナは、検査によって、均一なログ出力することが分かります。
- 各々がコンテナ間コンテナの名前でアクセスすることができるように、これらの容器は、ドッカーリンクの形で一緒に接続されています。エンドユーザーのために、それだけでは、プロキシ(すなわち、nginxの)サービスポートを公開する必要があります。
第二に、高可用性アーキテクチャのハーバーをインストールおよび構成
1、環境説明
環境名 | 版 |
システムバージョン | CentOSのLinuxのリリース1810年7月6日(コア) |
ドッキングウィンドウ、この | 18.09.7-EC |
ドッキングウィンドウ、コン | v1.18.0 |
港 | v1.8.0 |
マウンティング | オフラインインストール |
設置場所 |
説明情報サーバー
ホスト名 | IPアドレス | 役割 | CPU | メモリ |
マスター | 192.168.100.156 | マスター | > = 2 | > = 2G |
node01 | 192.168.100.157 | ワーカー | > = 2 | > = 2G |
node02 | 192.168.100.158 | ワーカー | > = 2 | > = 2G |
2、インストールドッカ
インストールの前に、ブログをご参照ください。https://www.cnblogs.com/liangyuntao-ts/p/10657009.html
図3に示すように、取付ドッカー-コンv1.18.0
$ yum install -y docker-compose $ docker-compose --verison docker-compose version 1.18.0, build 8dd22a9
4、离线安装harbor v1.8.0
下载地址https://github.com/goharbor/harbor/releases
大家也可以到我的网盘下载:https://pan.baidu.com/s/1qazfH-9DPeMe-ofIxlEhLw
提取码:l540
$ tar -xvf harbor-offline-installer-v1.8.0.tgz $ cd harbor $ vim harbor.yml hostname: 192.168.100.156 //改成本机的IP,由于是做高可用,通过IP来负载均衡 $ cd /home/harbor $ sh install.sh
输出的部分信息:
✔ ----Harbor has been installed and started successfully.----
Now you should be able to visit the admin portal at http://192.168.100.156.
For more details, please visit https://github.com/goharbor/harbor .
5、浏览器登陆 http://192.168.100.156
用户名:admin 密码:Harbor12345
6、在master部署nginx
$ mkdir nginx && cd nginx $ docker pull nginx:1.13.12 故障解决方案,拉取镜像的时候报错 [root@master nginx]# docker pull nginx:1.13.12 Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 解决方案: 1)创建daemon.json文件 vim /etc/docker/daemon.json 2) 写入: { "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"] } 3)重启: [root@km docker]# systemctl daemon-reload [root@km docker]# systemctl restart docker 4)完美解决。 --------------------- 作者:那记忆微凉 来源:CSDN 原文:https://blog.csdn.net/BigData_Mining/article/details/86769696 版权声明:本文为博主原创文章,转载请附上博文链接!
7、编写nginx的配置文件nginx.conf
$ vim nginx.conf user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } stream { upstream hub { server 192.168.100.156:80; } server { listen 80; proxy_pass hub; proxy_timeout 300s; proxy_connect_timeout 5s; } }
8、编写Nginx重启脚本
$ vim restart.sh #!/bin/bash docker stop harbor nginx docker rm harbor nginx docker run -idt --net=host --name harbornginx -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf nginx:1.13.12 sh restart.sh
9、在本地电脑绑定HOST,以便进行域名访问
192.168.100.150 harbor.test.com
三、设置Harbor双主复制
四、进行测试
创建一个kubernetes的项目,在创建其他用户,如test,将这个用户以开发人员的身份加入项目中,让其有推送镜像的权限
$ docker tag nginx:1.13.12 hub.test.com/kubernetes/nginx:1.13.12 //把镜像打上自己的标签 $ vim /etc/host 192.168.100.150 harbor.test.com 遇到一个故障,无法解除 [root@master nginx]# docker login harbor.test.com Username: test Password: Error response from daemon: Get https://harbor.test.com/v2/: dial tcp 192.168.100.150:443: connect: connection refused 解决方法 $ vim /usr/lib/systemd/system/docker.service 添加如下内容 ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry=192.168.100.156