Helm 配置自签证书并推送到 Harbor

配置自签证书

配置 helm registry login 命令需要的证书

oci在v380中的弃用和行为变化

从Helm 3开始,可以使用具有 OCI支持的容器注册中心来存储和共享chart包。从Helm v3.8.0开始,默认启用OCI支持。

即可以通过 Helm 将 chart 推到 Harbor 等具有 OCI 支持的容器注册中心。

如果 Harbor 使用自签证书开启了 https 的话,helm registry login <harbor address> 命令会执行失败,需要配置自签证书才能 login。

Helm 文档上有如下说明:

helm registry login 命令现在采用与Docker CLI相同的结构存储凭证。Helm和Docker CLI的注册表配置使用一样的路径。

Docker CLI 的注册表配置的路径为:/etc/docker/certs.d,只需要将自签证书放到此目录下即可,目录结构:

harbor 内网主机名以 192.168.20.106 为例

etc
└─docker
    └─certs.d
        └─192.168.20.106
           ├─192.168.20.106.cert
           ├─192.168.20.106.key
           └─ca.crt

配置 helm push/pull 命令需要的证书

方式一:每次都指定 --ca-file 参数

helm push <chart_name_and_version>.tgz oci://<harbor_address>/<project> --ca-file ca.crt

方式二:Linux 安装根证书

  1. 将 ca 证书拷贝到 /etc/pki/ca-trust/source/anchors/ 文件夹中:
cp ca.crt /etc/pki/ca-trust/source/anchors/
 
  1. 运行 update-ca-trust,更新系统的证书
update-ca-trust
  1. 推送到 oci 注册中心
helm push <chart_name_and_version>.tgz oci://<harbor_address>/<project>

推送到 Harbor 等基于 OCI 的注册中心

Helm doc | 使用基于OCI的注册中心 Harbor doc | 使用 OCI Helm 图表

  1. 登录注册中心
helm registry login <harbor_address>
  1. 拉取 chart
helm pull oci://<harbor_address>/<project>/<chart_name> --version <version>
 
# 例如
# helm pull oci://demo.goharbor.io/oci/demo --version 0.1.0
  1. 推送 chart
helm push <chart_name_and_version>.tgz oci://<harbor_address>/<project>
 
# 例如
# helm push example-0.1.0.tgz oci://demo.goharbor.io/oci
  1. 安装 chart
helm install myrelease oci://<harbor_address>/<project>/<chart_name> --version <chart_version>