마이크로서비스 및 클라우드 네이티브: Harbor Private Mirror Warehouse 구축

하버 공식 홈페이지

기사 이전에 작성됨: 이 기사에서 사용된 머신은 모두 가상 머신 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를 참조하십시오 .

하버 다운로드

공식 설치 방법은 온라인(온라인 설치 프로그램)과 오프라인(오프라인 설치 프로그램)의 두 가지가 있습니다. 여기에서 오프라인 설치 패키지를 설치하는 것이 좋습니다. https://github.com/goharbor/harbor/tags 에서 해당 버전을 선택하여 다운로드하십시오 . 여기에서 v2 .8.3 버전, 즉 harbour-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 매핑을 추가하면 harbour를 설치한 머신의 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.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이고 암호는 harbour.yml 파일에 설정되어 있습니다. 시스템에 로그인한
여기에 이미지 설명 삽입
후 새 개인 프로젝트 kubemanagment를 만듭니다.
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
이 시점에서 , 이미지 업로드를 테스트할 수 있습니다. 먼저 도커에 로그인해야 합니다.

docker login harbor.kubemanagement.com

여기에 이미지 설명 삽입
Harbor의 요구 사항에 따라 이미지를 표시하고 푸시합니다.
여기에 이미지 설명 삽입
여기서는 단순히 busybox 이미지를 예로 들어 보겠습니다.

# 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가 이미 존재하는 것을 볼 수 있습니다.
여기에 이미지 설명 삽입
여기에서 Harbour의 기본 설치 및 구성이 완료되었습니다.

위의 kubemanagment/mysql의 경우 k8s 클러스터 환경에서 하버 푸시를 테스트했으며 구체적인 프로세스는 다음과 같습니다.

기본 k8s 클러스터 환경은 마이크로서비스 및 클라우드 네이티브입니다. 단순성을 위해 K8S 클러스터를 구축하기 위해 여기에는 하나의 마스터 노드와 하나의 작업자 노드만 포함됩니다. 마스터 노드 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 .

여기에 이미지 설명 삽입
그런 다음 도커를 다시 시작합니다.

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

여기에 이미지 설명 삽입

Supongo que te gusta

Origin blog.csdn.net/by6671715/article/details/132137459
Recomendado
Clasificación