使用Helm部署Harbor
Posted 品鉴初心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Helm部署Harbor相关的知识,希望对你有一定的参考价值。
使用Helm部署Harbor
Helm安装harbor
Harbor官网各版本部署文档有需要的同学可以关注下,本次安装使用Traefik暴露服务,存储使用nfs动态存储,证书使用自签证书,域名已做解析,当然你也可以使用本地host解析。
基本配置
$ helm repo add harbor https://helm.goharbor.io
$ helm search repo harbor/harbor --versions
$ helm pull harbor/harbor --version 1.7.2 --untar
expose:
# 设置暴露服务的方式。这里选择 clusterIP
type: clusterIP
tls:
# 以secret的形式
certSource: secret
secret:
# 如果你想使用自己的 TLS 证书和私钥,请填写这个 secret 的名称,这个 secret 必须包含名为 tls.crt 和 tls.key 的证书和私钥文件,如果没有设置则会自动生成证书和私钥文件。
secretName: "tls-harbor"
# 默认 Notary 服务会使用上面相同的证书和私钥文件,如果你想用一个独立的则填充下面的字段,注意只有类型是 ingress 的时候才需要。
notarySecretName: "tls-harbor"
clusterIP:
# The name of ClusterIP service
name: harbor
# Annotations on the ClusterIP service
annotations:
ports:
# The service port Harbor listens on when serving with HTTP
httpPort: 80
# The service port Harbor listens on when serving with HTTPS
httpsPort: 443
# The service port Notary listens on. Only needed when notary.enabled
# is set to true
notaryPort: 4443
externalURL: https://harbor.devops.test.com
persistence:
persistentVolumeClaim:
registry:
# 指定"storageClass",或者使用默认的 StorageClass 对象,设置成"-"禁用动态分配挂载卷
storageClass: "managed-nfs-storage"
# 存放镜像,根据自身需求设置存储大小,建议500Gi
size: 10Gi
chartmuseum:
storageClass: "managed-nfs-storage"
jobservice:
storageClass: "managed-nfs-storage"
database:
storageClass: "managed-nfs-storage"
redis:
storageClass: "managed-nfs-storage"
trivy: # 镜像漏扫
storageClass: "managed-nfs-storage"
自签证书
关于自签证书生成,具体步骤可参考使用docker-compose部署最新版Harbor v2.3.2证书生成章节,这里不再重复叙述。
说明:如果后面需要更换证书,可直接将要更换的secret
资源删除,然后再新创建即可,注意secret名字保持一致。
$ kubectl delete secret tls-harbor -n harbor
$ kubectl create secret tls tls-harbor --cert=tls.crt --key=tls.key -n harbor
部署harbor
$ kubectl create ns harbor
$ kubectl create secret tls tls-harbor --cert=tls.crt --key=tls.key -n harbor
$ cd harbor
$ helm install harbor -f wutf-values.yaml . -n harbor
# helm harbor
$ helm list -n harbor
# pod status
$ kubectl get pod -n harbor
# svc status
$ kubectl get svc -n harbor
# secret status
$ kubectl get secret -n harbor
访问 Harbor
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: harbor-dashboard-route
namespace: harbor
spec:
entryPoints:
- websecure
routes:
- match: Host(`harbor.devops.test.com`)
kind: Rule
services:
- name: harbor
port: 443
tls:
secretName: tls-harbor
$ kubectl apply -f harbor-dashboard-route.yaml
最佳实践
创建用户
创建项目
不重启docker添加证书
在服务器上配置如下:
$ mkdir -p /etc/docker/certs.d/harbor.devops.test.com
$ cp tls.cert /etc/docker/certs.d/harbor.devops.test.com
$ cp tls.key /etc/docker/certs.d/harbor.devops.test.com
$ cp ca.crt /etc/docker/certs.d/harbor.devops.test.com
# 无需重启docker即可生效,无需添加 insecure-registries":["harbor.transsion.com"]
# 登入,账号是自己的域账号
$ docker login harbor.devops.test.com
# 登出
$ docker logout harbor.devops.test.com
镜像操作
# 拉取测试镜像busybox
$ docker pull busybox
# 更改标签
$ docker tag busybox harbor.devops.test.com/test/busybox:202207201642
# push image
$ docker push harbor.devops.test.com/test/busybox:202207201642
# pull image
$ docker pull harbor.devops.test.com/test/busybox:202207201642
参考文档
以上是关于使用Helm部署Harbor的主要内容,如果未能解决你的问题,请参考以下文章