该笔记将记录:在 Kubernetes Cluster 中,部署 Harbor 的方法,以及相关问题的解决办法。
针对整个安装过程,我们还是遇到若干问题,相关部分将详细记录;
系统架构
Start with Harbor 2.5.3
Harbor docs | Deploying Harbor with High Availability via Helm
harbor-helm/_helpers.tpl at master · goharbor/harbor-helm · GitHub
通过 Nginx Ingress 组件,我们来暴露 HTTP 接口,以提供访问;
通过 cert-manager 组件,来自动申请证书,以提供 HTTPS 访问;
我们习惯于拉取 Chart 的 .tgz 文件,并生成 values.yaml 文件,以进行配置的 Git 管理;
部署过程
添加仓库,并获取 Chart 文件:
# helm repo add harbor https://helm.goharbor.io # helm repo update # helm pull harbor/harbor # CHART 1.9.3, APP 2.5.3 # helm show values ./harbor-1.9.3.tgz > harbor-1.9.3.helm-values.yaml
修改 harbor-1.9.3.helm-values.yaml 文件:
# 针对场景,配置不同参数,这里仅列举我们需要配置的关键参数: expose.type: ingress expose.tls.certSource: secret # 我们使用 cert-manager 申请证书; expose.tls.secret.secretName: harbor-core-tls expose.tls.secret.notarySecretName: harbor-notary-tls expose.ingress.hosts.core: expose.ingress.hosts.notary: expose.ingress.annotations: kubernetes.io/ingress.class: nginx expose.ingress.annotations: cert-manager.io/cluster-issuer: letsencrypt externalURL: # 针对我们的场景,需要与 expose.ingress.hosts.core 相同 persistence.*.storageClass: persistence.*.size: harborAdminPassword: database.type: internal database.internal.password: redis.type: external redis.external.addr: redis.external.password:
安装(或升级)服务:
# helm --namespace registry-server \ install registry-server ./harbor-1.9.3.tgz \ -f harbor-1.9.3.helm-values.yaml \ --create-namespace # helm --namespace registry-server \ upgrade registry-server ./harbor-1.9.3.tgz \ -f harbor-1.9.3.helm-values.yaml
… pq: unknown authentication response: 10 …
[bitnami/harbor] Unable to use notary and clair with an external PGSQL12 DB · Issue #4574
问题描述:组件产生如下错误信息
# kubectl logs registry-server-harbor-notary-signer-db48665bb-x2tcx ... {"level":"fatal","msg":"failed to create a new keydbstore: pq: unknown authentication response: 10","time":"2022-07-22T10:37:54Z"} # kubectl logs registry-server-harbor-notary-server-88fd54dcc-tdb2l ... {"level":"info","msg":"Using postgres backend","time":"2022-07-22T10:42:43Z"} {"level":"fatal","msg":"Error starting postgres driver: pq: unknown authentication response: 10","time":"2022-07-22T10:42:43Z"}
环境信息:
- Harbor CHART 1.9.3, APP 2.5.3
原因分析:
我们 PostgreSQL 14 版本,对于 Harboar 较新;
解决方案:
- 我们改为使用 Harboar 内置的 PostgreSQL 数据库。
- 后来,我们尝试使用 PostgreSQL 11 版本,也能成功运行;
Start with Harbor 2.10.0
Chart 1.14.0, App 2.10.0
# 12/08/2024 通过 Helm Chart 将 Harbor 部署到 Kubernetes 集群。最终的目的是为了将 Installer 部署 Harbor 迁移到 Kubernetes 中(鉴于官方未提供直接的升级方法);
… FATAL: password authentication failed for user “postgres” …
Misbehaviour during upgrade · Issue #1674 · goharbor/harbor-helm
Start with Harbor 2.11.1
Chart 1.15.1 App 2.11.1
# 11/29/2024 通过 Helm Chart 将 Harbor 部署到 Kubernetes 集群;
repository:
storageClass:
size:
expose:
harborAdminPassword:
externalURL:
updateStrategy: | 我们使用 Recreate 策略,原因在于我们使用快存储,且 Pod 是分散的,否则将发生存储抢占而无法成功运行;
s3aws: PathStyleDomainForbidden: The bucket you are attempting to access must be addressed using COS virtual-styled domain