当前位置:   article > 正文

Harbor容器化部署_部署harbor

部署harbor

安装说明

K8S版本为v1.26.6
Helm 版本:v3.12.1
harbor版本:2.10.2

准备开始

本次安装只讨论容器化部署,裸机部署的请直接查看官方文档。
harbor 官网
Helm 安装教程

下载 harbor 安装包

# 添加helm源
helm repo add harbor https://helm.goharbor.io

# 下载 harbor 安装包,注意:不指定版本默认下载最新版。
helm pull harbor/harbor

# 解压
tar -xf harbor-1.14.2.tgz

[root@master01 harbor]# ls
Chart.yaml  LICENSE  README.md  templates  values.yaml
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

字段解释

查看 values.yaml 文件配置(注释我删除了 要不太长了.至少用过一段时间的K8S要不你没法配置。)

## 下面这些是配置 访问 Harbor 的方式以及详细的配置
expose:
  type: ingress                         # 选择通过什么方式暴漏你的服务,这里使用 ingress 方式暴漏。可选的有:"ingress", "clusterIP", "nodePort" or "loadBalancer"
  tls:
    enabled: true                       # 是否启用HTTPS
    certSource: secret                  # 是否自动生成 tls证书,当前是用自己的证书。如果需要自动生成证书修改为 auto 即可
    auto:
      commonName: ""                    # 自动生成证书的是你这个地方需要修改为访问的域名
    secret:
      secretName: "harbor-peopleurl-cn" # 使用自己单位的证书 的时候这个地方需要修改为 secret名字,如果是自动生成证书这个地方设置为空。

  ingress:                              # 上面选择了 ingress 方式以后需要根据自己需求配置ingress
    hosts:
      core: harbor.ppleurl.cn         # 访问harbor镜像仓库的域名
    controller: default                 # 定义了使用的Ingress控制器的类型。默认情况下,它被设置为default,这意味着它将使用Kubernetes集群中默认的Ingress控制器。但是,如果你的集群中部署了特定的Ingress控制器(如GCE、NCP、ALB或F5 BIG-IP),你可以在这里指定它。
    kubeVersionOverride: ""             # 允许你在创建Ingress时覆盖.Capabilities.KubeVersion.Version的值。在大多数情况下,这个字段应该留空。
    className: ""                       # 指定Ingress资源的类。在某些Kubernetes环境中,可以使用Ingress类来指定应处理该Ingress资源的Ingress控制器。留空意味着使用默认的Ingress类。
    annotations:                        # ingress 注解 它们为Ingress资源提供了额外的配置选项。这些注解通常由特定的Ingress控制器识别并用于定制Ingress的行为。
      ingress.kubernetes.io/ssl-redirect: "true"    # 当设置为"true"时,这个注解告诉Ingress控制器将所有HTTP请求重定向到HTTPS。
      ingress.kubernetes.io/proxy-body-size: "0"    # 这个注解用于设置Ingress代理后端服务时允许的最大请求体大小。设置为"0"表示没有限制
      nginx.ingress.kubernetes.io/ssl-redirect: "true"   # 这些是特定于Nginx Ingress控制器的注解,与上面的注解有相同的功能。
      nginx.ingress.kubernetes.io/proxy-body-size: "0"   # 这些是特定于Nginx Ingress控制器的注解,与上面的注解有相同的功能。
    harbor:
      annotations: {}           # 这是一个空的注解集合,用于为Harbor的Ingress资源添加特定的注解。你可以在这里添加Harbor特定的注解,例如用于身份验证或自定义路由的注解
      labels: {}                # 这是一个空的标签集合,用于为Harbor的Ingress资源添加自定义的标签。这些标签可以用于在Kubernetes集群中标识和选择Ingress资源。


#  clusterIP 方式暴漏服务 以为上面写了 ingress方式暴漏服务所以这个里面不用修改
  clusterIP:
    name: harbor                 # clusterIP 服务名称
    staticClusterIP: ""          # 是否需要静态ip地址,一般不用静态ip地址
    annotations: {}              # 用于为ClusterIP服务添加注解。
    ports:                       # 端口配置
      httpPort: 80
      httpsPort: 443

#  nodePort 方式暴漏服务 以为上面写了 ingress方式暴漏服务所以这个里面不用修改
  nodePort:
    name: harbor
    ports:
      http:
        port: 80
        nodePort: 30002
      https:
        port: 443
        nodePort: 30003

#  loadBalancer 方式暴漏服务 以为上面写了 ingress方式暴漏服务所以这个里面不用修改   
  loadBalancer:
    name: harbor
    IP: ""
    ports:
      httpPort: 80
      httpsPort: 443
    annotations: {}
    sourceRanges: []

