記事の前に記載:この記事で使用されているマシンはすべて仮想マシン CentOS-7-x86_64-Minimal-2009 イメージです。
インフラストラクチャ要件
仮想マシンの構成は最小要件を満たしており、本システムでは docker 24.0.4 と docker-compose 1.29.2 を使用しています。docker と docker-compose のインストールについては、以前の記事「Microservices & Cloud Native: Basic Preparations in Building a K8S Cluster 」を参照してください。
ダウンロードハーバー
公式のインストール方法には、オンライン (オンライン インストーラー) とオフライン (オフライン インストーラー) の 2 つの方法があります。ここではオフライン インストール パッケージをインストールすることをお勧めします。https: //github.com/goharbor/harbor/tagsで対応するバージョンを選択してダウンロードしてくださいここでは、v2 .8.3 バージョン、つまり、harbor-offline-installer-v2.8.3.tgz を選択します。
# 下载
wget -c https://github.com/goharbor/harbor/releases/download/v2.8.3/harbor-offline-installer-v2.8.3.tgz
# 解压
tar xzvf harbor-offline-installer-v2.8.3.tgz
解凍されたファイルのリストが表示されます。
CA証明書を生成する
ローカル ドメイン名の IP マッピングを追加します。ハーバーをインストールしたマシンの IP アドレスは 192.168.65.134 です。
vim /etc/hosts
# 添加 ip 与自定义域名映射,域名可以随便设置
192.168.65.134 harbor.kubemanagement.com
新しい証明書フォルダーを作成します。
mkdir certs
CAの生成
# 1.
cd certs
openssl genrsa -out ca.key 4096
# 2. 注意这里域名用上面设置的,比如 harbor.kubemanagement.com
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.kubemanagement.com" \
-key ca.key \
-out ca.crt
# 3.
openssl genrsa -out harbor.kubemanagement.com.key 4096
# 4.
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.kubemanagement.com.com" \
-key harbor.kubemanagement.com.key \
-out harbor.kubemanagement.com.csr
# 5.
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=harbor.kubemanagement.com
DNS.2=yourdomain
DNS.3=hostname
EOF
# 6.
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in harbor.kubemanagement.com.csr \
-out harbor.kubemanagement.com.crt
# 7.
mkdir -p /data/cert/
cp harbor.kubemanagement.com.crt /data/cert/
cp harbor.kubemanagement.com.key /data/cert/
# 8.
openssl x509 -inform PEM -in harbor.kubemanagement.com.crt -out harbor.kubemanagement.com.cert
# 9.
mkdir -p /etc/docker/certs.d/harbor.kubemanagement.com/
cp harbor.kubemanagement.com.cert /etc/docker/certs.d/harbor.kubemanagement.com/
cp harbor.kubemanagement.com.key /etc/docker/certs.d/harbor.kubemanagement.com/
cp ca.crt /etc/docker/certs.d/harbor.kubemanagement.com/
# 10.
systemctl restart docker
Harbor の構成とインストール
# 进入解压目录,如果目录里有 harbor.yml 就直接修改,我这里只有 harbor.yml.tmpl
cd harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
主に次の点に注意してください。カスタム ドメイン名、CA が保存されている場所、デフォルトのログイン パスワードです。変更後、
直接インストール スクリプトを実行します。
./install.sh
インストールが成功した後のプロンプト:
docker-compose を使用して実行ステータスを確認します。
docker-compose ps
問題がなければ、すべて健康な状態です。
テスト
ブラウザにドメイン名または IP を入力すると、次のインターフェイスが表示されます。デフォルトのユーザー名は admin で、パスワードは Harbor.yml ファイルに設定されます。 システムにログインした後、新しいプライベート プロジェクト kubemanagment を作成し
ます
。 、イメージのアップロードをテストできます。最初に (必ず) docker にログインします。
docker login harbor.kubemanagement.com
Harbor の要件に従って、画像をマークしてプッシュします。
ここでは例としてビジーボックス画像を取り上げます。
# 1. 拉取 busybox 镜像
docker pull busybox
# 2. tag
docker tag busy:latest harbor.kubemanagement.com/kubemanagment/busybox:latest
# 3. push
docker push harbor.kubemanagement.com/kubemanagment/busybox:latest
この時点で、kubemanagment/busybox がすでに存在していることが Web ページで確認できます。
ここで、Harbor の基本的なインストールと構成が完了しています。
上記の kubemanagment/mysql と同様に、k8s クラスター環境でハーバープッシュをテストします。具体的なプロセスは次のとおりです。
基本的な k8s クラスター環境はマイクロサービスおよびクラウドネイティブです。K8S クラスターを構築するには、簡単にするために、ここには 1 つのマスター ノードと 1 つのワーカー ノードのみが含まれています。マスターノードのIP情報は次のとおりです。
ip: 192.168.65.130
マスターのホストへのマッピングを追加します。
vim /etc/hosts
192.168.65.134 harbor.kubemanagement.com
イメージをマスター ノードにプッシュするには、docker login harbor.kubemanagement.com
直接ログインすることはできず、エラーが報告されます。
ハーバーが配置されているマシン上の CA 情報をマスター ノードにコピーする必要があります。
# 在 master主机上
cd /etc/docker/
# 192.168.65.134 为 harbor 所在主机
scp -r [email protected]:/etc/docker/certs.d .
次に、docker を再起動します。
systemctl restart docker
それから
# 这里的 mysql:8.0.23 是我 master 节点中以前就 pull 好的镜像
docker login harbor.kubemanagement.com
docker tag mysql:8.0.23 harbor.kubemanagement.com/kubemanagment/mysql:8.0.23
docker push harbor.kubemanagement.com/kubemanagment/mysql:8.0.23