values.yaml 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096
  1. expose:
  2. # Set how to expose the service. Set the type as "ingress", "clusterIP", "nodePort" or "loadBalancer"
  3. # and fill the information in the corresponding section
  4. type: nodePort
  5. tls:
  6. # Enable TLS or not.
  7. # Delete the "ssl-redirect" annotations in "expose.ingress.annotations" when TLS is disabled and "expose.type" is "ingress"
  8. # Note: if the "expose.type" is "ingress" and TLS is disabled,
  9. # the port must be included in the command when pulling/pushing images.
  10. # Refer to https://github.com/goharbor/harbor/issues/5291 for details.
  11. # enabled: true
  12. enabled: false
  13. # The source of the tls certificate. Set as "auto", "secret"
  14. # or "none" and fill the information in the corresponding section
  15. # 1) auto: generate the tls certificate automatically
  16. # 2) secret: read the tls certificate from the specified secret.
  17. # The tls certificate can be generated manually or by cert manager
  18. # 3) none: configure no tls certificate for the ingress. If the default
  19. # tls certificate is configured in the ingress controller, choose this option
  20. certSource: auto
  21. auto:
  22. # The common name used to generate the certificate, it's necessary
  23. # when the type isn't "ingress"
  24. commonName: "mi-harbor"
  25. secret:
  26. # The name of secret which contains keys named:
  27. # "tls.crt" - the certificate
  28. # "tls.key" - the private key
  29. secretName: ""
  30. ingress:
  31. hosts:
  32. core: harbor.reymota.es
  33. # set to the type of ingress controller if it has specific requirements.
  34. # leave as `default` for most ingress controllers.
  35. # set to `gce` if using the GCE ingress controller
  36. # set to `ncp` if using the NCP (NSX-T Container Plugin) ingress controller
  37. # set to `alb` if using the ALB ingress controller
  38. # set to `f5-bigip` if using the F5 BIG-IP ingress controller
  39. controller: default
  40. ## Allow .Capabilities.KubeVersion.Version to be overridden while creating ingress
  41. kubeVersionOverride: ""
  42. className: ""
  43. annotations:
  44. # note different ingress controllers may require a different ssl-redirect annotation
  45. # for Envoy, use ingress.kubernetes.io/force-ssl-redirect: "true" and remove the nginx lines below
  46. #ingress.kubernetes.io/ssl-redirect: "true"
  47. ingress.kubernetes.io/proxy-body-size: "0"
  48. nginx.ingress.kubernetes.io/ssl-redirect: "true"
  49. nginx.ingress.kubernetes.io/proxy-body-size: "0"
  50. # ingress-specific labels
  51. labels: {}
  52. route:
  53. labels: {}
  54. annotations: {}
  55. # - name: envoy-internal
  56. # namespace: networking
  57. # sectionName: https
  58. # group: gateway.networking.k8s.io
  59. # kind: Gateway
  60. parentRefs: {}
  61. # - "harbor.example.com"
  62. hosts: []
  63. clusterIP:
  64. # The name of ClusterIP service
  65. name: harbor
  66. # The ip address of the ClusterIP service (leave empty for acquiring dynamic ip)
  67. staticClusterIP: ""
  68. ports:
  69. # The service port Harbor listens on when serving HTTP
  70. httpPort: 80
  71. # The service port Harbor listens on when serving HTTPS
  72. httpsPort: 443
  73. # Annotations on the ClusterIP service
  74. annotations: {}
  75. # ClusterIP-specific labels
  76. labels: {}
  77. nodePort:
  78. # The name of NodePort service
  79. name: harbor
  80. ports:
  81. http:
  82. # The service port Harbor listens on when serving HTTP
  83. port: 80
  84. # The node port Harbor listens on when serving HTTP
  85. nodePort: 30002
  86. https:
  87. # The service port Harbor listens on when serving HTTPS
  88. port: 443
  89. # The node port Harbor listens on when serving HTTPS
  90. nodePort: 30003
  91. # Annotations on the nodePort service
  92. annotations: {}
  93. # nodePort-specific labels
  94. labels: {}
  95. loadBalancer:
  96. # The name of LoadBalancer service
  97. name: harbor
  98. # Set the IP if the LoadBalancer supports assigning IP
  99. IP: ""
  100. ports:
  101. # The service port Harbor listens on when serving HTTP
  102. httpPort: 80
  103. # The service port Harbor listens on when serving HTTPS
  104. httpsPort: 443
  105. # Annotations on the loadBalancer service
  106. annotations: {}
  107. # loadBalancer-specific labels
  108. labels: {}
  109. sourceRanges: []
  110. # The external URL for Harbor core service. It is used to
  111. # 1) populate the docker/helm commands showed on portal
  112. # 2) populate the token service URL returned to docker client
  113. #
  114. # Format: protocol://domain[:port]. Usually:
  115. # 1) if "expose.type" is "ingress", the "domain" should be
  116. # the value of "expose.ingress.hosts.core"
  117. # 2) if "expose.type" is "clusterIP", the "domain" should be
  118. # the value of "expose.clusterIP.name"
  119. # 3) if "expose.type" is "nodePort", the "domain" should be
  120. # the IP address of k8s node
  121. #
  122. # If Harbor is deployed behind the proxy, set it as the URL of proxy
  123. externalURL: https://harbor.reymota.es
  124. # The persistence is enabled by default and a default StorageClass
  125. # is needed in the k8s cluster to provision volumes dynamically.
  126. # Specify another StorageClass in the "storageClass" or set "existingClaim"
  127. # if you already have existing persistent volumes to use
  128. #
  129. # For storing images and charts, you can also use "azure", "gcs", "s3",
  130. # "swift" or "oss". Set it in the "imageChartStorage" section
  131. persistence:
  132. enabled: true
  133. # Setting it to "keep" to avoid removing PVCs during a helm delete
  134. # operation. Leaving it empty will delete PVCs after the chart deleted
  135. # (this does not apply for PVCs that are created for internal database
  136. # and redis components, i.e. they are never deleted automatically)
  137. resourcePolicy: "keep"
  138. persistentVolumeClaim:
  139. registry:
  140. # Use the existing PVC which must be created manually before bound,
  141. # and specify the "subPath" if the PVC is shared with other components
  142. existingClaim: ""
  143. # Specify the "storageClass" used to provision the volume. Or the default
  144. # StorageClass will be used (the default).
  145. # Set it to "-" to disable dynamic provisioning
  146. storageClass: ""
  147. subPath: ""
  148. accessMode: ReadWriteOnce
  149. size: 50Gi
  150. annotations: {}
  151. jobservice:
  152. jobLog:
  153. existingClaim: ""
  154. storageClass: ""
  155. subPath: ""
  156. accessMode: ReadWriteOnce
  157. size: 1Gi
  158. annotations: {}
  159. # If external database is used, the following settings for database will
  160. # be ignored
  161. database:
  162. existingClaim: ""
  163. storageClass: ""
  164. subPath: ""
  165. accessMode: ReadWriteOnce
  166. size: 1Gi
  167. annotations: {}
  168. # If external Redis is used, the following settings for Redis will
  169. # be ignored
  170. redis:
  171. existingClaim: ""
  172. storageClass: ""
  173. subPath: ""
  174. accessMode: ReadWriteOnce
  175. size: 1Gi
  176. annotations: {}
  177. trivy:
  178. existingClaim: ""
  179. storageClass: ""
  180. subPath: ""
  181. accessMode: ReadWriteOnce
  182. size: 5Gi
  183. annotations: {}
  184. # Define which storage backend is used for registry to store
  185. # images and charts. Refer to
  186. # https://github.com/distribution/distribution/blob/release/2.8/docs/configuration.md#storage
  187. # for the detail.
  188. imageChartStorage:
  189. # Specify whether to disable `redirect` for images and chart storage, for
  190. # backends which not supported it (such as using minio for `s3` storage type), please disable
  191. # it. To disable redirects, simply set `disableredirect` to `true` instead.
  192. # Refer to
  193. # https://github.com/distribution/distribution/blob/release/2.8/docs/configuration.md#redirect
  194. # for the detail.
  195. disableredirect: false
  196. # Specify the "caBundleSecretName" if the storage service uses a self-signed certificate.
  197. # The secret must contain keys named "ca.crt" which will be injected into the trust store
  198. # of registry's containers.
  199. # caBundleSecretName:
  200. # Specify the type of storage: "filesystem", "azure", "gcs", "s3", "swift",
  201. # "oss" and fill the information needed in the corresponding section. The type
  202. # must be "filesystem" if you want to use persistent volumes for registry
  203. type: filesystem
  204. filesystem:
  205. rootdirectory: /storage
  206. #maxthreads: 100
  207. azure:
  208. accountname: accountname
  209. accountkey: base64encodedaccountkey
  210. container: containername
  211. #realm: core.windows.net
  212. # To use existing secret, the key must be AZURE_STORAGE_ACCESS_KEY
  213. existingSecret: ""
  214. gcs:
  215. bucket: bucketname
  216. # The base64 encoded json file which contains the key
  217. encodedkey: base64-encoded-json-key-file
  218. #rootdirectory: /gcs/object/name/prefix
  219. #chunksize: "5242880"
  220. # To use existing secret, the key must be GCS_KEY_DATA
  221. existingSecret: ""
  222. useWorkloadIdentity: false
  223. s3:
  224. # Set an existing secret for S3 accesskey and secretkey
  225. # keys in the secret should be REGISTRY_STORAGE_S3_ACCESSKEY and REGISTRY_STORAGE_S3_SECRETKEY for registry
  226. #existingSecret: ""
  227. region: us-west-1
  228. bucket: bucketname
  229. #accesskey: awsaccesskey
  230. #secretkey: awssecretkey
  231. #regionendpoint: http://myobjects.local
  232. #encrypt: false
  233. #keyid: mykeyid
  234. #secure: true
  235. #skipverify: false
  236. #v4auth: true
  237. #chunksize: "5242880"
  238. #rootdirectory: /s3/object/name/prefix
  239. #storageclass: STANDARD
  240. #multipartcopychunksize: "33554432"
  241. #multipartcopymaxconcurrency: 100
  242. #multipartcopythresholdsize: "33554432"
  243. swift:
  244. authurl: https://storage.myprovider.com/v3/auth
  245. username: username
  246. password: password
  247. container: containername
  248. # keys in existing secret must be REGISTRY_STORAGE_SWIFT_PASSWORD, REGISTRY_STORAGE_SWIFT_SECRETKEY, REGISTRY_STORAGE_SWIFT_ACCESSKEY
  249. existingSecret: ""
  250. #region: fr
  251. #tenant: tenantname
  252. #tenantid: tenantid
  253. #domain: domainname
  254. #domainid: domainid
  255. #trustid: trustid
  256. #insecureskipverify: false
  257. #chunksize: 5M
  258. #prefix:
  259. #secretkey: secretkey
  260. #accesskey: accesskey
  261. #authversion: 3
  262. #endpointtype: public
  263. #tempurlcontainerkey: false
  264. #tempurlmethods:
  265. oss:
  266. accesskeyid: accesskeyid
  267. accesskeysecret: accesskeysecret
  268. region: regionname
  269. bucket: bucketname
  270. # key in existingSecret must be REGISTRY_STORAGE_OSS_ACCESSKEYSECRET
  271. existingSecret: ""
  272. #endpoint: endpoint
  273. #internal: false
  274. #encrypt: false
  275. #secure: true
  276. #chunksize: 10M
  277. #rootdirectory: rootdirectory
  278. # The initial password of Harbor admin. Change it from portal after launching Harbor
  279. # or give an existing secret for it
  280. # key in secret is given via (default to HARBOR_ADMIN_PASSWORD)
  281. existingSecretAdminPassword: ""
  282. existingSecretAdminPasswordKey: HARBOR_ADMIN_PASSWORD
  283. harborAdminPassword: "Harbor12345"
  284. # The internal TLS used for harbor components secure communicating. In order to enable https
  285. # in each component tls cert files need to provided in advance.
  286. internalTLS:
  287. # If internal TLS enabled
  288. enabled: false
  289. # enable strong ssl ciphers (default: false)
  290. strong_ssl_ciphers: false
  291. # There are three ways to provide tls
  292. # 1) "auto" will generate cert automatically
  293. # 2) "manual" need provide cert file manually in following value
  294. # 3) "secret" internal certificates from secret
  295. certSource: "auto"
  296. # The content of trust ca, only available when `certSource` is "manual"
  297. trustCa: ""
  298. # core related cert configuration
  299. core:
  300. # secret name for core's tls certs
  301. secretName: ""
  302. # Content of core's TLS cert file, only available when `certSource` is "manual"
  303. crt: ""
  304. # Content of core's TLS key file, only available when `certSource` is "manual"
  305. key: ""
  306. # jobservice related cert configuration
  307. jobservice:
  308. # secret name for jobservice's tls certs
  309. secretName: ""
  310. # Content of jobservice's TLS key file, only available when `certSource` is "manual"
  311. crt: ""
  312. # Content of jobservice's TLS key file, only available when `certSource` is "manual"
  313. key: ""
  314. # registry related cert configuration
  315. registry:
  316. # secret name for registry's tls certs
  317. secretName: ""
  318. # Content of registry's TLS key file, only available when `certSource` is "manual"
  319. crt: ""
  320. # Content of registry's TLS key file, only available when `certSource` is "manual"
  321. key: ""
  322. # portal related cert configuration
  323. portal:
  324. # secret name for portal's tls certs
  325. secretName: ""
  326. # Content of portal's TLS key file, only available when `certSource` is "manual"
  327. crt: ""
  328. # Content of portal's TLS key file, only available when `certSource` is "manual"
  329. key: ""
  330. # trivy related cert configuration
  331. trivy:
  332. # secret name for trivy's tls certs
  333. secretName: ""
  334. # Content of trivy's TLS key file, only available when `certSource` is "manual"
  335. crt: ""
  336. # Content of trivy's TLS key file, only available when `certSource` is "manual"
  337. key: ""
  338. ipFamily:
  339. # ipv6Enabled set to true if ipv6 is enabled in cluster, currently it affected the nginx related component
  340. ipv6:
  341. enabled: true
  342. # ipv4Enabled set to true if ipv4 is enabled in cluster, currently it affected the nginx related component
  343. ipv4:
  344. enabled: true
  345. # Sets the IP family policy for services to be able to configure dual-stack; see [Configure dual-stack](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services).
  346. policy: ""
  347. # A list of IP families for services that should be supported, in the order in which they should be applied to ClusterIP. Can be "IPv4" and/or "IPv6".
  348. families: []
  349. imagePullPolicy: IfNotPresent
  350. # Use this set to assign a list of default pullSecrets
  351. imagePullSecrets:
  352. # - name: docker-registry-secret
  353. # - name: internal-registry-secret
  354. # The update strategy for deployments with persistent volumes(jobservice, registry): "RollingUpdate" or "Recreate"
  355. # Set it as "Recreate" when "RWM" for volumes isn't supported
  356. updateStrategy:
  357. type: RollingUpdate
  358. # debug, info, warning, error or fatal
  359. logLevel: info
  360. # The name of the secret which contains key named "ca.crt". Setting this enables the
  361. # download link on portal to download the CA certificate when the certificate isn't
  362. # generated automatically
  363. caSecretName: ""
  364. # The secret key used for encryption. Must be a string of 16 chars.
  365. secretKey: "not-a-secure-key"
  366. # If using existingSecretSecretKey, the key must be secretKey
  367. existingSecretSecretKey: ""
  368. # The proxy settings for updating trivy vulnerabilities from the Internet and replicating
  369. # artifacts from/to the registries that cannot be reached directly
  370. proxy:
  371. httpProxy:
  372. httpsProxy:
  373. noProxy: 127.0.0.1,localhost,.local,.internal
  374. components:
  375. - core
  376. - jobservice
  377. - trivy
  378. # Run the migration job via helm hook
  379. enableMigrateHelmHook: false
  380. # The custom ca bundle secret, the secret must contain key named "ca.crt"
  381. # which will be injected into the trust store for core, jobservice, registry, trivy components
  382. # caBundleSecretName: ""
  383. ## UAA Authentication Options
  384. # If you're using UAA for authentication behind a self-signed
  385. # certificate you will need to provide the CA Cert.
  386. # Set uaaSecretName below to provide a pre-created secret that
  387. # contains a base64 encoded CA Certificate named `ca.crt`.
  388. # uaaSecretName:
  389. metrics:
  390. enabled: false
  391. core:
  392. path: /metrics
  393. port: 8001
  394. registry:
  395. path: /metrics
  396. port: 8001
  397. jobservice:
  398. path: /metrics
  399. port: 8001
  400. exporter:
  401. path: /metrics
  402. port: 8001
  403. ## Create prometheus serviceMonitor to scrape harbor metrics.
  404. ## This requires the monitoring.coreos.com/v1 CRD. Please see
  405. ## https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/getting-started.md
  406. ##
  407. serviceMonitor:
  408. enabled: false
  409. additionalLabels: {}
  410. # Scrape interval. If not set, the Prometheus default scrape interval is used.
  411. interval: ""
  412. # Metric relabel configs to apply to samples before ingestion.
  413. metricRelabelings:
  414. []
  415. # - action: keep
  416. # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
  417. # sourceLabels: [__name__]
  418. # Relabel configs to apply to samples before ingestion.
  419. relabelings:
  420. []
  421. # - sourceLabels: [__meta_kubernetes_pod_node_name]
  422. # separator: ;
  423. # regex: ^(.*)$
  424. # targetLabel: nodename
  425. # replacement: $1
  426. # action: replace
  427. trace:
  428. enabled: false
  429. # trace provider: jaeger or otel
  430. # jaeger should be 1.26+
  431. provider: jaeger
  432. # set sample_rate to 1 if you wanna sampling 100% of trace data; set 0.5 if you wanna sampling 50% of trace data, and so forth
  433. sample_rate: 1
  434. # namespace used to differentiate different harbor services
  435. # namespace:
  436. # attributes is a key value dict contains user defined attributes used to initialize trace provider
  437. # attributes:
  438. # application: harbor
  439. jaeger:
  440. # jaeger supports two modes:
  441. # collector mode(uncomment endpoint and uncomment username, password if needed)
  442. # agent mode(uncomment agent_host and agent_port)
  443. endpoint: http://hostname:14268/api/traces
  444. # username:
  445. # password:
  446. # agent_host: hostname
  447. # export trace data by jaeger.thrift in compact mode
  448. # agent_port: 6831
  449. otel:
  450. endpoint: hostname:4318
  451. url_path: /v1/traces
  452. compression: false
  453. insecure: true
  454. # timeout is in seconds
  455. timeout: 10
  456. # cache layer configurations
  457. # if this feature enabled, harbor will cache the resource
  458. # `project/project_metadata/repository/artifact/manifest` in the redis
  459. # which help to improve the performance of high concurrent pulling manifest.
  460. cache:
  461. # default is not enabled.
  462. enabled: false
  463. # default keep cache for one day.
  464. expireHours: 24
  465. ## set Container Security Context to comply with PSP restricted policy if necessary
  466. ## each of the conatiner will apply the same security context
  467. ## containerSecurityContext:{} is initially an empty yaml that you could edit it on demand, we just filled with a common template for convenience
  468. containerSecurityContext:
  469. privileged: false
  470. allowPrivilegeEscalation: false
  471. seccompProfile:
  472. type: RuntimeDefault
  473. runAsNonRoot: true
  474. capabilities:
  475. drop:
  476. - ALL
  477. # If service exposed via "ingress", the Nginx will not be used
  478. nginx:
  479. image:
  480. repository: goharbor/nginx-photon
  481. tag: v2.14.1
  482. # set the service account to be used, default if left empty
  483. serviceAccountName: ""
  484. # mount the service account token
  485. automountServiceAccountToken: false
  486. replicas: 1
  487. revisionHistoryLimit: 10
  488. # resources:
  489. # requests:
  490. # memory: 256Mi
  491. # cpu: 100m
  492. extraEnvVars: []
  493. nodeSelector: {}
  494. tolerations: []
  495. affinity: {}
  496. # Spread Pods across failure-domains like regions, availability zones or nodes
  497. topologySpreadConstraints: []
  498. # - maxSkew: 1
  499. # topologyKey: topology.kubernetes.io/zone
  500. # nodeTaintsPolicy: Honor
  501. # whenUnsatisfiable: DoNotSchedule
  502. ## Additional deployment annotations
  503. podAnnotations: {}
  504. ## Additional deployment labels
  505. podLabels: {}
  506. ## The priority class to run the pod as
  507. priorityClassName:
  508. portal:
  509. image:
  510. repository: goharbor/harbor-portal
  511. tag: v2.14.1
  512. # set the service account to be used, default if left empty
  513. serviceAccountName: ""
  514. # mount the service account token
  515. automountServiceAccountToken: false
  516. replicas: 1
  517. revisionHistoryLimit: 10
  518. # resources:
  519. # requests:
  520. # memory: 256Mi
  521. # cpu: 100m
  522. extraEnvVars: []
  523. nodeSelector: {}
  524. tolerations: []
  525. affinity: {}
  526. # Spread Pods across failure-domains like regions, availability zones or nodes
  527. topologySpreadConstraints: []
  528. # - maxSkew: 1
  529. # topologyKey: topology.kubernetes.io/zone
  530. # nodeTaintsPolicy: Honor
  531. # whenUnsatisfiable: DoNotSchedule
  532. ## Additional deployment annotations
  533. podAnnotations: {}
  534. ## Additional deployment labels
  535. podLabels: {}
  536. ## Additional service annotations
  537. serviceAnnotations: {}
  538. ## The priority class to run the pod as
  539. priorityClassName:
  540. # containers to be run before the controller's container starts.
  541. initContainers: []
  542. # Example:
  543. #
  544. # - name: wait
  545. # image: busybox
  546. # command: [ 'sh', '-c', "sleep 20" ]
  547. core:
  548. image:
  549. repository: goharbor/harbor-core
  550. tag: v2.14.1
  551. # set the service account to be used, default if left empty
  552. serviceAccountName: ""
  553. # mount the service account token
  554. automountServiceAccountToken: false
  555. replicas: 1
  556. revisionHistoryLimit: 10
  557. ## Startup probe values
  558. startupProbe:
  559. enabled: true
  560. initialDelaySeconds: 10
  561. # resources:
  562. # requests:
  563. # memory: 256Mi
  564. # cpu: 100m
  565. extraEnvVars: []
  566. nodeSelector: {}
  567. tolerations: []
  568. affinity: {}
  569. # Spread Pods across failure-domains like regions, availability zones or nodes
  570. topologySpreadConstraints: []
  571. # - maxSkew: 1
  572. # topologyKey: topology.kubernetes.io/zone
  573. # nodeTaintsPolicy: Honor
  574. # whenUnsatisfiable: DoNotSchedule
  575. ## Additional deployment annotations
  576. podAnnotations: {}
  577. ## Additional deployment labels
  578. podLabels: {}
  579. ## Additional service annotations
  580. serviceAnnotations: {}
  581. ## The priority class to run the pod as
  582. priorityClassName:
  583. # containers to be run before the controller's container starts.
  584. initContainers: []
  585. # Example:
  586. #
  587. # - name: wait
  588. # image: busybox
  589. # command: [ 'sh', '-c', "sleep 20" ]
  590. ## User settings configuration json string
  591. configureUserSettings:
  592. # The provider for updating project quota(usage), there are 2 options, redis or db.
  593. # By default it is implemented by db but you can configure it to redis which
  594. # can improve the performance of high concurrent pushing to the same project,
  595. # and reduce the database connections spike and occupies.
  596. # Using redis will bring up some delay for quota usage updation for display, so only
  597. # suggest switch provider to redis if you were ran into the db connections spike around
  598. # the scenario of high concurrent pushing to same project, no improvment for other scenes.
  599. quotaUpdateProvider: db # Or redis
  600. # Secret is used when core server communicates with other components.
  601. # If a secret key is not specified, Helm will generate one. Alternatively set existingSecret to use an existing secret
  602. # Must be a string of 16 chars.
  603. secret: ""
  604. # Fill in the name of a kubernetes secret if you want to use your own
  605. # If using existingSecret, the key must be secret
  606. existingSecret: ""
  607. # Fill the name of a kubernetes secret if you want to use your own
  608. # TLS certificate and private key for token encryption/decryption.
  609. # The secret must contain keys named:
  610. # "tls.key" - the private key
  611. # "tls.crt" - the certificate
  612. secretName: ""
  613. # If not specifying a preexisting secret, a secret can be created from tokenKey and tokenCert and used instead.
  614. # If none of secretName, tokenKey, and tokenCert are specified, an ephemeral key and certificate will be autogenerated.
  615. # tokenKey and tokenCert must BOTH be set or BOTH unset.
  616. # The tokenKey value is formatted as a multiline string containing a PEM-encoded RSA key, indented one more than tokenKey on the following line.
  617. tokenKey: |
  618. # If tokenKey is set, the value of tokenCert must be set as a PEM-encoded certificate signed by tokenKey, and supplied as a multiline string, indented one more than tokenCert on the following line.
  619. tokenCert: |
  620. # The XSRF key. Will be generated automatically if it isn't specified
  621. # While you specified, Please make sure it is 32 characters, otherwise would have validation issue at the harbor-core runtime
  622. # https://github.com/goharbor/harbor/pull/21154
  623. xsrfKey: ""
  624. # If using existingSecret, the key is defined by core.existingXsrfSecretKey
  625. existingXsrfSecret: ""
  626. # If using existingSecret, the key
  627. existingXsrfSecretKey: CSRF_KEY
  628. # The time duration for async update artifact pull_time and repository
  629. # pull_count, the unit is second. Will be 10 seconds if it isn't set.
  630. # eg. artifactPullAsyncFlushDuration: 10
  631. artifactPullAsyncFlushDuration:
  632. gdpr:
  633. deleteUser: false
  634. auditLogsCompliant: false
  635. jobservice:
  636. image:
  637. repository: goharbor/harbor-jobservice
  638. tag: v2.14.1
  639. # set the service account to be used, default if left empty
  640. serviceAccountName: ""
  641. # mount the service account token
  642. automountServiceAccountToken: false
  643. replicas: 1
  644. revisionHistoryLimit: 10
  645. # resources:
  646. # requests:
  647. # memory: 256Mi
  648. # cpu: 100m
  649. extraEnvVars: []
  650. nodeSelector: {}
  651. tolerations: []
  652. affinity: {}
  653. # Spread Pods across failure-domains like regions, availability zones or nodes
  654. topologySpreadConstraints:
  655. # - maxSkew: 1
  656. # topologyKey: topology.kubernetes.io/zone
  657. # nodeTaintsPolicy: Honor
  658. # whenUnsatisfiable: DoNotSchedule
  659. ## Additional deployment annotations
  660. podAnnotations: {}
  661. ## Additional deployment labels
  662. podLabels: {}
  663. ## The priority class to run the pod as
  664. priorityClassName:
  665. # containers to be run before the controller's container starts.
  666. initContainers: []
  667. # Example:
  668. #
  669. # - name: wait
  670. # image: busybox
  671. # command: [ 'sh', '-c', "sleep 20" ]
  672. maxJobWorkers: 10
  673. # The logger for jobs: "file", "database" or "stdout"
  674. jobLoggers:
  675. - file
  676. # - database
  677. # - stdout
  678. # The jobLogger sweeper duration (ignored if `jobLogger` is `stdout`)
  679. loggerSweeperDuration: 14 #days
  680. notification:
  681. webhook_job_max_retry: 3
  682. webhook_job_http_client_timeout: 3 # in seconds
  683. reaper:
  684. # the max time to wait for a task to finish, if unfinished after max_update_hours, the task will be mark as error, but the task will continue to run, default value is 24
  685. max_update_hours: 24
  686. # the max time for execution in running state without new task created
  687. max_dangling_hours: 168
  688. # Secret is used when job service communicates with other components.
  689. # If a secret key is not specified, Helm will generate one.
  690. # Must be a string of 16 chars.
  691. secret: ""
  692. # Use an existing secret resource
  693. existingSecret: ""
  694. # Key within the existing secret for the job service secret
  695. existingSecretKey: JOBSERVICE_SECRET
  696. registry:
  697. registry:
  698. image:
  699. repository: goharbor/registry-photon
  700. tag: v2.14.1
  701. # resources:
  702. # requests:
  703. # memory: 256Mi
  704. # cpu: 100m
  705. extraEnvVars: []
  706. controller:
  707. image:
  708. repository: goharbor/harbor-registryctl
  709. tag: v2.14.1
  710. # resources:
  711. # requests:
  712. # memory: 256Mi
  713. # cpu: 100m
  714. extraEnvVars: []
  715. # set the service account to be used, default if left empty
  716. serviceAccountName: ""
  717. # mount the service account token
  718. automountServiceAccountToken: false
  719. replicas: 1
  720. revisionHistoryLimit: 10
  721. nodeSelector: {}
  722. tolerations: []
  723. affinity: {}
  724. # Spread Pods across failure-domains like regions, availability zones or nodes
  725. topologySpreadConstraints: []
  726. # - maxSkew: 1
  727. # topologyKey: topology.kubernetes.io/zone
  728. # nodeTaintsPolicy: Honor
  729. # whenUnsatisfiable: DoNotSchedule
  730. ## Additional deployment annotations
  731. podAnnotations: {}
  732. ## Additional deployment labels
  733. podLabels: {}
  734. ## The priority class to run the pod as
  735. priorityClassName:
  736. # containers to be run before the controller's container starts.
  737. initContainers: []
  738. # Example:
  739. #
  740. # - name: wait
  741. # image: busybox
  742. # command: [ 'sh', '-c', "sleep 20" ]
  743. # Secret is used to secure the upload state from client
  744. # and registry storage backend.
  745. # See: https://github.com/distribution/distribution/blob/release/2.8/docs/configuration.md#http
  746. # If a secret key is not specified, Helm will generate one.
  747. # Must be a string of 16 chars.
  748. secret: ""
  749. # Use an existing secret resource
  750. existingSecret: ""
  751. # Key within the existing secret for the registry service secret
  752. existingSecretKey: REGISTRY_HTTP_SECRET
  753. # If true, the registry returns relative URLs in Location headers. The client is responsible for resolving the correct URL.
  754. relativeurls: false
  755. credentials:
  756. username: "harbor_registry_user"
  757. password: "harbor_registry_password"
  758. # If using existingSecret, the key must be REGISTRY_PASSWD and REGISTRY_HTPASSWD
  759. existingSecret: ""
  760. # Login and password in htpasswd string format. Excludes `registry.credentials.username` and `registry.credentials.password`. May come in handy when integrating with tools like argocd or flux. This allows the same line to be generated each time the template is rendered, instead of the `htpasswd` function from helm, which generates different lines each time because of the salt.
  761. # htpasswdString: $apr1$XLefHzeG$Xl4.s00sMSCCcMyJljSZb0 # example string
  762. htpasswdString: ""
  763. middleware:
  764. enabled: false
  765. type: cloudFront
  766. cloudFront:
  767. baseurl: example.cloudfront.net
  768. keypairid: KEYPAIRID
  769. duration: 3000s
  770. ipfilteredby: none
  771. # The secret key that should be present is CLOUDFRONT_KEY_DATA, which should be the encoded private key
  772. # that allows access to CloudFront
  773. privateKeySecret: "my-secret"
  774. # enable purge _upload directories
  775. upload_purging:
  776. enabled: true
  777. # remove files in _upload directories which exist for a period of time, default is one week.
  778. age: 168h
  779. # the interval of the purge operations
  780. interval: 24h
  781. dryrun: false
  782. trivy:
  783. # enabled the flag to enable Trivy scanner
  784. enabled: true
  785. image:
  786. # repository the repository for Trivy adapter image
  787. repository: goharbor/trivy-adapter-photon
  788. # tag the tag for Trivy adapter image
  789. tag: v2.14.1
  790. # set the service account to be used, default if left empty
  791. serviceAccountName: ""
  792. # mount the service account token
  793. automountServiceAccountToken: false
  794. # replicas the number of Pod replicas
  795. replicas: 1
  796. resources:
  797. requests:
  798. cpu: 200m
  799. memory: 512Mi
  800. limits:
  801. cpu: 1
  802. memory: 1Gi
  803. extraEnvVars: []
  804. nodeSelector: {}
  805. tolerations: []
  806. affinity: {}
  807. # Spread Pods across failure-domains like regions, availability zones or nodes
  808. topologySpreadConstraints: []
  809. # - maxSkew: 1
  810. # topologyKey: topology.kubernetes.io/zone
  811. # nodeTaintsPolicy: Honor
  812. # whenUnsatisfiable: DoNotSchedule
  813. ## Additional deployment annotations
  814. podAnnotations: {}
  815. ## Additional deployment labels
  816. podLabels: {}
  817. ## The priority class to run the pod as
  818. priorityClassName:
  819. # containers to be run before the controller's container starts.
  820. initContainers: []
  821. # Example:
  822. #
  823. # - name: wait
  824. # image: busybox
  825. # command: [ 'sh', '-c', "sleep 20" ]
  826. # debugMode the flag to enable Trivy debug mode with more verbose scanning log
  827. debugMode: false
  828. # vulnType a comma-separated list of vulnerability types. Possible values are `os` and `library`.
  829. vulnType: "os,library"
  830. # severity a comma-separated list of severities to be checked
  831. severity: "UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL"
  832. # ignoreUnfixed the flag to display only fixed vulnerabilities
  833. ignoreUnfixed: false
  834. # insecure the flag to skip verifying registry certificate
  835. insecure: false
  836. # gitHubToken the GitHub access token to download Trivy DB
  837. #
  838. # Trivy DB contains vulnerability information from NVD, Red Hat, and many other upstream vulnerability databases.
  839. # It is downloaded by Trivy from the GitHub release page https://github.com/aquasecurity/trivy-db/releases and cached
  840. # in the local file system (`/home/scanner/.cache/trivy/db/trivy.db`). In addition, the database contains the update
  841. # timestamp so Trivy can detect whether it should download a newer version from the Internet or use the cached one.
  842. # Currently, the database is updated every 12 hours and published as a new release to GitHub.
  843. #
  844. # Anonymous downloads from GitHub are subject to the limit of 60 requests per hour. Normally such rate limit is enough
  845. # for production operations. If, for any reason, it's not enough, you could increase the rate limit to 5000
  846. # requests per hour by specifying the GitHub access token. For more details on GitHub rate limiting please consult
  847. # https://developer.github.com/v3/#rate-limiting
  848. #
  849. # You can create a GitHub token by following the instructions in
  850. # https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line
  851. gitHubToken: ""
  852. # skipUpdate the flag to disable Trivy DB downloads from GitHub
  853. #
  854. # You might want to set the value of this flag to `true` in test or CI/CD environments to avoid GitHub rate limiting issues.
  855. # If the value is set to `true` you have to manually download the `trivy.db` file and mount it in the
  856. # `/home/scanner/.cache/trivy/db/trivy.db` path.
  857. skipUpdate: false
  858. # skipJavaDBUpdate If the flag is enabled you have to manually download the `trivy-java.db` file and mount it in the
  859. # `/home/scanner/.cache/trivy/java-db/trivy-java.db` path
  860. skipJavaDBUpdate: false
  861. # The dbRepository and javaDBRepository flags can take multiple values, improving reliability when downloading databases.
  862. # Databases are downloaded in priority order until one is successful.
  863. # An attempt to download from the next repository is only made if a temporary error is received (e.g. status 429 or 5xx).
  864. #
  865. # OCI repository(ies) to retrieve the trivy vulnerability database in order of priority
  866. dbRepository:
  867. - "mirror.gcr.io/aquasec/trivy-db"
  868. - "ghcr.io/aquasecurity/trivy-db"
  869. # OCI repository(ies) to retrieve the Java trivy vulnerability database in order of priority
  870. javaDBRepository:
  871. - "mirror.gcr.io/aquasec/trivy-java-db"
  872. - "ghcr.io/aquasecurity/trivy-java-db"
  873. # The offlineScan option prevents Trivy from sending API requests to identify dependencies.
  874. #
  875. # Scanning JAR files and pom.xml may require Internet access for better detection, but this option tries to avoid it.
  876. # For example, the offline mode will not try to resolve transitive dependencies in pom.xml when the dependency doesn't
  877. # exist in the local repositories. It means a number of detected vulnerabilities might be fewer in offline mode.
  878. # It would work if all the dependencies are in local.
  879. # This option doesn’t affect DB download. You need to specify skipUpdate as well as offlineScan in an air-gapped environment.
  880. offlineScan: false
  881. # Comma-separated list of what security issues to detect. Defaults to `vuln`.
  882. securityCheck: "vuln"
  883. # The duration to wait for scan completion
  884. timeout: 5m0s
  885. database:
  886. # if external database is used, set "type" to "external"
  887. # and fill the connection information in "external" section
  888. type: internal
  889. internal:
  890. image:
  891. repository: goharbor/harbor-db
  892. tag: v2.14.1
  893. # set the service account to be used, default if left empty
  894. serviceAccountName: ""
  895. # mount the service account token
  896. automountServiceAccountToken: false
  897. # resources:
  898. # requests:
  899. # memory: 256Mi
  900. # cpu: 100m
  901. # The timeout used in livenessProbe; 1 to 5 seconds
  902. livenessProbe:
  903. timeoutSeconds: 1
  904. # The timeout used in readinessProbe; 1 to 5 seconds
  905. readinessProbe:
  906. timeoutSeconds: 1
  907. extraEnvVars: []
  908. nodeSelector: {}
  909. tolerations: []
  910. affinity: {}
  911. ## The priority class to run the pod as
  912. priorityClassName:
  913. # containers to be run before the controller's container starts.
  914. extrInitContainers: []
  915. # Example:
  916. #
  917. # - name: wait
  918. # image: busybox
  919. # command: [ 'sh', '-c', "sleep 20" ]
  920. # The initial superuser password for internal database
  921. password: "changeit"
  922. # The size limit for Shared memory, pgSQL use it for shared_buffer
  923. # More details see:
  924. # https://github.com/goharbor/harbor/issues/15034
  925. shmSizeLimit: 512Mi
  926. initContainer:
  927. migrator: {}
  928. # resources:
  929. # requests:
  930. # memory: 128Mi
  931. # cpu: 100m
  932. permissions: {}
  933. # resources:
  934. # requests:
  935. # memory: 128Mi
  936. # cpu: 100m
  937. external:
  938. host: "192.168.0.1"
  939. port: "5432"
  940. username: "user"
  941. password: "password"
  942. coreDatabase: "registry"
  943. # if using existing secret, the key must be "password"
  944. existingSecret: ""
  945. # "disable" - No SSL
  946. # "require" - Always SSL (skip verification)
  947. # "verify-ca" - Always SSL (verify that the certificate presented by the
  948. # server was signed by a trusted CA)
  949. # "verify-full" - Always SSL (verify that the certification presented by the
  950. # server was signed by a trusted CA and the server host name matches the one
  951. # in the certificate)
  952. sslmode: "disable"
  953. # The maximum number of connections in the idle connection pool per pod (core+exporter).
  954. # If it <=0, no idle connections are retained.
  955. maxIdleConns: 100
  956. # The maximum number of open connections to the database per pod (core+exporter).
  957. # If it <= 0, then there is no limit on the number of open connections.
  958. # Note: the default number of connections is 1024 for harbor's postgres.
  959. maxOpenConns: 900
  960. ## Additional deployment annotations
  961. podAnnotations: {}
  962. ## Additional deployment labels
  963. podLabels: {}
  964. redis:
  965. # if external Redis is used, set "type" to "external"
  966. # and fill the connection information in "external" section
  967. type: internal
  968. internal:
  969. image:
  970. repository: goharbor/redis-photon
  971. tag: v2.14.1
  972. # set the service account to be used, default if left empty
  973. serviceAccountName: ""
  974. # mount the service account token
  975. automountServiceAccountToken: false
  976. # resources:
  977. # requests:
  978. # memory: 256Mi
  979. # cpu: 100m
  980. extraEnvVars: []
  981. nodeSelector: {}
  982. tolerations: []
  983. affinity: {}
  984. ## The priority class to run the pod as
  985. priorityClassName:
  986. # containers to be run before the controller's container starts.
  987. initContainers: []
  988. # Example:
  989. #
  990. # - name: wait
  991. # image: busybox
  992. # command: [ 'sh', '-c', "sleep 20" ]
  993. # # jobserviceDatabaseIndex defaults to "1"
  994. # # registryDatabaseIndex defaults to "2"
  995. # # trivyAdapterIndex defaults to "5"
  996. # # harborDatabaseIndex defaults to "0", but it can be configured to "6", this config is optional
  997. # # cacheLayerDatabaseIndex defaults to "0", but it can be configured to "7", this config is optional
  998. jobserviceDatabaseIndex: "1"
  999. registryDatabaseIndex: "2"
  1000. trivyAdapterIndex: "5"
  1001. # harborDatabaseIndex: "6"
  1002. # cacheLayerDatabaseIndex: "7"
  1003. external:
  1004. # support redis, redis+sentinel
  1005. # addr for redis: <host_redis>:<port_redis>
  1006. # addr for redis+sentinel: <host_sentinel1>:<port_sentinel1>,<host_sentinel2>:<port_sentinel2>,<host_sentinel3>:<port_sentinel3>
  1007. addr: "192.168.0.2:6379"
  1008. # The name of the set of Redis instances to monitor, it must be set to support redis+sentinel
  1009. sentinelMasterSet: ""
  1010. # TLS configuration for redis connection
  1011. # only server-authentication is supported, mTLS for redis connection is not supported
  1012. # tls connection will be disable by default
  1013. # Once `tlsOptions.enable` set as true, tls/ssl connection will be used for redis
  1014. # Please set the `caBundleSecretName` in this configuration file which conatins redis server rootCA if it is self-signed.
  1015. # The secret must contain keys named "ca.crt" which will be injected into the trust store
  1016. tlsOptions:
  1017. enable: false
  1018. # The "coreDatabaseIndex" must be "0" as the library Harbor
  1019. # used doesn't support configuring it
  1020. # harborDatabaseIndex defaults to "0", but it can be configured to "6", this config is optional
  1021. # cacheLayerDatabaseIndex defaults to "0", but it can be configured to "7", this config is optional
  1022. coreDatabaseIndex: "0"
  1023. jobserviceDatabaseIndex: "1"
  1024. registryDatabaseIndex: "2"
  1025. trivyAdapterIndex: "5"
  1026. # harborDatabaseIndex: "6"
  1027. # cacheLayerDatabaseIndex: "7"
  1028. # username field can be an empty string, and it will be authenticated against the default user
  1029. username: ""
  1030. password: ""
  1031. # If using existingSecret, the key must be REDIS_PASSWORD, if ACL mode enabled, also inlcudes data of username, the keys must be REDIS_USERNAME
  1032. existingSecret: ""
  1033. ## Additional deployment annotations
  1034. podAnnotations: {}
  1035. ## Additional deployment labels
  1036. podLabels: {}
  1037. exporter:
  1038. image:
  1039. repository: goharbor/harbor-exporter
  1040. tag: v2.14.1
  1041. serviceAccountName: ""
  1042. # mount the service account token
  1043. automountServiceAccountToken: false
  1044. replicas: 1
  1045. revisionHistoryLimit: 10
  1046. # resources:
  1047. # requests:
  1048. # memory: 256Mi
  1049. # cpu: 100m
  1050. extraEnvVars: []
  1051. podAnnotations: {}
  1052. ## Additional deployment labels
  1053. podLabels: {}
  1054. nodeSelector: {}
  1055. tolerations: []
  1056. affinity: {}
  1057. # Spread Pods across failure-domains like regions, availability zones or nodes
  1058. topologySpreadConstraints: []
  1059. ## The priority class to run the pod as
  1060. priorityClassName:
  1061. # - maxSkew: 1
  1062. # topologyKey: topology.kubernetes.io/zone
  1063. # nodeTaintsPolicy: Honor
  1064. # whenUnsatisfiable: DoNotSchedule
  1065. cacheDuration: 23
  1066. cacheCleanInterval: 14400