externalURL: https://harbor.peopleurl.cn   # 访问 Harbor 的域名 

## 这是关于Harbor内部TLS(传输层安全性)配置的部分。TLS用于加密Harbor各组件之间的通信,以确保数据在传输过程中的安全性。
internalTLS:
  enabled: false      # 是否启用内部TLS。设置为false表示不启用TLS。
  strong_ssl_ciphers: false
  certSource: "auto"   # auto 表示自动生成证书,
  trustCa: ""

  core:
    secretName: ""
    crt: ""
    key: ""
  jobservice:
    secretName: ""
    crt: ""
    key: ""
  registry:
    secretName: ""
    crt: ""
    key: ""
  portal:
    secretName: ""
    crt: ""
    key: ""
  trivy:
    secretName: ""
    crt: ""
    key: ""

## 用于配置IPv4和IPv6在集群中的启用状态。
ipFamily:
  ipv6:
    enabled: true
  ipv4:
    enabled: true

## 配置个个组件的持戒话存储
persistence:
  enabled: true                 # 是否启用存储
  resourcePolicy: "keep"        # helm 删除操作期间保持 PVC(PersistentVolumeClaim)不变。如果不设置或为空,则在删除 Helm chart 时会删除 PVC
  persistentVolumeClaim:
    registry:
      existingClaim: ""         # 如果要使用现有的 PVC,则指定其名称。如果为空,则会动态创建一个新的 PVC。
      storageClass: ""          # 用于供应存储的存储类。如果为空,则使用默认的存储类。设置为 "-" 以禁用动态供应。
      subPath: ""               # 如果 PVC 与其他组件共享,则指定子路径。
      accessMode: ReadWriteOnce # 访问模式
      size: 5Gi                 # 存储卷大小
      annotations: {}           # 是否添加PVC注解
    jobservice:
      jobLog:
        existingClaim: ""
        storageClass: ""
        subPath: ""
        accessMode: ReadWriteOnce
        size: 1Gi
        annotations: {}
    database:
      existingClaim: ""
      storageClass: ""
      subPath: ""
      accessMode: ReadWriteOnce
      size: 1Gi
      annotations: {}
    redis:
      existingClaim: ""
      storageClass: ""
      subPath: ""
      accessMode: ReadWriteOnce
      size: 1Gi
      annotations: {}
    trivy:
      existingClaim: ""
      storageClass: ""
      subPath: ""
      accessMode: ReadWriteOnce
      size: 5Gi
      annotations: {}
 
 ## 对象存储配置
  imageChartStorage:
    disableredirect: false                    # 是否禁用重定向。对于不支持重定向的存储后端(如使用 MinIO 作为 S3 存储类型),应将其设置为 true。默认情况下,它设置为 false。
    type: filesystem                          # 指定存储类型。可选项包括 "filesystem", "azure", "gcs", "s3", "swift", "oss" 等。这里设置为 "filesystem",表示使用文件系统作为存储后端。
    filesystem:
      rootdirectory: /storage                 # 指定文件系统上的根目录,用于存储镜像和图表
      #maxthreads: 100                        # 指定用于处理存储请求的最大线程数。
    azure:
      accountname: accountname
      accountkey: base64encodedaccountkey
      container: containername
      existingSecret: ""
    gcs:
      bucket: bucketname
      encodedkey: base64-encoded-json-key-file
      existingSecret: ""
      useWorkloadIdentity: false
    s3:
      region: us-west-1
      bucket: bucketname
    swift:
      authurl: https://storage.myprovider.com/v3/auth
      username: username
      password: password
      container: containername
      existingSecret: ""
    oss:
      accesskeyid: accesskeyid
      accesskeysecret: accesskeysecret
      region: regionname
      bucket: bucketname
      existingSecret: ""

imagePullPolicy: IfNotPresent       # 镜像拉去策略
imagePullSecrets:                   # 用于从私有容器镜像仓库拉取镜像时提供凭据的字段。它允许你定义一组密钥(Secrets),这些密钥包含用于访问私有仓库的凭据(如用户名和密码或访问令牌)。
updateStrategy:                     # Pod 更新策略
  type: RollingUpdate
logLevel: info                      # 定义了日志记录的级别。 

existingSecretAdminPasswordKey: HARBOR_ADMIN_PASSWORD # 这个配置项用于指定一个已经存在的 Kubernetes Secret 中包含 Harbor 管理员初始密码的键名。如果你设置了这个值,那么 Harbor 就不会使用 harborAdminPassword 配置项中的密码,而是会查找指定的 Secret 并使用该 Secret 中指定键名的值作为管理员密码。
harborAdminPassword: "Harbor12345"                    # 这是 Harbor 管理员的初始密码。默认情况下,当你首次启动 Harbor 时,你会使用这个密码登录到 Harbor 的管理界面。

caSecretName: "" # 这个配置项用于指定一个包含 CA 证书(通常是 ca.crt 文件)的 Kubernetes Secret 的名称。如果你设置了这个值,那么当 Harbor 不自动生成证书时,用户可以通过 Harbor 的管理界面下载这个 CA 证书。这通常用于客户端(如 Docker 客户端)在访问 Harbor 时进行验证。
secretKey: "not-a-secure-key" # 这个配置项用于指定一个加密密钥,Harbor 会使用这个密钥来加密一些敏感数据(如密码)。出于安全考虑,这个密钥应该是一个足够复杂的、长度为 16 个字符的字符串。
existingSecretSecretKey: "" # 这个配置项与 secretKey 类似,但是它允许你指定一个已经存在的 Kubernetes Secret 中包含加密密钥的键名。如果你设置了这个值,那么 Harbor 就不会使用 secretKey 配置项中的密钥,而是会查找指定的 Secret 并使用该 Secret 中指定键名的值作为加密密钥。

## 这段配置片段是用于配置 Harbor 及其组件使用的代理设置,并设置是否启用 Helm 迁移钩子的
proxy:
  httpProxy:
  httpsProxy:
  noProxy: 127.0.0.1,localhost,.local,.internal
  components:
    - core
    - jobservice
    - trivy
enableMigrateHelmHook: false  # 是否启用迁移钩子

## 这部分是关于 Nginx 的配置,Nginx 通常用作 Harbor 的反向代理和负载均衡器。
nginx:
  image:  # nginx 镜像
    repository: goharbor/nginx-photon
    tag: v2.10.2
  serviceAccountName: ""  # 用于指定 Kubernetes 服务账户的名称,但在这里它是空的,意味着将使用默认的服务账户。
  automountServiceAccountToken: false    # 指定是否自动挂载服务账户令牌到 Pod 中。在这里它被设置为 false。
  replicas: 1    # nginx 副本数量
  revisionHistoryLimit: 10  # 保留旧版本的数量
  ## 下面这五个配置 是用于更细粒度地控制 Pod 调度的选项。
  extraEnvVars: []
  nodeSelector: {}
  tolerations: []
  affinity: {}
  topologySpreadConstraints: []
  #############################

  podAnnotations: {}  # 可以为 Nginx 的 Pod 添加额外的注释
  podLabels: {}       # 添加标签
  priorityClassName:  # 指定了 Pod 的优先级类,用于在资源紧张时决定 Pod 的调度顺序。

## 下面这些全是 Harbor 组件相关的Pod 配置大致和 nginx 相关的配置一样的。
portal:
  image:
    repository: goharbor/harbor-portal
    tag: v2.10.2
  serviceAccountName: ""
  automountServiceAccountToken: false
  replicas: 1
  revisionHistoryLimit: 10
  extraEnvVars: []
  nodeSelector: {}
  tolerations: []
  affinity: {}
  topologySpreadConstraints: []
  podAnnotations: {}
  podLabels: {}
  serviceAnnotations: {}
  priorityClassName:

core:
  image:
    repository: goharbor/harbor-core
    tag: v2.10.2
  serviceAccountName: ""
  automountServiceAccountToken: false
  replicas: 1
  revisionHistoryLimit: 10
  startupProbe:
    enabled: true
    initialDelaySeconds: 10
  # resources:
  #  requests:
  #    memory: 256Mi
  #    cpu: 100m
  extraEnvVars: []
  nodeSelector: {}
  tolerations: []
  affinity: {}
  topologySpreadConstraints: []
  podAnnotations: {}
  podLabels: {}
  serviceAnnotations: {}

  configureUserSettings:
  quotaUpdateProvider: db 
  secret: ""
  existingSecret: ""
  secretName: ""
  tokenKey: |
  tokenCert: |
  xsrfKey: ""
  existingXsrfSecret: ""
  existingXsrfSecretKey: CSRF_KEY
  priorityClassName:
  artifactPullAsyncFlushDuration:
  gdpr:
    deleteUser: false
    auditLogsCompliant: false

