Harbor配備-非高可用性
9902 ワード
1、配置紹介
公式サイトで紹介されているハーバーの配置方法は全部で3種類あります Online installer:オンラインインストール、ネットワーク速度などの理由で、本稿では を紹介しません. Offline installer:オフライン取り付け OVA installer:VMware独自の仮想マシンテクノロジーを使用した導入 については説明しません.
ハードウェア要件とソフトウェア要件の導入
Resource
Capacity
Description
CPU
minimal 2 CPU
4 CPU is prefered
Mem
minimal 4GB
8GB is prefered
Disk
minimal 40GB
160GB is prefered
Software
Version
Description
Python
version 2.7 or higher
Note that you may have to install Python on Linux distributions (Gentoo, Arch) that do not come with a Python interpreter installed by default
Docker engine
version 1.10 or higher
For installation instructions, please refer to: https://docs.docker.com/engine/installation/
Docker Compose
version 1.6.0 or higher
For installation instructions, please refer to: https://docs.docker.com/compose/install/
Openssl
latest is prefered
Generate certificate and keys for Harbor
2、インストール手順
インストールは以下の3つのステップ1に分けられる.ソフトウェアパッケージをダウンロードします.1.harbor.の構成cfg; 1.installを実行します.sh harborの取り付け
インストールファイルのダウンロード先:https://github.com/vmware/harbor/releases
ダウンロード後のファイルパッケージの解凍
次に./を設定します.harbor/harbor.cfgプロファイル
構成項目は必須とオプションに分けられます.
必須: hostname:UIとregistryサービスにアクセスするためのホスト名で、IPアドレスを推奨します. ui_url_protocol:(httpまたはhttp s.デフォルトhttp)httpプロトコル; db_password:MySQLのパスワード; max_job_workers:(デフォルト3)jobサービスにおけるworkerの最大数; customize_crt:(on or off.デフォルトon)秘密鍵を作成するかどうか; ssl_cert_key:公開鍵を作成するかどうか; secretkey_path:鍵パス; log_rotate_count:ログストレージバージョン log_rotate_size:ログストレージ容量 本文を選んで紹介しない.
公式のインストールはとても簡単で、配置が完成した後、インストールコマンドを実行して、自動的にインストールを完成することができます
インストールが完了すると、導入IPにアクセスする80ポートを使用してUIインタフェースにアクセスできます.デフォルトの管理者:admin/Harbor 12345
dockerでログインすると、pushがHarborにミラーされます
注意:1、dockerでは、コンフィギュレーションファイル/etc/sysconfig/docker講OPTIONにオプション「-selinux-enabled=false」と「-insecure-registry 172.16.7.48」を追加して登録する必要があります.そうでないと「denied:requested access to the resource is denied」エラーが表示されます.たとえば、「docker push 172.16.7.48/google_containers/pause-amd 64:3.0」の前に、google_containersのプロジェクト
3、インストールプロセスコード解析
まず分析しますshのコード
install.shのコードは非常に簡単で、まずインストール環境が完備しているかどうかを判断します.
次に、ユーザーが選択可能なインストールオプションを確認し、その後、同じディレクトリのprepareというPythonスクリプトを呼び出して環境準備を行います.このスクリプトは主にデータベース、依存などを検証し、自動的に準備します.具体的なコードは分析しません.
最後にdocker-composeを使用してインストールを完了し、インストールの正確性を確認します.
次にdocker-composeのyamlファイルを分析します
まず、logコンテナを起動し、すべてのlogの収集作業を引き継ぐため、docker logコマンドを使用してコンテナのログを表示すると、エラーが発生します.
このエラーは正常な現象で、Harborログを表示するには、配備マシンの/var/log/harbor/*を直接表示することができます.logファイル
起動ログコンテナは次のように構成されています.
ログ・ファイルを起動したら、他のコンテナを順に起動し、以前に初期化された各種プロファイルをマウントしてコンテナに入れます.コンテナは1つだけです.
以上の構成から,ネットワークはHarborというdockerネットワークを用い,ログドライバはsyslogを用いる方式であることが分かる.
ネットワークが作成されていない場合、dockerは自動的にネットワークを作成します.
Pull image from Harbor in Kubernetes
Kubernetes users can easily deploy pods with images stored in Harbor. The settings are similar to that of another private registry. There are two major issues: When your Harbor instance is hosting http and the certificate is self signed. You need to modify daemon.json on each work node of your cluster, for details please refer to: https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry If your pod references an image under private project, you need to create a secret with the credentials of user who has permission to pull image from this project, for details refer to: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
公式サイトで紹介されているハーバーの配置方法は全部で3種類あります
ハードウェア要件とソフトウェア要件の導入
Resource
Capacity
Description
CPU
minimal 2 CPU
4 CPU is prefered
Mem
minimal 4GB
8GB is prefered
Disk
minimal 40GB
160GB is prefered
Software
Version
Description
Python
version 2.7 or higher
Note that you may have to install Python on Linux distributions (Gentoo, Arch) that do not come with a Python interpreter installed by default
Docker engine
version 1.10 or higher
For installation instructions, please refer to: https://docs.docker.com/engine/installation/
Docker Compose
version 1.6.0 or higher
For installation instructions, please refer to: https://docs.docker.com/compose/install/
Openssl
latest is prefered
Generate certificate and keys for Harbor
2、インストール手順
インストールは以下の3つのステップ1に分けられる.ソフトウェアパッケージをダウンロードします.1.harbor.の構成cfg; 1.installを実行します.sh harborの取り付け
インストールファイルのダウンロード先:https://github.com/vmware/harbor/releases
ダウンロード後のファイルパッケージの解凍
$ tar xvf harbor-offline-installer-<version>.tgz
次に./を設定します.harbor/harbor.cfgプロファイル
構成項目は必須とオプションに分けられます.
必須:
公式のインストールはとても簡単で、配置が完成した後、インストールコマンドを実行して、自動的にインストールを完成することができます
$ sudo ./install.sh
インストールが完了すると、導入IPにアクセスする80ポートを使用してUIインタフェースにアクセスできます.デフォルトの管理者:admin/Harbor 12345
dockerでログインすると、pushがHarborにミラーされます
$ docker login reg.yourdomain.com
$ docker push reg.yourdomain.com/myproject/myrepo:mytag
注意:1、dockerでは、コンフィギュレーションファイル/etc/sysconfig/docker講OPTIONにオプション「-selinux-enabled=false」と「-insecure-registry 172.16.7.48」を追加して登録する必要があります.そうでないと「denied:requested access to the resource is denied」エラーが表示されます.たとえば、「docker push 172.16.7.48/google_containers/pause-amd 64:3.0」の前に、google_containersのプロジェクト
3、インストールプロセスコード解析
まず分析しますshのコード
install.shのコードは非常に簡単で、まずインストール環境が完備しているかどうかを判断します.
h2 "[Step $item]: checking installation environment ..."; let item+=1
check_docker
check_dockercompose
次に、ユーザーが選択可能なインストールオプションを確認し、その後、同じディレクトリのprepareというPythonスクリプトを呼び出して環境準備を行います.このスクリプトは主にデータベース、依存などを検証し、自動的に準備します.具体的なコードは分析しません.
h2 "[Step $item]: preparing environment ..."; let item+=1
if [ -n "$host" ]
then
sed "s/^hostname = .*/hostname = $host/g" -i ./harbor.cfg
fi
prepare_para=
if [ $with_notary ] && [ ! $harbor_ha ]
then
prepare_para="${prepare_para} --with-notary"
fi
if [ $with_clair ]
then
prepare_para="${prepare_para} --with-clair"
fi
if [ $harbor_ha ]
then
prepare_para="${prepare_para} --ha"
fi
./prepare $prepare_para
echo ""
最後にdocker-composeを使用してインストールを完了し、インストールの正確性を確認します.
h2 "[Step $item]: starting Harbor ..."
if [ $harbor_ha ]
then
mv docker-compose.yml docker-compose.yml.bak
cp ha/docker-compose.yml docker-compose.yml
mv docker-compose.clair.yml docker-compose.clair.yml.bak
cp ha/docker-compose.clair.yml docker-compose.clair.yml
fi
docker-compose $docker_compose_list up -d
protocol=http
hostname=reg.mydomain.com
if [[ $(cat ./harbor.cfg) =~ ui_url_protocol[[:blank:]]*=[[:blank:]]*(https?) ]]
then
protocol=${BASH_REMATCH[1]}
fi
if [[ $(grep 'hostname[[:blank:]]*=' ./harbor.cfg) =~ hostname[[:blank:]]*=[[:blank:]]*(.*) ]]
then
hostname=${BASH_REMATCH[1]}
fi
echo ""
success $"----Harbor has been installed and started successfully.----
Now you should be able to visit the admin portal at ${protocol}://${hostname}.
For more details, please visit https://github.com/vmware/harbor .
"
次にdocker-composeのyamlファイルを分析します
まず、logコンテナを起動し、すべてのlogの収集作業を引き継ぐため、docker logコマンドを使用してコンテナのログを表示すると、エラーが発生します.
"logs" command is supported only for "json-file" and "journald" logging drivers (got: syslog)
このエラーは正常な現象で、Harborログを表示するには、配備マシンの/var/log/harbor/*を直接表示することができます.logファイル
起動ログコンテナは次のように構成されています.
log:
image: vmware/harbor-log:v1.4.0
container_name: harbor-log
restart: always
volumes:
- /var/log/harbor/:/var/log/docker/:z
- ./common/config/log/:/etc/logrotate.d/:z
ports:
- 127.0.0.1:1514:10514
networks:
- harbor
ログ・ファイルを起動したら、他のコンテナを順に起動し、以前に初期化された各種プロファイルをマウントしてコンテナに入れます.コンテナは1つだけです.
adminserver:
image: vmware/harbor-adminserver:v1.4.0
container_name: harbor-adminserver
env_file:
- ./common/config/adminserver/env
restart: always
volumes:
- /data/config/:/etc/adminserver/config/:z
- /data/secretkey:/etc/adminserver/key:z
- /data/:/data/:z
networks:
- harbor
depends_on:
- log
logging:
driver: "syslog"
options:
syslog-address: "tcp://127.0.0.1:1514"
tag: "adminserver"
以上の構成から,ネットワークはHarborというdockerネットワークを用い,ログドライバはsyslogを用いる方式であることが分かる.
ネットワークが作成されていない場合、dockerは自動的にネットワークを作成します.
Pull image from Harbor in Kubernetes
Kubernetes users can easily deploy pods with images stored in Harbor. The settings are similar to that of another private registry. There are two major issues: