Harbor2.1.2最新版本+自动生成SSL证+简单扫描

包下载.

https://github.com/goharbor/harbor/releases

docker-compose工具下载安装

https://github.com/docker/compose/releases/
chmod +x /usr/local/bin/docker-compose

修改yml文件

hostname: 192.168.8.181
#https:
#  # https port for harbor, default is 443
#  port: 443
#  # The path of cert and key files for nginx
#  certificate: /your/certificate/path
#  private_key: /your/private/key/path

完整配置

[root@abc138cc harbor]# egrep -v "#|^$" harbor.yml
hostname: 192.168.8.181
http:
  port: 80
harbor_admin_password: Harbor12345
database:
  password: root123
  max_idle_conns: 50
  max_open_conns: 1000
data_volume: /data
clair:
  updaters_interval: 12
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.0.0
proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - clair
    - trivy

启动

#加载harbor配置
./prepare
#安装harbor
./install.sh
docker-compose up -d 启动
docker-compose stop 停止
docker-compose restart 重新启动
客户端需要配置
[root@docker178 ~]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://0k0953tv.mirror.aliyuncs.com"], #加速器
  "insecure-registries": ["192.168.8.181:80"]  #私有仓储地址
}
客户端登录Harbor仓库
[root@JBJB harbor]# docker login 192.168.8.181:80
Username: jbjb
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
开启clair自动扫描
重新加载配置
[root@abc138cc harbor]# ./prepare --with-clair
重启生效
[root@abc138cc harbor]# docker-compose down  && docker-compose up -d

在这里插入图片描述

1.手动生成ssl证书 443
1 生成CA证书私钥
openssl genrsa -out ca.key 4096

2.生成CA证书
openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
 -key ca.key \
 -out ca.crt
 
3. 生成服务器证书,证书通常包含一个.crt文件和一个.key文件,例如yourdomain.com.crt和yourdomain.com.key
4. 生成私钥
openssl genrsa -out yourdomain.com.key 4096
5.生成证书签名请求(CSR)
openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
    -key yourdomain.com.key \
    -out yourdomain.com.csr
    
6. 生成一个x509 v3扩展文件
 cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=yourdomain.com
DNS.2=yourdomain
DNS.3=hostname
EOF

7.使用该v3.ext文件为您的Harbor主机生成证书
openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in yourdomain.com.csr \
    -out yourdomain.com.crt
    
7. 将服务器证书和密钥复制到Harbor主机上的certficates文件夹中
cp yourdomain.com.crt /data/cert/
cp yourdomain.com.key /data/cert/

8. 转换yourdomain.com.crt为yourdomain.com.cert,供Docker使用
openssl x509 -inform PEM -in yourdomain.com.crt -out yourdomain.com.cert
9. 将服务器证书,密钥和CA文件复制到Harbor主机上的Docker证书文件夹中。您必须首先创建适当的文件夹
cp yourdomain.com.cert /etc/docker/certs.d/yourdomain.com/
cp yourdomain.com.key /etc/docker/certs.d/yourdomain.com/
cp ca.crt /etc/docker/certs.d/yourdomain.com/
 如果将默认nginx端口443映射到其他端口,请创建文件夹/etc/docker/certs.d/yourdomain.com:port或/etc/docker/certs.d/harbor_IP:port
 
10. 重新启动Docker Engine
 systemctl restart docker
 开启ssl证书个人觉得harbor还不够成熟,就证书就要生成半天,希望官网尽早解决这个问题
 官网参考连接
 https://goharbor.io/docs/2.1.0/install-config/configure-https/#generate-a-certificate-authority-certificate
上面手动生成我也觉得非常麻烦推荐官网的自动生成证书镜像(goharbor/prepare:v2.1.2)
2使用harbor官网提供的镜像自动生成ssl证书
官网连接
https://goharbor.io/docs/2.1.0/install-config/configure-internal-tls/

docker run --rm -v /etc/cert:/hostfs goharbor/prepare:v2.1.2  gencert -p /path/to/internal/tls/cert

在这里插入图片描述

只需要harbor_internal_ca.crt harbor_internal_ca.key 即可