jobservice:
  image:
    repository: goharbor/harbor-jobservice
    tag: v2.10.2
  replicas: 1
  revisionHistoryLimit: 10
  serviceAccountName: ""
  automountServiceAccountToken: false
  maxJobWorkers: 10
  jobLoggers:
    - file
  loggerSweeperDuration: 14 #days
  notification:
    webhook_job_max_retry: 3
    webhook_job_http_client_timeout: 3 # in seconds
  reaper:
    max_update_hours: 24
    max_dangling_hours: 168
  extraEnvVars: []
  nodeSelector: {}
  tolerations: []
  affinity: {}
  topologySpreadConstraints:
  podAnnotations: {}
  podLabels: {}
  secret: ""
  existingSecret: ""
  existingSecretKey: JOBSERVICE_SECRET
  priorityClassName:

registry:
  serviceAccountName: ""
  automountServiceAccountToken: false
  registry:
    image:
      repository: goharbor/registry-photon
      tag: v2.10.2
    extraEnvVars: []
  controller:
    image:
      repository: goharbor/harbor-registryctl
      tag: v2.10.2
    extraEnvVars: []
  replicas: 1
  revisionHistoryLimit: 10
  nodeSelector: {}
  tolerations: []
  affinity: {}
  topologySpreadConstraints: []
  podAnnotations: {}
  podLabels: {}
  priorityClassName:
  secret: ""
  existingSecret: ""
  existingSecretKey: REGISTRY_HTTP_SECRET
  relativeurls: false
  credentials:
    username: "harbor_registry_user"
    password: "harbor_registry_password"
    existingSecret: ""
    htpasswdString: ""
  middleware:
    enabled: false
    type: cloudFront
    cloudFront:
      baseurl: example.cloudfront.net
      keypairid: KEYPAIRID
      duration: 3000s
      ipfilteredby: none
      privateKeySecret: "my-secret"
  upload_purging:
    enabled: true
    age: 168h
    interval: 24h
    dryrun: false

trivy:
  enabled: true
  image:
    repository: goharbor/trivy-adapter-photon
    tag: v2.10.2
  serviceAccountName: ""
  automountServiceAccountToken: false
  replicas: 1
  debugMode: false
  vulnType: "os,library"
  severity: "UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL"
  ignoreUnfixed: false
  insecure: false
  gitHubToken: ""
  skipUpdate: false
  skipJavaDBUpdate: false  
  offlineScan: false
  securityCheck: "vuln"
  timeout: 5m0s
  resources:
    requests:
      cpu: 200m
      memory: 512Mi
    limits:
      cpu: 1
      memory: 1Gi
  extraEnvVars: []
  nodeSelector: {}
  tolerations: []
  affinity: {}
  topologySpreadConstraints: []
  podAnnotations: {}
  podLabels: {}
  priorityClassName:

database:
  type: internal
  internal:
    serviceAccountName: ""
    automountServiceAccountToken: false
    image:
      repository: goharbor/harbor-db
      tag: v2.10.2
    password: "changeit"
    shmSizeLimit: 512Mi
    livenessProbe:
      timeoutSeconds: 1
    readinessProbe:
      timeoutSeconds: 1
    extraEnvVars: []
    nodeSelector: {}
    tolerations: []
    affinity: {}
    priorityClassName:
    initContainer:
      migrator: {}
      # resources:
      #  requests:
      #    memory: 128Mi
      #    cpu: 100m
      permissions: {}
      # resources:
      #  requests:
      #    memory: 128Mi
      #    cpu: 100m
  external:
    host: "192.168.0.1"
    port: "5432"
    username: "user"
    password: "password"
    coreDatabase: "registry"
    existingSecret: ""
    sslmode: "disable"
  maxIdleConns: 100
  maxOpenConns: 900
  podAnnotations: {}
  podLabels: {}

redis:
  type: internal
  internal:
    serviceAccountName: ""
    automountServiceAccountToken: false
    image:
      repository: goharbor/redis-photon
      tag: v2.10.2
    # resources:
    #  requests:
    #    memory: 256Mi
    #    cpu: 100m
    extraEnvVars: []
    nodeSelector: {}
    tolerations: []
    affinity: {}
    priorityClassName:
    jobserviceDatabaseIndex: "1"
    registryDatabaseIndex: "2"
    trivyAdapterIndex: "5"
  external:
    addr: "192.168.0.2:6379"
    sentinelMasterSet: ""
    coreDatabaseIndex: "0"
    jobserviceDatabaseIndex: "1"
    registryDatabaseIndex: "2"
    trivyAdapterIndex: "5"
    username: ""
    password: ""
    existingSecret: ""
  podAnnotations: {}
  podLabels: {}

