当前位置:   article > 正文

微服务 & 云原生:搭建 Harbor 私有镜像仓库_harbor 微服务

harbor 微服务

Harbor官网

写在文前: 本文中用到机器均为虚拟机 CentOS-7-x86_64-Minimal-2009 镜像。

基础设施要求

在这里插入图片描述
虚拟机配置达到最低要求即可,本次系统中使用 docker 24.0.4、docker-compose 1.29.2。docker 及 docker-compose 的安装可以参考上篇文章 微服务 & 云原生:搭建 K8S 集群 中的 基础准备 部分。

下载 Harbor

官方有两种安装方式:在线(Online installer)和离线(Offline installer),这里推荐安装离线安装包,在 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
  • 1
  • 2
  • 3
  • 4
  • 5

可以看到解压后的文件列表:
在这里插入图片描述

生成 CA 证书

新增本地域名 ip 映射,我这里安装 harbor 的机器的 ip 地址为 192.168.65.134

vim /etc/hosts

# 添加 ip 与自定义域名映射,域名可以随便设置
192.168.65.134 harbor.kubemanagement.com
  • 1
  • 2
  • 3
  • 4

新建一个 certs 文件夹:

mkdir certs
  • 1

在这里插入图片描述

生成 CA

# 1.
cd certs
openssl genrsa -out ca.key 4096
  • 1
  • 2
  • 3
# 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
  • 1
  • 2
  • 3
  • 4
  • 5
# 3. 
openssl genrsa -out harbor.kubemanagement.com.key 4096
  • 1
  • 2
# 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
  • 1
  • 2
  • 3
  • 4
  • 5
# 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 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
# 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
# 7. 
mkdir -p /data/cert/

cp harbor.kubemanagement.com.crt /data/cert/
cp harbor.kubemanagement.com.key /data/cert/
  • 1
  • 2
  • 3
  • 4
  • 5
# 8.
openssl x509 -inform PEM -in harbor.kubemanagement.com.crt -out harbor.kubemanagement.com.cert
  • 1
  • 2
# 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/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
# 10.
systemctl restart docker
  • 1
  • 2

配置安装 Harbor

# 进入解压目录,如果目录里有 harbor.yml 就直接修改,我这里只有 harbor.yml.tmpl
cd harbor
cp harbor.yml.tmpl harbor.yml

vim harbor.yml
  • 1
  • 2
  • 3
  • 4
  • 5

主要注意下面几个地方,分别是自定义的域名,保存 CA 的位置以及默认的登录密码:
在这里插入图片描述
修改完成后直接运行 install 脚本:

./install.sh
  • 1

在这里插入图片描述
成功安装后提示:
在这里插入图片描述
使用 docker-compose 查看运行情况:

docker-compose ps
  • 1

在这里插入图片描述
没有问题的话,全部处于 healthy 状态。

测试

浏览器输入域名或 ip 有如下界面,默认用户名为 admin,密码为 harbor.yml 文件中设置的:
在这里插入图片描述
登录系统后新建一个私有项目 kubemanagment:
在这里插入图片描述
在这里插入图片描述
此时,可以测试上传镜像,首先(必须)登陆 docker:

docker login harbor.kubemanagement.com
  • 1

在这里插入图片描述
按照 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

此时在网页中可以看到已经存在 kubemanagment/busybox 了:
在这里插入图片描述
到这里,Harbor 基本安装配置完成。

至于上面的 kubemanagment/mysql,是在测试 k8s 集群环境下测试 harbor 推送的,具体过程如下:

基础 k8s 集群环境为 微服务 & 云原生:搭建 K8S 集群,为简单起见,这里只包含一个 master 节点和一个 worker 节点。master 节点 ip 信息如下:

ip: 192.168.65.130
  • 1

在 master 的 hosts 中增加映射:

vim /etc/hosts
192.168.65.134 harbor.kubemanagement.com
  • 1
  • 2

为了在 master 节点上推送镜像,直接使用 docker login harbor.kubemanagement.com 登录是不行的,会报错:
在这里插入图片描述
需要把 harbor 所在的机器上的 CA 信息拷贝到 master 节点中:

# 在 master主机上
cd /etc/docker/

# 192.168.65.134 为 harbor 所在主机
scp -r root@192.168.65.134:/etc/docker/certs.d .
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
随后重启 docker:

systemctl restart docker
  • 1

接着

# 这里的 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
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/534698
推荐阅读
相关标签
  

闽ICP备14008679号