安装harbor
我是使用的helm安装,helm对应的chart 可以使用官方的 也可以使用bitnami(推荐),我这里选择的是官方的,官方chart地址
使用helm安装
# 新建helm repo
helm repo add harbor https://helm.goharbor.io
配置chart的的values
这里需要需要注意的点有三个
- expose.type 这个就是service类型 可以选多种 比如nodePort clusterIp 有条件的也可以 loadBalencer
- persistence 存储 我用的是longhorn 官方的不是很好用 bitnami的倒是一次就成功了
- repository 我这里单独配置了一下 原因是因为 伟大的墙 当然dockerhub自身作死也有原因,如果是用bitnami的话 这里只需要配一个repository就行不需要像我这里配这么多
expose:
type: clusterIP
tls:
enabled: false
# certSource: auto
clusterIP:
# The name of NodePort service
name: harbor
ports:
http:
# The service port Harbor listens on when serving HTTP
port: 80
# The node port Harbor listens on when serving HTTP
nodePort: 30002
https:
# The service port Harbor listens on when serving HTTPS
port: 443
# The node port Harbor listens on when serving HTTPS
nodePort: 30003
# 可配可不配
externalURL: http://registry.harbor.com
# 持久化存储配置部分
persistence:
enabled: true
resourcePolicy: "keep" # 在删除资源(例如 Pod)时保留相关的持久卷资源,而不会将其删除。
persistentVolumeClaim: # 定义Harbor各个组件的PVC持久卷
registry: # registry组件(持久卷)
accessMode: ReadWriteMany # 卷的访问模式,需要修改为ReadWriteMany
size: 5Gi
chartmuseum: # chartmuseum组件(持久卷)
accessMode: ReadWriteMany
size: 5Gi
jobservice:
jobLog:
accessMode: ReadWriteOnce
size: 1Gi
database: # PostgreSQl数据库组件
accessMode: ReadWriteMany
size: 2Gi
redis: # Redis缓存组件
accessMode: ReadWriteMany
size: 2Gi
trivy: # Trity漏洞扫描
accessMode: ReadWriteMany
size: 5Gi
# 这个是harbor管理员密码
harborAdminPassword: "xhxxygwl"
nginx:
image:
repository: "docker.m.daocloud.io/goharbor/nginx-photon"
portal:
image:
repository: "docker.m.daocloud.io/goharbor/harbor-portal"
core:
image:
repository: "docker.m.daocloud.io/goharbor/harbor-core"
jobservice:
image:
repository: "docker.m.daocloud.io/goharbor/harbor-jobservice"
registry:
registry:
image:
repository: "docker.m.daocloud.io/goharbor/registry-photon"
controller:
image:
repository: "docker.m.daocloud.io/goharbor/harbor-registryctl"
trivy:
image:
repository: "docker.m.daocloud.io/goharbor/trivy-adapter-photon"
database:
internal:
image:
repository: "docker.m.daocloud.io/goharbor/harbor-db"
redis:
internal:
image:
repository: "docker.m.daocloud.io/goharbor/redis-photon"
exporter:
image:
repository: "docker.m.daocloud.io/goharbor/harbor-exporter"
安装之后的pod跟svc
配置traefik
这里就比较讲究了,我们可以看到很多svc 这里只需要一个 harbor就行
配置traefik的ingress
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: harbor-web-com-tls
namespace: harbor
spec:
entryPoints:
- web
routes:
- match: Host(`harbor.com`)
kind: Rule
services:
- name: harbor
port: 80