编辑
2024-01-10
计算机技术
00
请注意,本文编写于 315 天前,最后修改于 315 天前,其中某些信息可能已经过时。

目录

一、我在使用Image Tag Parameter获取harbor上镜像列表的时候,有报错
二、我在解决了证书问题后,使用Image Tag Parameter获取harbor上镜像列表,依然有报错

我在k8s集群上搭建了一个harbor,使用https协议,然后在对接Jenkins的Image Tag Parameter组件时遇到了一些问题。

一、我在使用Image Tag Parameter获取harbor上镜像列表的时候,有报错

报错信息

HTTP status: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

这个是因为Java SSL/TLS无法找到到请求目标的有效证书路径,解决方式是使用keytool将证书文件导入到 Java 的信任库中

keytool介绍

keytool是Java平台的一个密钥和证书管理工具,它是Java开发工具包(JDK)的一部分

执行命令:
keytool -import -trustcacerts -alias harbor -file /opt/crt/ca.crt -keystore $JAVA_HOME/lib/security/cacerts

命令解释

  • -import: 表示执行证书导入操作。
  • -trustcacerts: 表示将证书视为受信任的 CA 证书。
  • -alias harbor: 为导入的证书设置别名为 harbor。
  • -file /opt/crt/ca.crt: 指定证书文件的路径。
  • -keystore $JAVA_HOME/lib/security/cacerts: 指定 Java 信任库的路径,通常是 $JAVA_HOME/lib/security/cacerts
  • 对于 Java Keystore 文件,默认情况下,密码是 "changeit"。这是 Java 安装程序为 Keystore 文件设定的默认密码

二、我在解决了证书问题后,使用Image Tag Parameter获取harbor上镜像列表,依然有报错

报错信息

HTTP status: Unauthorized

这是因为Image Tag Parameter本身存在bug,因为我这边harbor的实际地址为https://core.harbor.domain:30108/ ,但是Image Tag Parameter组件在获取harbor的token的时候,请求的却是https://core.harbor.domain:443/

为了解决这个问题,我设置了NAT端口转发iptables -t nat -A PREROUTING -p tcp -d 192.168.11.166 --dport 443 -j DNAT --to-destination 192.168.11.166:30108

命令解释

  • 在PREROUTING钩子上设置了端口转发规则
  • 192.168.11.166是core.harbor.domain对应的IP,记录于/etc/hosts文件

最后问题就得以解决了

本文作者:枣子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!