exporter:
  replicas: 1
  revisionHistoryLimit: 10
  # resources:
  #  requests:
  #    memory: 256Mi
  #    cpu: 100m
  extraEnvVars: []
  podAnnotations: {}
  podLabels: {}
  serviceAccountName: ""
  automountServiceAccountToken: false
  image:
    repository: goharbor/harbor-exporter
    tag: v2.10.2
  nodeSelector: {}
  tolerations: []
  affinity: {}
  topologySpreadConstraints: []
  cacheDuration: 23
  cacheCleanInterval: 14400
  priorityClassName:

## Metrics(指标)
metrics:
  enabled: false # 表示指标收集是禁用的。如果设置为true,系统将收集并暴露一些指标。
  core:
    path: /metrics
    port: 8001
  registry:
    path: /metrics
    port: 8001
  jobservice:
    path: /metrics
    port: 8001
  exporter:
    path: /metrics
    port: 8001

  serviceMonitor:  # 这是一个关于Prometheus的ServiceMonitor的配置。
    enabled: false # 表示ServiceMonitor是禁用的。如果设置为true,Prometheus可以通过ServiceMonitor自动发现和抓取这些指标。
    additionalLabels: {}
    interval: ""
    metricRelabelings:
      []
    relabelings:
      []

trace:
  enabled: false   # 表示追踪功能是禁用的。如果设置为true,系统可能会生成和发送追踪数据。
  provider: jaeger
  sample_rate: 1
  jaeger:
    endpoint: http://hostname:14268/api/traces
  otel:
    endpoint: hostname:4318
    url_path: /v1/traces
    compression: false
    insecure: true
    timeout: 10

cache:
  enabled: false    # 表示缓存功能是禁用的。如果设置为true,系统可能会使用缓存来存储一些数据以加速访问。
  expireHours: 24   # 如果缓存功能启用,这个值定义了缓存项在过期前可以保留的小时数。这里是24小时。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 409
  • 410
  • 411
  • 412
  • 413
  • 414
  • 415
  • 416
  • 417
  • 418
  • 419
  • 420
  • 421
  • 422
  • 423
  • 424
  • 425
  • 426
  • 427
  • 428
  • 429
  • 430
  • 431
  • 432
  • 433
  • 434
  • 435
  • 436
  • 437
  • 438
  • 439
  • 440
  • 441
  • 442
  • 443
  • 444
  • 445
  • 446
  • 447
  • 448
  • 449
  • 450
  • 451
  • 452
  • 453
  • 454
  • 455
  • 456
  • 457
  • 458
  • 459
  • 460
  • 461
  • 462
  • 463
  • 464
  • 465
  • 466
  • 467
  • 468
  • 469
  • 470
  • 471
  • 472
  • 473
  • 474
  • 475
  • 476
  • 477
  • 478
  • 479
  • 480
  • 481
  • 482
  • 483
  • 484
  • 485
  • 486
  • 487
  • 488
  • 489
  • 490
  • 491
  • 492
  • 493
  • 494
  • 495
  • 496
  • 497
  • 498
  • 499
  • 500
  • 501
  • 502
  • 503
  • 504
  • 505
  • 506
  • 507
  • 508
  • 509
  • 510
  • 511
  • 512
  • 513
  • 514
  • 515
  • 516
  • 517
  • 518
  • 519
  • 520
  • 521
  • 522
  • 523
  • 524

安装自己的需求修改好以后开始安装

helm install harbor ./ -n harbor
  • 1
NAME: harbor
LAST DEPLOYED: Fri May 17 14:27:18 2024
NAMESPACE: harbor
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Please wait for several minutes for Harbor deployment to complete.
Then you should be able to visit the Harbor portal at https://harbor.test.cn
For more details, please visit https://github.com/goharbor/harbor
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

查看Pod状态

[root@master01 ~]# kubectl get po -n warehouse 
NAME                                 READY   STATUS    RESTARTS        AGE
harbor-core-689f9844df-8rfs2         1/1     Running   3 (2d20h ago)   2d20h
harbor-database-0                    1/1     Running   0               2d20h
harbor-exporter-7f8d75b6-7qkvj       1/1     Running   3 (2d20h ago)   2d20h
harbor-jobservice-7c54445bc8-f4dkg   1/1     Running   5 (2d20h ago)   2d20h
harbor-portal-57867fcdb9-mr2lh       1/1     Running   0               2d20h
harbor-redis-0                       1/1     Running   0               2d20h
harbor-registry-58b695746b-www56     2/2     Running   0               2d20h
harbor-trivy-0                       1/1     Running   0               2d20h
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

到此部署完成 访问的话 我这里是通过 ingress 方式访问的 账号密码都在配置文件里面。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/977385
推荐阅读
相关标签
  

闽ICP备14008679号