harbor 部署入门指南(2)

简介: harbor 部署入门指南(2)

4. Harbor http 域名部署

4.1 清理杂质

$ docker-compose down
[+] Running 10/10
 ⠿ Container harbor-jobservice  Removed                                                                                                                                                                                                               10.5s
 ⠿ Container registryctl        Removed                                                                                                                                                                                                               10.5s
 ⠿ Container nginx              Removed                                                                                                                                                                                                                0.5s
 ⠿ Container harbor-portal      Removed                                                                                                                                                                                                                0.4s
 ⠿ Container harbor-core        Removed                                                                                                                                                                                                               10.5s
 ⠿ Container redis              Removed                                                                                                                                                                                                                1.0s
 ⠿ Container harbor-db          Removed                                                                                                                                                                                                                0.9s
 ⠿ Container registry           Removed                                                                                                                                                                                                               11.1s
 ⠿ Container harbor-log         Removed                                                                                                                                                                                                               10.7s
 ⠿ Network harbor_harbor        Removed 
$ rm -rf /data/*
$ rm -rf common          

浏览器界面清理缓存

4.2 修改配置

a. harbor.yaml配置文件只修改了hostname参数

hostname: ghost.harbor.com

b.

$ echo "192.168.211.70 ghost.harbor.com" >> /etc/hosts
$ nslookup ghost.harbor.com
Server:   127.0.0.53
Address:  127.0.0.53#53
Non-authoritative answer:
Name: ghost.harbor.com
Address: 192.168.211.70

c.

docker配置文件/etc/docker/daemon.json 参数insecure-registries192.168.211.70修改为ghost.harbor.com

$ cat /etc/docker/daemon.json 
{
   "exec-opts": ["native.cgroupdriver=systemd"],
   "log-driver": "json-file",
   "log-opts": {
   "max-size":  "100m"
    },
   "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ],
   "insecure-registries": [
       "ghost.harbor.com"
  ]
 }

并重启docker

systemctl daemon-reload && systemctl restart docker

4.3 harbor安装

$ ./prepare 
$ ./install.sh 
$ docker ps
$ docker-compose ps

4.3 测试结果

4.3.1 仓库登陆

$ docker login ghost.harbor.com
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded

4.3.2 界面登陆

本机windows配置

C:\Windows\System32\drivers\etc\hosts
192.168.211.70 ghost.harbor.com

访问:http://ghost.harbor.com

用户名/密码:admin/Harbor12345

登陆成功

1832b220aa754cd18c504acc7686a560.png

4.3.3 镜像推送

$ docker tag busybox:latest ghost.harbor.com/library/busybox:latest
$ docker push ghost.harbor.com/library/busybox:latest
The push refers to repository [ghost.harbor.com/library/busybox]
cfd97936a580: Pushed 
latest: digest: sha256:febcf61cd6e1ac9628f6ac14fa40836d16f3c6ddef3b303ff0321606e55ddd0b size: 527

Harbor http域名访问的部署结束。

5. Harbor https ip访问部署

默认情况下,Harbor 不附带证书。可以在没有安全性的情况下部署 Harbor,以便您可以通过 HTTP 连接到它。但是,仅在没有连接到外部 Internet 的气隙测试或开发环境中才可接受使用 HTTP。在公有环境中使用 HTTP 会使您面临中间人攻击。在生产环境中,始终使用 HTTPS。如果您启用 Content Trust with Notary 以正确签署所有图像,则必须使用 HTTPS。


要配置 HTTPS,您必须创建 SSL 证书。您可以使用受信任的第三方 CA 签署的证书,也可以使用自签名证书。本节介绍如何使用 OpenSSL创建 CA,以及如何使用您的 CA 签署服务器证书和客户端证书。您可以使用其他 CA 提供商,例如 Let’s Encrypt。


以下过程假设您的 Harbor 注册表的主机名是192.168.211.70,并且其 DNS 记录指向您运行 Harbor 的主机。

5.1 清理杂质

$ docker-compose down
[+] Running 10/10
 ⠿ Container harbor-jobservice  Removed                                                                                                                                                                                                               10.5s
 ⠿ Container registryctl        Removed                                                                                                                                                                                                               10.5s
 ⠿ Container nginx              Removed                                                                                                                                                                                                                0.5s
 ⠿ Container harbor-portal      Removed                                                                                                                                                                                                                0.4s
 ⠿ Container harbor-core        Removed                                                                                                                                                                                                               10.5s
 ⠿ Container redis              Removed                                                                                                                                                                                                                1.0s
 ⠿ Container harbor-db          Removed                                                                                                                                                                                                                0.9s
 ⠿ Container registry           Removed                                                                                                                                                                                                               11.1s
 ⠿ Container harbor-log         Removed                                                                                                                                                                                                               10.7s
 ⠿ Network harbor_harbor        Removed 
$ rm -rf /data/*
$ rm -rf common          

5.2 修改配置

5.2.1 harbor.yaml

harbor.yaml配置文件修改hostname参数并配置了https相关参数

$ cat harbor.yml|grep -v '#' | grep -v '^$'
hostname: 192.168.211.70 
http:
  port: 80
https:
  port: 443
  certificate: /data/cert/192.168.211.70.crt
  private_key: /data/cert/192.168.211.70.key
harbor_admin_password: Harbor12345
database:
  password: root123
  max_idle_conns: 100
  max_open_conns: 900
data_volume: /data
trivy:
  ignore_unfixed: false
  skip_update: false
  insecure: false
jobservice:
  max_job_workers: 10
notification:
  webhook_job_max_retry: 10
chart:
  absolute_url: disabled
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /var/log/harbor
_version: 2.3.0
proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - trivy

5.2.2 /etc/docker/daemon.json

docker配置文件/etc/docker/daemon.json 参数insecure-registries 要把它去掉。

$ cat /etc/docker/daemon.json 
{
   "exec-opts": ["native.cgroupdriver=systemd"],
   "log-driver": "json-file",
   "log-opts": {
   "max-size":  "100m"
    },
   "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
 }

并重启docker

systemctl daemon-reload && systemctl restart docker

5.2.3 生成证书颁发机构证书

在生产环境中,您应该从 CA 获取证书。在测试或开发环境中,您可以生成自己的 CA。要生成 CA 证书,请运行以下命令。

生成 CA 证书私钥

$ openssl genrsa -out ca.key 4096
Generating RSA private key, 4096 bit long modulus (2 primes)
..............++++
.................................++++
e is 65537 (0x010001)

生成 CA 证书

调整-subj选项中的值以反映您的组织。如果使用 FQDN 连接 Harbor 主机,则必须将其指定为公用名 ( CN) 属性。

openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.211.70" \
 -key ca.key \
 -out ca.crt

5.2.4 生成服务器证书

证书通常包含一个.crt文件和一个.key文件,例如,192.168.211.70.crt192.168.211.70.key.

生成私钥

openssl genrsa -out 192.168.211.70.key 4096

生成证书签名请求 (CSR)

调整-subj选项中的值以反映您的组织。如果使用 FQDN 连接 Harbor 主机,则必须将其指定为公用名 ( CN) 属性并在密钥和 CSR 文件名中使用它。

openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.211.70" \
    -key 192.168.211.70.key \
    -out 192.168.211.70.csr

生成 x509 v3 扩展文件

无论您是使用 FQDN 还是 IP 地址连接到您的 Harbor 主机,您都必须创建此文件,以便为您的 Harbor 主机生成符合主题备用名称 (SAN) 和 x509 v3 的证书扩展要求。替换DNS条目以反映您的域。


使用该extfile.cnf文件为您的 Harbor 主机生成证书

将192.168.211.70CRS 和 CRT 文件名中的 替换为 Harbor 主机名

echo subjectAltName = IP:192.168.211.70 > extfile.cnf
openssl x509 -req -sha512 -days 3650 \
    -extfile extfile.cnf \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in 192.168.211.70.csr \
    -out 192.168.211.70.crt

5.2.5 向 Harbor 和 Docker 提供证书

生成后ca.crt192.168.211.70.crt192.168.211.70.key文件,必须将它们提供给Harbor and Docker,和重新配置harbor使用它们。

a. 将服务器证书和密钥复制到 Harbor 主机上的 certficates 文件夹中

mkdir /data/cert
cp 192.168.211.70.crt /data/cert/
cp 192.168.211.70.key /data/cert/

b. 转换192.168.211.70.crt为192.168.211.70.cert,供 Docker 使用

Docker 守护进程将.crt文件解释为 CA 证书,将.cert文件解释为客户端证书。

openssl x509 -inform PEM -in 192.168.211.70.crt -out 192.168.211.70.cert

c. 将服务器证书、密钥和 CA 文件复制到 Harbor 主机上的 Docker 证书文件夹中。您必须首先创建适当的文件夹。

mkdir -p /etc/docker/certs.d/192.168.211.70/
cp 192.168.211.70.cert /etc/docker/certs.d/192.168.211.70/
cp 192.168.211.70.key /etc/docker/certs.d/192.168.211.70/
cp ca.crt /etc/docker/certs.d/192.168.211.70/

如果您将默认nginx端口 443映射到其他端口,请创建文件夹/etc/docker/certs.d/192.168.211.70:port/etc/docker/certs.d/harbor_IP:port

d. 重启docker

systemctl daemon-reload && systemctl restart docker

5.2.6 操作系统级别信任证书

e. 当 Docker 守护程序在某些操作系统上运行时,您可能需要在操作系统级别信任证书

例如,运行以下命令

ubuntu

$ cp 192.168.211.70.crt /usr/local/share/ca-certificates/192.168.211.70.crt 
$ update-ca-certificates
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

Red Hat (CentOS etc):

$ cp yourdomain.com.crt /etc/pki/ca-trust/source/anchors/yourdomain.com.crt
$ update-ca-trust

5.3 部署或重新配置 Harbor

如果您尚未部署 Harbor,请参阅 配置 Harbor YML 文件以获取有关如何通过在 中指定hostname和https属性来配置 Harbor 以使用证书的信息harbor.yml。


如果您已经使用 HTTP 部署了 Harbor 并希望将其重新配置为使用 HTTPS,请执行以下步骤。a. 运行prepare脚本以启用 HTTPS

./prepare

b. 如果 Harbor 正在运行,请停止并删除现有实例

您的图像数据保留在文件系统中,因此不会丢失任何数据。

docker-compose down -v

c. 重启

docker-compose up -d
相关文章
|
4月前
|
Java Maven 数据安全/隐私保护
06-nexus私仓环境搭建
本文介绍Nexus Repository Manager OSS版的安装与配置,包括JDK环境准备、Nexus部署、用户创建、启动服务及Web界面登录。详细说明如何搭建Maven、Docker私仓,实现Jar包上传、本地仓库迁移、项目配置使用私仓,以及Docker镜像的推送拉取。同时简述npm、helm等其他类型仓库的启用方法,适用于企业级制品管理。
|
运维 Kubernetes 监控
什么是Kubeasz
Kubeasz(Kubernetes Easy Setup with Ansible)是一个开源项目,旨在简化Kubernetes集群的部署过程。它使用Ansible作为基础设施管理工具,通过预定义的剧本和配置模板,自动化整个K8s集群的搭建流程。以下是对Kubeasz的详细介绍: ### 一、Kubeasz的特点 1. **快速部署**:Kubeasz支持一键部署Kubernetes集群,大大节省了运维成本和时间。 2. **高可用性**:可以部署高可用的Kubernetes集群,确保系统的稳定性和可靠性。 3. **可扩展性**:支持容器化部署,可以方便地扩展集群规模,满足不同的业务需
2066 3
|
网络协议 安全 网络虚拟化
openvpn-as的三种安装方式
OpenVPN 是一个开源的VPN软件包,支持多种操作系统,可创建基于SSL/TLS的安全隧道。它分为社区版
3184 2
|
安全 搜索推荐 Android开发
深入探索Android与iOS的系统架构差异
【10月更文挑战第29天】 在当今的智能手机市场中,Android和iOS无疑是两大主流操作系统。本文旨在深入探讨这两个系统的架构差异,从底层的操作系统设计到用户界面的呈现,以及它们如何影响了开发者和用户的体验。通过对比分析,我们可以更清晰地理解这两种平台的优势与局限,为开发者在选择开发平台时提供有价值的参考,同时也为用户选择设备提供一定的指导。
512 2
cephFS客户端使用指南
关于如何手动和自动挂载cephFS客户端的详细指南,包括移除认证文件、创建用户、导出钥匙环和key文件、挂载cephFS、验证用户权限以及设置开机自动挂载的三种方法。
733 7
|
缓存 安全 Ubuntu
基于Alpine构建轻量级带有cURL功能的Docker镜像
基于Alpine构建轻量级带有cURL功能的Docker镜像
基于Alpine构建轻量级带有cURL功能的Docker镜像
|
安全 数据安全/隐私保护 Docker
harbor使用http的解决办法
harbor使用http的解决办法
1336 0
|
XML 运维 JavaScript
winsw 是什么工具
【6月更文挑战第9天】winsw 是什么工具
2322 6
|
编解码 前端开发
Typora 0.9.78 markdown 满屏显示,去除两边的留白
Typora 0.9.78 markdown 满屏显示,去除两边的留白
437 0
|
jenkins Shell 持续交付
Jenkins 入门
Jenkins 入门
355 0

热门文章

最新文章