k8s 集群 安装 harbor 并使用 traefik反向代理

98 阅读2分钟

安装harbor

我是使用的helm安装,helm对应的chart 可以使用官方的 也可以使用bitnami(推荐),我这里选择的是官方的,官方chart地址

使用helm安装

# 新建helm repo
helm repo add harbor https://helm.goharbor.io

配置chart的的values

这里需要需要注意的点有三个

  1. expose.type 这个就是service类型 可以选多种 比如nodePort clusterIp 有条件的也可以 loadBalencer
  2. persistence 存储 我用的是longhorn 官方的不是很好用 bitnami的倒是一次就成功了
  3. 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

image.png

image.png

配置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