Originaltext reproduziert aus: Entwurf und Bereitstellung von Harbor-Hochverfügbarkeitsclustern (basierend auf der Offline-Installationsmethode)
Von Architektur zur Schönheit Veröffentlicht in Peking am 05.09.2022 um 09:28 Uhr
Empfehlung der Redaktion:
Rein nützlich und praktisch, der Weiterempfehlungsfaktor liegt bei 5 Sternen.
Der folgende Artikel stammt aus Harbor Advanced Practice, verfasst von Jianke Li Dabai
Fortgeschrittene Übung im Hafen.
【Zusammenfassung】 Entwurf und Bereitstellung einer Hochverfügbarkeitslösung basierend auf der Offline-Installationsmethode von Harbor.
1. Umweltbeschreibung
1.1 Architekturdiagramm
Diagramm der Harbor-Hochverfügbarkeitsarchitektur
[Architekturanalyse]: Migrieren Sie die Redis-Cache-Komponente und die PostgreSQL-Datenbankkomponente von Harbor nach außerhalb des Systems, um eine hohe Verfügbarkeit zu gewährleisten, und verwenden Sie externen gemeinsam genutzten Speicher, um die Datenfreigabe zwischen mehreren Harbor-Instanzen zu realisieren. Harbor-Instanzen können horizontal erweitert werden.
1.2 Hostliste
IP Adresse | CPU-Name | beschreiben |
---|---|---|
192.168.2.107 | Hafen1 | Harbor-Instanz 1, Port 8021 |
192.168.2.108 | Hafen2 | Harbor-Instanz 2, Port 8021 |
192.168.2.110 | Hafendaten | Stellen Sie gemeinsam genutzten Speicher, eine externe Datenbank und einen externen Cache-Dienst der Harbor-Instanz bereit |
192.168.2.111 | / | Lastausgleichs-VIP, Port 8121 |
1.3 Serviceversion
Aufschlag | Versionsanforderungen | Installierte Version |
---|---|---|
Hafen | / | 2.3.5 |
Docker | 17.06.0+ | 19.03.8 |
Docker-compose | 1.18.0+ | v2.2.3 |
Redis | 6.0.16 | 6.2.7 |
PostgreSQL | v13.2 | 13.5 |
2. Host-Initialisierung
Harbor-Instanz initialisiert
-
Docker installieren
-
Installieren Sie Docker-Compose
-
Konfigurieren Sie Kernel-Parameter
2.1 Docker installieren
$ wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ yum install -y docker-ce
$ systemctl enable --now docker
$ systemctl status docker
$ cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": ["https://xcg41ct3.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://3hjcmqfe.mirror.aliyuncs.com"],
"log-driver": "json-file",
"log-opts": {
"max-size": "500m",
"max-file": "2"
}
}
EOF
$ systemctl daemon-reload
$ systemctl restart docker
exec-opts": ["native.cgroupdriver=systemd"], #Drive-Registrierungsspiegel: Spiegelbeschleunigungsadresse, mehrere Max-Dateien: Maximale Anzahl der Protokolle, die beibehalten werden sollen. Live-Wiederherstellung: Docker neu starten, ohne den Container neu zu starten, wird meistens verwendet auf k8s
2.2 Docker-Compose installieren
Installieren Sie Docker-Compose Version 1.18.0 oder höher, hier installieren wir Version v2.2.3.
$ wget https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64
$ mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
$ docker-compose version
Docker Compose version v2.2.3
2.3 Konfigurieren Sie die Kernel-Parameter
$ modprobe br_netfilter
$ cat >> /etc/sysctl.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1 #路由转发
EOF
$ sysctl -p
3. Verwenden Sie NFS, um externen gemeinsam genutzten Speicher bereitzustellen
Stellen Sie bei 192.168.2.110
der Bereitstellung des NFS-Dienstes gemeinsamen Speicher zur Nutzung durch Harbor1-Instanzen und Harbor2-Instanzen bereit. 192.168.2.110
Als NFS-Server ist die Harbor-Instanz der Client.
3.1 Stellen Sie den NFS-Server bereit
1) NFS installieren und starten
$ yum install -y nfs-utils
$ systemctl start nfs && systemctl enable nfs && systemctl status nfs
$ chkconfig nfs on #设置为开机自启
2) Erstellen Sie ein freigegebenes Verzeichnis
Die Daten des Kunden werden remote im freigegebenen Verzeichnis gespeichert.
$ mkdir -p /data/harbor_data
3) Konfiguration ändern
$ cat /etc/exports
/data/harbor_data 192.168.2.0/24(rw,no_root_squash) #允许哪个网段的客户端使用指定共享目录
$ exportfs -arv #使配置文件生效
exporting 192.168.2.0/24:/data/harbor_data
4) Starten Sie den NFS-Dienst neu
$ systemctl restart nfs
5) Überprüfen Sie die Informationen zum freigegebenen Verzeichnis
$ showmount -e localhost
export list for localhost:
/data/harbor_data
3.2 Client bereitstellen
Betrieb auf Hafen1 und Hafen2
$ yum -y install nfs-utils
$ systemctl start nfs-utils && systemctl enable nfs-utils && systemctl status nfs-utils
3.3 Der Client stellt gemeinsam genutzten NFS-Speicher bereit
Arbeiten Sie auf den Knoten „harbour1“ und „harbor2“, erstellen Sie das Speicherverzeichnis der Instanz und mounten Sie es dann in NFS.
$ mkdir -p /data/harbor_data
$ cat <<EOF >> /etc/fstab
192.168.2.110:/data/harbor_data /data/harbor_data nfs defaults 0 0
EOF
$ mount -a
Mount-Format: NFSIP: freigegebenes Verzeichnis, lokales Verzeichnis, NFS-Standardwerte 0 0
-
Testen Sie, ob es normal verwendet werden kann:
[root@harbor2 ~]# touch /data/harbor_data/test.txt
[root@harbor1 ~]# ls /data/harbor_data/
test.txt
4. Stellen Sie den Redis-Cache-Dienst bereit (Quellcode)
Dies ist eine Demonstrationsumgebung. Bitte führen Sie in der Praxis eine Hochverfügbarkeit und Datensicherung
生产环境
für den Redis-Dienst durch .
Stellen Sie beim 192.168.2.110
Bereitstellen des Redis-Cache-Dienstes externe Redis-Cache-Dienste für harbor1
und Instanzen bereit.harbor2
4.1 Laden Sie das Installationspaket herunter
$ wget https://download.redis.io/releases/redis-6.2.7.tar.gz
4.2 Abhängigkeitspakete installieren
$ yum install -y gcc gcc-c++
4.3 Kompilierung des Quellcodes
$ mkdir -p /app/
$ tar zxvf redis-6.2.7.tar.gz -C /app
$ cd /app/redis-6.2.7/
$ make #编译
$ make install #安装
4.4 Konfigurationsdatei ändern
Redis unterstützt standardmäßig nur die lokale Verwendung. Hier müssen mehrere Parameter geändert werden:
-
Extern anschließbar;
-
Redis-Startmethode;
-
Redis-Remote-Verbindungskennwort;
$ vim /app/redis-6.2.7/redis.conf
#bind 127.0.0.1 -::1 #75行,注释掉bind的行,允许任何主机连接;
daemonize yes #259行,将no修改为yes,使redis可以使用守护进程方式启动;
requirepass lidabai666 #903行,设置redis连接的auth密码(lidabai666)
4.5 Starten Sie den Redis-Dienst
Die vorherige Konfiguration bestand darin, den Daemon-Prozess zum Starten zu verwenden, sodass der Redis-Dienst direkt mit systemctl gestartet werden kann.
$ pwd
/app/redis-6.2.7
$ redis-server redis.conf
4.6 Serviceüberprüfung
1) Überprüfen Sie die Redis-Dienstversion
$ redis-cli -v
redis-cli 6.2.7
2) Hafen anzeigen
Redis lauscht standardmäßig auf Port 6379
$ ps aux | grep 6379
root 6200 0.1 0.2 162416 10020 ? Ssl 17:59 0:00 redis-server *:6379
root 6231 0.0 0.0 112720 984 pts/0 R+ 18:01 0:00 grep --color=auto 6379
3) Der Client stellt eine Verbindung zu Redis her
harbor1
und harbor2
als Redis-Client
$ which redis-cli #查看redis-cli工具位置
/usr/local/bin/redis-cli
[root@harbor-data redis-6.2.7]# scp /usr/local/bin/redis-cli 192.168.2.107:/usr/local/bin/
[root@harbor-data redis-6.2.7]# scp /usr/local/bin/redis-cli 192.168.2.108:/usr/local/bin/
Der Client verwendet das Tool redis-cli, um eine Verbindung zum Redis-Server herzustellen
[root@harbor1 ~]# redis-cli -h 192.168.2.110 -p 6379 -a lidabai666
Der Parameter -a gibt das Redis-Verbindungskennwort an
5. Stellen Sie den externen PostgreSQL-Speicherdienst bereit (Quellcode)
192.168.2.110
Installieren Sie den PostgreSQL-Datenbankdienst im Quellcode auf dem Host, um gemeinsamen Speicher für die Instanzen Harbor1 und Harbor2 bereitzustellen.
5.1 Erstellen Sie einen neuen Postgres-Benutzer
Standardmäßig kann der Superuser (Root) Postgresql nicht starten und muss den Benutzer Postgres manuell erstellen.
$ useradd postgres
$ id postgres
uid=1000(postgres) gid=1000(postgres) 组=1000(postgres)
5.2 Abhängige Pakete installieren
$ yum -y install readline-devel zlib-devel gcc zlib
5.3 Laden Sie das Quellcodepaket herunter und dekomprimieren Sie es
$ wget https://ftp.postgresql.org/pub/source/v13.5/postgresql-13.5.tar.gz --no-check-certificate
$ tar zxvf postgresql-13.5.tar.gz -C /app/
5.4 Kompilieren und installieren
$ cd /app/postgresql-13.5/
$ ./configure --prefix=/usr/local/postgresql
$ make && make install
5.5 Datenverzeichnis erstellen
$ mkdir -p /data/postgresql/data
$ chown -R postgres:postgres /usr/local/postgresql/
$ chown -R postgres:postgres /data/postgresql/data/
5.6 Postgres-Umgebungsvariablen festlegen
[root@harbor-data postgresql-13.5]# su - postgres
[postgres@harbor-data ~]$ vim + .bash_profile
PGHOME=/usr/local/postgresql #psql安装目录
export PGHOME
PGDATA=/data/postgresql/data #数据库目录
export PGDATA
PATH=$PATH:$HOME/bin:$HOME/.local/bin:$PGHOME/bin
export PATH
[postgres@harbor-data ~]$ source ./.bash_profile
[postgres@harbor-data ~]$ which psql
/usr/local/postgresql/bin/psql
Version anzeigen [postgres@harbor-data ~]$ psql -V psql (PostgreSQL) 13.5
5.7 Datenbank initialisieren
Aufgrund der Richtlinien der Red Hat-Distributionsfamilie ermöglichen PostgreSQL-Installationen keinen automatischen Start oder keine automatische Datenbankinitialisierung. Um die Datenbankinstallation abzuschließen, müssen Sie entsprechend Ihrer Distribution die folgenden Schritte ausführen:
[postgres@ceph3 ~]$ initdb
......
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using: #表示初始化成功
pg_ctl -D /data/postgresql/data -l logfile start
5.8 PostgreSQL starten
Führen Sie nach erfolgreicher Initialisierung den Startbefehl gemäß der Eingabeaufforderung aus!
[postgres@harbor-data ~]$ pg_ctl -D /data/postgresql/data -l logfile start
waiting for server to start.... done
server started
5.9 Postgresql-Passwort festlegen (ändern).
Standardmäßig ist für die lokale Anmeldung mit psql kein Kennwort erforderlich. Selbst wenn wir ein Kennwort festlegen, können wir uns ohne Kennwort anmelden. Es sollte sein, dass die lokale Einstellung in der Konfigurationsdatei pg_hba.conf auf „Vertrauen“ eingestellt ist. Aus Sicherheitsgründen ändern wir sie in „Passwort“, was bedeutet, dass wir uns mit dem Passwort anmelden können. (Wenn wir das Passwort vergessen, können wir dies auch Verwenden Sie diese Methode. Stellen Sie sie zunächst auf „Vertrauen“ ein, ändern Sie dann das Kennwort und setzen Sie es dann auf „Kennwort“.)
[postgres@harbor-data ~]$ psql
psql (13.5)
Type "help" for help.
postgres=# \password
Enter new password: #输入设置的密码 Lidabai666
Enter it again: #确认密码(再次输入)
postgres=# \q #退出
5.10 Remote-Anmeldung bei PostgreSQL einrichten
[postgres@harbor-data ~]$ vim /data/postgresql/data/postgresql.conf
listen_addresses = '*' #60行,监听所有地址
[postgres@harbor-data ~]$ vim + /data/postgresql/data/pg_hba.conf
local all all password
host all all 0.0.0.0/0 password
host all all ::1/128 password
5.10 Starten Sie PostgreSQL neu
$ pg_ctl -D /data/postgresql/data -l /data/postgresql/data/postgres.log restartwaiting for server to shut down.... done
server stopped
waiting for server to start.... done
server started
5.11 Datenbank erstellen
Die Datenbank, die Harbor 2.3.5 erstellen muss:
-
Notarserver
-
NotarUnterzeichner
-
Registrierung
Derzeit unterstützt Harbor nur PostgraSQL-Datenbanken. Sie müssen drei Datenbanken manuell erstellen: Registry, Notary_Signer und Notary_Servers auf dem externen PostgreSQL. Wenn Harbor startet, werden automatisch Tabellen unter den entsprechenden Datenbanken generiert.
Da es sich hauptsächlich um eine Demonstrationsumgebung handelt, ist der Benutzer der PostgreSQL-Datenbank der Superadministrator
postgres
. Wenn es sich um eine Produktionsumgebung handelt, wird empfohlen, einen neuen Benutzer zu erstellen und den drei Datenbanken Harbor, Notary_Signer und Notary_Server die entsprechenden Berechtigungen zu erteilen .
[postgres@harbor-data ~]$ psql
Password for user postgres: #输入密码
postgres=# create database registry;
CREATE DATABASE
postgres=# create database notary_signer;
CREATE DATABASE
postgres=# create database notary_servers;
CREATE DATABASE
postgres=# \l
5.12 Benutzer erstellen
postgres=# create user server with password 'lidabai666';
CREATE ROLE
postgres=# create user signer with password 'lidabai666';
CREATE ROLE
postgres=# \du
6. Lastausgleichseinstellungen (Nginx + Keepalived)
Verwenden Sie Keepalived und Nginx, um eine hohe Hafenverfügbarkeit zu erreichen. Installieren Sie den Keepalived-Dienst auf den Knoten
harbor1
undharbor2
, um VIP für den Lastausgleich bereitzustellen. Der Nginx-Dienst leitet Anfragen, die vom VIP kommen, an den Back-End-Servergruppenhafen weiter
6.1 Nginx und Keepalived installieren
Betrieb auf Hafen1 und Hafen2
$ wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
$ yum install -y nginx keepalived
$ yum -y install nginx-all-modules.noarch #安装nginx的stream模块
Nginx hat ab 1.9.0 das Steam-Modul hinzugefügt, mit dem Weiterleitung, Proxy, Lastausgleich usw. des vierschichtigen Protokolls implementiert werden. Für die binäre Installation von Nginx fügen Sie den Parameter --with-stream zu ./configure hinzu, um das Stream-Modul zu installieren.
6.2 Ändern Sie die Nginx-Konfigurationsdatei
在harbor1和harbor2的Nginx服务配置文件一样。
$ vim /etc/nginx/nginx.conf
user nginx;
worker_processes auto; #自动设置nginx的工作进程数量
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024; #工作进程的连接数
}
# 四层负载均衡,为两台harbor提供负载均衡
stream {
log_format main '$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent';
access_log /var/log/nginx/harbor-access.log main;
upstream harbor{
server 192.168.2.107:8021; # harbor1
server 192.168.2.108:8021; # harbor2
}
server {
listen 8121; #由于nginx与harbor节点复用,这个监听端口不能是8021,否则会冲突
proxy_pass harbor;
}
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
server {
listen 80 default_server;
server_name _;
location / {
}
}
}
Ermitteln Sie die Syntax der Nginx-Konfigurationsdatei
$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
6.3 Keepalived-Konfiguration ändern
本处以harbor1为keepalived服务的主节点,harbor2为keepalived的备节点。主备节点的keepalived配置文件不一样。
1) Masterknoten (Hafen1)
[root@harbor1 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
}
router_id master1
}
vrrp_instance lidabai {
state MASTER
interface ens33
mcast_src_ip:192.168.2.107
virtual_router_id 107
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.111/24 #虚拟VIP地址
}
track_script {
chk_nginx
}
}
##### 健康检查
vrrp_script chk_nginx {
script "/etc/keepalived/check_nginx.sh"
interval 2
weight -20
}
2) Standby-Knoten (Hafen2)
[root@harbor2 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
}
router_id master2
}
vrrp_instance lidabai {
state BACKUP
interface ens33
mcast_src_ip:192.168.2.108
virtual_router_id 107
priority 80 #权重
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.111/24
}
track_script {
chk_nginx
}
}
vrrp_script chk_nginx {
script "/etc/keepalived/check_nginx.sh"
interval 2
weight -20
}
6.4 Schreiben von Skripten zur Gesundheitsprüfung
在主备节点(harbor1和harbor2)同样操作。
$ vim /etc/keepalived/check_nginx.sh
#!/bin/bash
#1、判断Nginx是否存活
counter=`ps -C nginx --no-header | wc -l`
if [ $counter -eq 0 ]; then
#2、如果不存活则尝试启动Nginx
service nginx start
sleep 2
#3、等待2秒后再次获取一次Nginx状态
counter=`ps -C nginx --no-header | wc -l`
#4、再次进行判断,如Nginx还不存活则停止Keepalived,让地址进行漂移
if [ $counter -eq 0 ]; then
service keepalived stop
fi
fi
$ chmod +x /etc/keepalived/check_nginx.sh
6.5 Starten Sie den Dienst
Starten Sie zuerst den Nginx-Dienst auf den Knoten master1 und master2 und dann den Keepalived-Dienst
1) Starten Sie den Nginx-Dienst
[root@harbor1 ~]# systemctl enable --now nginx #启动nginx服务并设置开机自启
[root@harbor2 ~]# systemctl enable --now nginx
[root@harbor1 ~]# systemctl status nginx.service
[root@harbor2 ~]# systemctl status nginx.service
2) Starten Sie den Keepalived-Dienst
[root@harbor1 ~]# systemctl enable --now keepalived
[root@harbor2 ~]# systemctl enable --now keepalived
[root@harbor1 ~]# systemctl status keepalived.service
[root@harbor2 ~]# systemctl status keepalived.service
6.6 VIP anzeigen
在harbor1节点查看VIP是否成功绑定。
[root@harbor1 ~]# ip addr
......
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:f1:a3:65 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.107/24 brd 192.168.2.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.2.111/24 scope global secondary ens33 #VIP地址
valid_lft forever preferred_lft forever
inet6 fe80::80b0:1d7f:b5d4:19e8/64 scope link tentative dadfailed
......
VIP kann nicht über ifconfig angezeigt werden,
hostname -I
VIP kann jedoch auch über Befehle angezeigt werden.
7. Stellen Sie Harbor-Instanz 1 bereit
Stellen Sie den Hafendienst auf dem Host Harbor1 192.168.2.107 bereit
7.1 Laden Sie das Offline-Installationspaket herunter und dekomprimieren Sie es
$ mkdir /app #创建安装目录
$ wget https://github.com/goharbor/harbor/releases/download/v2.3.5/harbor-offline-installer-v2.3.5.tgz
$ tar zxvf harbor-offline-installer-v2.3.5.tgz -C /app/
7.2 Konfigurationsdatei ändern
Kopieren Sie die Konfigurationsdateivorlage in eine Konfigurationsdatei und ändern Sie dann die entsprechenden Parameter.
[root@harbor1 ~]# cd /app/harbor/
[root@harbor1 harbor]# cp harbor.yml.tmpl harbor.yml
[root@harbor1 harbor]# vim harbor.yml
hostname: 192.168.2.107
http:
port: 8021
#取消https安全加密访问方式:
#https:
# port: 443
# certificate: /your/certificate/path
# private_key: /your/private/key/path
## 启用外部代理,启用后hostname将不再使用
external_url: http:192.168.2.111:8121
## 配置共享存储,即挂载的NFS目录
data_volume: /data/harbor_data
_version: 2.3.0
## 配置外部数据库
external_database:
harbor:
host: 192.168.2.110 # 数据库主机地址
port: 5432 # 数据库端口
db_name: registry # 数据库名称
username: postgres # 连接该数据库的用户名
password: Lidabai666 # 连接数据库的密码
ssl_mode: disable
max_idle_conns: 2
max_open_conns: 0
notary_signer:
host: 192.168.2.110
port: 5432
db_name: notary_signer
username: postgres
password: Lidabai666
ssl_mode: disable
notary_server:
host: 192.168.2.110
port: 5432
db_name: notary_server
username: postgres
password: Lidabai666
ssl_mode: disable
##配置外部Redis实例:
external_redis:
host: 192.168.2.110:6379 #redis服务IP地址和端口号。如果redis是哨兵模式,这里应该是host_sentinel1:port_sentinel1,host_sentinel2:port_sentinel2
password: lidabai666 #连接外部redis服务的密码
# sentinel_master_set: #仅在使用 Sentinel模式(哨兵模式)时使用
registry_db_index: 1
jobservice_db_index: 2 #job服务的数据库索引
chartmuseum_db_index: 3 #chartmuseum插件的Redis索引
trivy_db_index: 5 #Trivy扫描器的数据索引
idle_timeout_seconds: 30 #超时时间
#启用metrics数据采集插件:
metric:
enabled: true
port: 9090
path: /metrics
7.3 Konfigurationsdateien in Komponenten einfügen
Fügen Sie den Inhalt der Konfigurationsdatei „harbour.yml“ in die Konfigurationsdateien jeder Komponente ein.
[root@harbor1 harbor]# ./prepare
7.4 Harbor installieren
Das Image wird während der Installation automatisch importiert und der Harbor-Dienst wird automatisch gestartet, wenn die Ausführung abgeschlossen ist.
[root@harbor1 harbor]# ./install.sh --with-trivy --with-chartmuseum
-Harbor wurde erfolgreich installiert und gestartet.- bedeutet, dass die Installation erfolgreich war!
7.5 Servicestatus prüfen
[root@harbor1 harbor]# docker-compose ps
7.6 Browser-Anmeldung bei der Harbor-Benutzeroberfläche
Verwenden Sie die IP + den Port des Instanzhosts, um im Browser Http://192.168.2.107:8021 auf die Hafen-Benutzeroberfläche zuzugreifen
Benutzername : admin
Passwort : Harbor12345
8. Stellen Sie Harbor-Instanz 2 bereit
Die Schritte sind die gleichen wie bei der Bereitstellung von Harbor-Instanz 1. Ändern Sie einfach den Wert „hostname“ in der Datei „harbour.yml“ in die IP-Adresse des aktuellen Hosts.
$ mkdir /app
$ wget https://github.com/goharbor/harbor/releases/download/v2.3.5/harbor-offline-installer-v2.3.5.tgz
$ tar zxvf harbor-offline-installer-v2.3.5.tgz -C /app/
$ scp 192.168.2.107:/app/harbor/harbor.yml /app/harbor/
$ vim /app/harbor/harbor.yml’
hostname: 192.168.2.108
9. Serviceüberprüfung
9.1 Browserzugriff VIP und Port
http://192.168.2.111:8121
Testen Sie, ob Image-Push, Pull, Benutzererstellung, Projekterstellung usw. in der Harbor-Benutzeroberfläche normal sind
9.2 Melden Sie sich über die Befehlszeile bei Harbor an
$ docker login http://192.168.2.111:8121 -u admin -p Harbor12345
Es tritt ein Fehler auf:
Fehlerantwort vom Daemon: Get https://192.168.2.111:8121/v2/: http: Server gab HTTP-Antwort an HTTPS-Client. Fügen Sie Parameter in der Docker-Konfigurationsdatei hinzu:
[root@harbor1 harbor]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://xcg41ct3.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://3hjcmqfe.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.2.111:8121"],
"log-driver": "json-file",
"log-opts": {
"max-size": "500m",
"max-file": "2"
}
}
[root@harbor1 harbor]# systemctl restart docker #然后重启docker
9.3 Schieben Sie das Bild nach Harbor
[root@harbor1 harbor]# docker pull alpine:3.16
[root@harbor1 harbor]# docker tag alpine:3.16 192.168.2.111:8121/library/alpine:3.16
[root@harbor1 harbor]# docker push 192.168.2.111:8121/library/alpine:3.16
Dann können Sie auf der Harbor-Benutzeroberfläche sehen, dass das Bild erfolgreich übertragen wurde!