「Kubernetes」- 部署 Harbor 服务

  CREATED BY JENKINSBOT

问题描述

该笔记将记录:在 Kubernetes Cluster 中,部署 Harbor 的方法,以及相关问题的解决办法。

解决方案

针对整个安装过程,我们还是遇到若干问题,相关部分将详细记录;

系统架构

部署概述

通过 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

服务迁移

FIXME !!! Harboar !!! 从 Docker Compose 迁移到 Kubernetes 环境;

常见问题汇总

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"}

环境信息:
1)Harbor CHART 1.9.3, APP 2.5.3

原因分析:
我们 PostgreSQL 14 版本,对于 Harboar 较新;

解决方案:
1)我们改为使用 Harboar 内置的 PostgreSQL 数据库。
2)后来,我们尝试使用 PostgreSQL 11 版本,也能成功运行;

参考文献

Harbor docs | Deploying Harbor with High Availability via Helm
harbor-helm/_helpers.tpl at master · goharbor/harbor-helm · GitHub