在这里插入图片描述在这里插入图片描述
重新加载配置

./prepare

重启生效

docker-compose down  && docker-compose up -d

在这里插入图片描述
客户端配置

#cat /etc/docker/daemon.json
{
  "registry-mirrors": ["https://0k0953tv.mirror.aliyuncs.com"],
  "insecure-registries": ["192.168.8.181"]
}

在这里插入图片描述
尝试登陆
在这里插入图片描述
一个demon镜像测试

[root@gitlab179 ~]# docker tag minio/minio:edge 192.168.8.181/kjbs/test:ea
[root@gitlab179 ~]# docker push 192.168.8.181/kjbs/test:ea
The push refers to repository [192.168.8.181/kjbs/test]
1dd1982f46a2: Pushed 
4b5aaffec37c: Pushed 
c0b95ab58f73: Pushed 
636749e96b85: Pushed 
6c81fc6c8bcb: Pushed 
00af10937683: Pushed 
3aa55ff7bca1: Pushed 
ea: digest: sha256:41cbbed28e254e654d4f831b1536a475d5f8321ac2b16b3d84eb1690077d2dfa size: 1786

在这里插入图片描述
由于是自己生成的证书被警告正常的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

live环境需要到相关证书机构购买,自己的生成的不能使用

要为 Harbor 自动申请 SSL 证书,可以使用 cert-manager 工具。cert-manager 是一个 Kubernetes 上的证书管理工具,可以自动为您的应用程序生成和更新 SSL 证书。 以下是为 Harbor 自动申请 SSL 证书的步骤: 1. 安装 cert-manager 工具。可以使用以下命令安装: ``` kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v1.0.4/cert-manager.yaml ``` 2. 创建一个 Issuer。Issuer 是一个 Kubernetes 资源,用于定义证书颁发机构 (CA) 的详细信息。可以使用以下 YAML 文件创建 Issuer: ```yaml apiVersion: cert-manager.io/v1 kind: Issuer metadata: name: letsencrypt namespace: cert-manager spec: acme: email: your-email@example.com server: https://acme-v02.api.letsencrypt.org/directory privateKeySecretRef: name: letsencrypt solvers: - http01: ingress: class: nginx ``` 在此 YAML 文件中,您需要将 `your-email@example.com` 替换为您的电子邮件地址。该文件使用 Let's Encrypt 作为证书颁发机构,因此您需要使用 Let's Encrypt 帐户来签署证书申请。此文件还配置了 HTTP-01 验器,以便 cert-manager 可以验您拥有该域名。 3. 创建一个 Certificate。Certificate 是一个 Kubernetes 资源,用于定义 SSL 证书的详细信息。可以使用以下 YAML 文件创建 Certificate: ```yaml apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: harbor-cert namespace: harbor spec: secretName: harbor-tls dnsNames: - your-domain.com issuerRef: name: letsencrypt kind: Issuer ``` 在此 YAML 文件中,您需要将 `your-domain.com` 替换为您要为其颁发证书的域名。此文件还指定了要使用的 Issuer。 4. 创建一个 Ingress。Ingress 是一个 Kubernetes 资源,用于将 HTTP(S) 流量路由到您的应用程序。可以使用以下 YAML 文件创建 Ingress: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: harbor-ingress namespace: harbor annotations: kubernetes.io/ingress.class: nginx cert-manager.io/issuer: "letsencrypt" spec: tls: - secretName: harbor-tls hosts: - your-domain.com rules: - host: your-domain.com http: paths: - path: / pathType: Prefix backend: service: name: harbor port: name: http ``` 在此 YAML 文件中,您需要将 `your-domain.com` 替换为您的域名。此文件还使用了之前创建的 Issuer 和 Certificate。 5. 部署 Harbor。可以使用 Helm 安装 Harbor,如以下命令所示: ``` helm install harbor harbor/harbor --version=1.5.2 -f harbor-values.yaml ``` 在此命令中,`harbor-values.yaml` 是一个 YAML 文件,用于配置 Harbor 的各种选项。 这样,您就可以使用 cert-manager 工具自动申请和更新 HarborSSL 证书了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值