Skip to content

Commit 418931d

Browse files
chore: update README.md with HA example
1 parent c9c5fd5 commit 418931d

File tree

2 files changed

+326
-9
lines changed

2 files changed

+326
-9
lines changed

charts/gitops-runtime/README.md

Lines changed: 178 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,154 @@ sealed-secrets:
189189
enabled: false
190190
```
191191

192+
## High Availability
193+
194+
This chart installs the non-HA version of GitOps Runtime by default. If you want to run GitOps Runtime in HA mode, you can use the example values below:
195+
196+
> **Warning:**
197+
> You need at least 3 worker nodes for HA mode
198+
199+
### HA mode with autoscaling
200+
201+
```yaml
202+
global:
203+
topologySpreadConstraints:
204+
- maxSkew: 1
205+
topologyKey: kubernetes.io/hostname
206+
whenUnsatisfiable: DoNotSchedule
207+
208+
app-proxy:
209+
replicaCount: 2
210+
pdb:
211+
enabled: true
212+
minAvailable: 1
213+
topologySpreadConstraints:
214+
- maxSkew: 1
215+
topologyKey: kubernetes.io/hostname
216+
whenUnsatisfiable: DoNotSchedule
217+
labelSelector:
218+
matchLabels:
219+
app: cap-app-proxy
220+
221+
gitops-operator:
222+
replicaCount: 2
223+
pdb:
224+
enabled: true
225+
minAvailable: 1
226+
topologySpreadConstraints:
227+
- maxSkew: 1
228+
topologyKey: kubernetes.io/hostname
229+
whenUnsatisfiable: DoNotSchedule
230+
labelSelector:
231+
matchLabels:
232+
app: gitops-operator
233+
234+
internal-router:
235+
replicaCount: 2
236+
pdb:
237+
enabled: true
238+
minAvailable: 1
239+
topologySpreadConstraints:
240+
- maxSkew: 1
241+
topologyKey: kubernetes.io/hostname
242+
whenUnsatisfiable: DoNotSchedule
243+
labelSelector:
244+
matchLabels:
245+
app: internal-router
246+
247+
cf-argocd-extras:
248+
sourcesServer:
249+
hpa:
250+
enabled: true
251+
minReplicas: 2
252+
pdb:
253+
enabled: true
254+
minAvailable: 1
255+
topologySpreadConstraints:
256+
- maxSkew: 1
257+
topologyKey: kubernetes.io/hostname
258+
whenUnsatisfiable: DoNotSchedule
259+
labelSelector:
260+
matchLabels:
261+
app.kubernetes.io/component: sources-server
262+
eventReporter:
263+
topologySpreadConstraints:
264+
- maxSkew: 1
265+
topologyKey: kubernetes.io/hostname
266+
whenUnsatisfiable: DoNotSchedule
267+
labelSelector:
268+
matchLabels:
269+
app.kubernetes.io/component: event-reporter
270+
271+
argo-cd:
272+
redis-ha:
273+
enabled: true
274+
275+
controller:
276+
replicas: 1
277+
278+
server:
279+
autoscaling:
280+
enabled: true
281+
minReplicas: 2
282+
pdb:
283+
enabled: true
284+
minAvailable: 1
285+
286+
repoServer:
287+
autoscaling:
288+
enabled: true
289+
minReplicas: 2
290+
pdb:
291+
enabled: true
292+
minAvailable: 1
293+
294+
applicationSet:
295+
replicas: 2
296+
297+
argo-workflows:
298+
controller:
299+
replicas: 2
300+
pdb:
301+
enabled: true
302+
minAvailable: 1
303+
server:
304+
autoscaling:
305+
enabled: true
306+
minReplicas: 2
307+
pdb:
308+
enabled: true
309+
minAvailable: 1
310+
311+
event-reporters:
312+
workflow:
313+
sensor:
314+
replicas: 2
315+
affinity:
316+
podAntiAffinity:
317+
requiredDuringSchedulingIgnoredDuringExecution:
318+
- labelSelector:
319+
matchExpressions:
320+
- key: sensor-name
321+
operator: In
322+
values:
323+
- workflow-reporter
324+
topologyKey: "kubernetes.io/hostname"
325+
rollout:
326+
sensor:
327+
replicas: 2
328+
affinity:
329+
podAntiAffinity:
330+
requiredDuringSchedulingIgnoredDuringExecution:
331+
- labelSelector:
332+
matchExpressions:
333+
- key: sensor-name
334+
operator: In
335+
values:
336+
- rollout-reporter
337+
topologyKey: "kubernetes.io/hostname"
338+
```
339+
192340
## Upgrading
193341
194342
### To 0.23.x
@@ -230,13 +378,13 @@ gitops-operator:
230378
| app-proxy.extraVolumeMounts | list | `[]` | Extra volume mounts for main container |
231379
| app-proxy.extraVolumes | list | `[]` | extra volumes |
232380
| app-proxy.fullnameOverride | string | `"cap-app-proxy"` | |
233-
| app-proxy.image-enrichment | object | `{"config":{"clientHeartbeatIntervalInSeconds":5,"concurrencyCmKey":"imageReportExecutor","concurrencyCmName":"workflow-synchronization-semaphores","images":{"gitEnrichment":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-image-enricher-git-info","tag":"1.1.14-main"},"jiraEnrichment":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-image-enricher-jira-info","tag":"1.1.14-main"},"reportImage":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-report-image-info","tag":"1.1.14-main"}},"podGcStrategy":"OnWorkflowCompletion","ttlActiveInSeconds":900,"ttlAfterCompletionInSeconds":86400},"enabled":true,"serviceAccount":{"annotations":null,"create":true,"name":"codefresh-image-enrichment-sa"}}` | Image enrichment process configuration |
234-
| app-proxy.image-enrichment.config | object | `{"clientHeartbeatIntervalInSeconds":5,"concurrencyCmKey":"imageReportExecutor","concurrencyCmName":"workflow-synchronization-semaphores","images":{"gitEnrichment":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-image-enricher-git-info","tag":"1.1.14-main"},"jiraEnrichment":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-image-enricher-jira-info","tag":"1.1.14-main"},"reportImage":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-report-image-info","tag":"1.1.14-main"}},"podGcStrategy":"OnWorkflowCompletion","ttlActiveInSeconds":900,"ttlAfterCompletionInSeconds":86400}` | Configurations for image enrichment workflow |
381+
| app-proxy.image-enrichment | object | `{"config":{"clientHeartbeatIntervalInSeconds":5,"concurrencyCmKey":"imageReportExecutor","concurrencyCmName":"workflow-synchronization-semaphores","images":{"gitEnrichment":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-image-enricher-git-info","tag":"1.1.15-main"},"jiraEnrichment":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-image-enricher-jira-info","tag":"1.1.15-main"},"reportImage":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-report-image-info","tag":"1.1.15-main"}},"podGcStrategy":"OnWorkflowCompletion","ttlActiveInSeconds":900,"ttlAfterCompletionInSeconds":86400},"enabled":true,"serviceAccount":{"annotations":null,"create":true,"name":"codefresh-image-enrichment-sa"}}` | Image enrichment process configuration |
382+
| app-proxy.image-enrichment.config | object | `{"clientHeartbeatIntervalInSeconds":5,"concurrencyCmKey":"imageReportExecutor","concurrencyCmName":"workflow-synchronization-semaphores","images":{"gitEnrichment":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-image-enricher-git-info","tag":"1.1.15-main"},"jiraEnrichment":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-image-enricher-jira-info","tag":"1.1.15-main"},"reportImage":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-report-image-info","tag":"1.1.15-main"}},"podGcStrategy":"OnWorkflowCompletion","ttlActiveInSeconds":900,"ttlAfterCompletionInSeconds":86400}` | Configurations for image enrichment workflow |
235383
| app-proxy.image-enrichment.config.clientHeartbeatIntervalInSeconds | int | `5` | Client heartbeat interval in seconds for image enrichemnt workflow |
236384
| app-proxy.image-enrichment.config.concurrencyCmKey | string | `"imageReportExecutor"` | The name of the key in the configmap to use as synchronization semaphore |
237385
| app-proxy.image-enrichment.config.concurrencyCmName | string | `"workflow-synchronization-semaphores"` | The name of the configmap to use as synchronization semaphore, see https://argoproj.github.io/argo-workflows/synchronization/ |
238-
| app-proxy.image-enrichment.config.images | object | `{"gitEnrichment":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-image-enricher-git-info","tag":"1.1.14-main"},"jiraEnrichment":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-image-enricher-jira-info","tag":"1.1.14-main"},"reportImage":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-report-image-info","tag":"1.1.14-main"}}` | Enrichemnt images |
239-
| app-proxy.image-enrichment.config.images.reportImage | object | `{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-report-image-info","tag":"1.1.14-main"}` | Report image enrichment task image |
386+
| app-proxy.image-enrichment.config.images | object | `{"gitEnrichment":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-image-enricher-git-info","tag":"1.1.15-main"},"jiraEnrichment":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-image-enricher-jira-info","tag":"1.1.15-main"},"reportImage":{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-report-image-info","tag":"1.1.15-main"}}` | Enrichemnt images |
387+
| app-proxy.image-enrichment.config.images.reportImage | object | `{"registry":"quay.io","repository":"codefreshplugins/argo-hub-codefresh-csdp-report-image-info","tag":"1.1.15-main"}` | Report image enrichment task image |
240388
| app-proxy.image-enrichment.config.podGcStrategy | string | `"OnWorkflowCompletion"` | Pod grabage collection strategy. By default all pods will be deleted when the enrichment workflow completes. |
241389
| app-proxy.image-enrichment.config.ttlActiveInSeconds | int | `900` | Maximum allowed runtime for the enrichment workflow |
242390
| app-proxy.image-enrichment.config.ttlAfterCompletionInSeconds | int | `86400` | Number of seconds to live after completion |
@@ -247,17 +395,35 @@ gitops-operator:
247395
| app-proxy.image-enrichment.serviceAccount.name | string | `"codefresh-image-enrichment-sa"` | Name of the service account to create or the name of the existing one to use |
248396
| app-proxy.image.pullPolicy | string | `"IfNotPresent"` | |
249397
| app-proxy.image.repository | string | `"quay.io/codefresh/cap-app-proxy"` | |
250-
| app-proxy.image.tag | string | `"1.3680.0"` | |
398+
| app-proxy.image.tag | string | `"1.3706.0"` | |
251399
| app-proxy.imagePullSecrets | list | `[]` | |
252400
| app-proxy.initContainer.command[0] | string | `"./init.sh"` | |
253401
| app-proxy.initContainer.env | object | `{}` | |
254402
| app-proxy.initContainer.extraVolumeMounts | list | `[]` | Extra volume mounts for init container |
255403
| app-proxy.initContainer.image.pullPolicy | string | `"IfNotPresent"` | |
256404
| app-proxy.initContainer.image.repository | string | `"quay.io/codefresh/cap-app-proxy-init"` | |
257-
| app-proxy.initContainer.image.tag | string | `"1.3680.0"` | |
405+
| app-proxy.initContainer.image.tag | string | `"1.3706.0"` | |
258406
| app-proxy.initContainer.resources.limits | object | `{}` | |
259407
| app-proxy.initContainer.resources.requests.cpu | string | `"0.2"` | |
260408
| app-proxy.initContainer.resources.requests.memory | string | `"256Mi"` | |
409+
| app-proxy.leader-elector.containerSecurityContext.allowPrivilegeEscalation | bool | `false` | |
410+
| app-proxy.leader-elector.image.registry | string | `"quay.io"` | |
411+
| app-proxy.leader-elector.image.repository | string | `"codefresh/leader-elector"` | |
412+
| app-proxy.leader-elector.image.tag | string | `"0.0.1"` | |
413+
| app-proxy.leader-elector.livenessProbe.failureThreshold | int | `10` | |
414+
| app-proxy.leader-elector.livenessProbe.initialDelaySeconds | int | `10` | |
415+
| app-proxy.leader-elector.livenessProbe.periodSeconds | int | `10` | |
416+
| app-proxy.leader-elector.livenessProbe.successThreshold | int | `1` | |
417+
| app-proxy.leader-elector.livenessProbe.timeoutSeconds | int | `10` | |
418+
| app-proxy.leader-elector.readinessProbe.failureThreshold | int | `3` | |
419+
| app-proxy.leader-elector.readinessProbe.initialDelaySeconds | int | `10` | |
420+
| app-proxy.leader-elector.readinessProbe.periodSeconds | int | `10` | |
421+
| app-proxy.leader-elector.readinessProbe.successThreshold | int | `1` | |
422+
| app-proxy.leader-elector.readinessProbe.timeoutSeconds | int | `10` | |
423+
| app-proxy.leader-elector.resources.limits.cpu | string | `"200m"` | |
424+
| app-proxy.leader-elector.resources.limits.memory | string | `"200Mi"` | |
425+
| app-proxy.leader-elector.resources.requests.cpu | string | `"100m"` | |
426+
| app-proxy.leader-elector.resources.requests.memory | string | `"100Mi"` | |
261427
| app-proxy.livenessProbe.failureThreshold | int | `10` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded. |
262428
| app-proxy.livenessProbe.initialDelaySeconds | int | `10` | Number of seconds after the container has started before [probe] is initiated. |
263429
| app-proxy.livenessProbe.periodSeconds | int | `10` | How often (in seconds) to perform the [probe]. |
@@ -325,10 +491,10 @@ gitops-operator:
325491
| argo-workflows.mainContainer.resources.requests.ephemeral-storage | string | `"10Mi"` | |
326492
| argo-workflows.server.authModes | list | `["client"]` | auth-mode needs to be set to client to be able to see workflow logs from Codefresh UI |
327493
| argo-workflows.server.baseHref | string | `"/workflows/"` | Do not change. Workflows UI is only accessed through internal router, changing this values will break routing to workflows native UI from Codefresh. |
328-
| cf-argocd-extras | object | `{"eventReporter":{"affinity":{},"container":{"image":{"registry":"quay.io","repository":"codefresh/cf-argocd-extras","tag":"v0.5.12"}},"enabled":true,"nodeSelector":{},"pdb":{"enabled":false,"maxUnavailable":"","minAvailable":"50%"},"resources":{"requests":{"cpu":"100m","memory":"128Mi"}},"serviceMonitor":{"main":{"enabled":false}},"tolerations":[]},"sourcesServer":{"affinity":{},"container":{"image":{"registry":"quay.io","repository":"codefresh/cf-argocd-extras","tag":"v0.5.12"}},"enabled":true,"hpa":{"enabled":false,"maxReplicas":10,"minReplicas":1,"targetCPUUtilizationPercentage":70},"nodeSelector":{},"pdb":{"enabled":false,"maxUnavailable":"","minAvailable":"50%"},"resources":{"requests":{"cpu":"100m","memory":"128Mi"}},"tolerations":[]}}` | Codefresh extra services for ArgoCD |
494+
| cf-argocd-extras | object | `{"eventReporter":{"affinity":{},"container":{"image":{"registry":"quay.io","repository":"codefresh/cf-argocd-extras","tag":"v0.5.14"}},"enabled":true,"nodeSelector":{},"pdb":{"enabled":false,"maxUnavailable":"","minAvailable":"50%"},"resources":{"requests":{"cpu":"100m","memory":"128Mi"}},"serviceMonitor":{"main":{"enabled":false}},"tolerations":[]},"sourcesServer":{"affinity":{},"container":{"image":{"registry":"quay.io","repository":"codefresh/cf-argocd-extras","tag":"v0.5.14"}},"enabled":true,"hpa":{"enabled":false,"maxReplicas":10,"minReplicas":1,"targetCPUUtilizationPercentage":70},"nodeSelector":{},"pdb":{"enabled":false,"maxUnavailable":"","minAvailable":"50%"},"resources":{"requests":{"cpu":"100m","memory":"128Mi"}},"tolerations":[]}}` | Codefresh extra services for ArgoCD |
329495
| cf-argocd-extras.eventReporter.pdb.enabled | bool | `false` | Enable PDB for event-reporter |
330496
| cf-argocd-extras.eventReporter.serviceMonitor.main.enabled | bool | `false` | Enable ServiceMonitor for event reporter |
331-
| cf-argocd-extras.sourcesServer | object | `{"affinity":{},"container":{"image":{"registry":"quay.io","repository":"codefresh/cf-argocd-extras","tag":"v0.5.12"}},"enabled":true,"hpa":{"enabled":false,"maxReplicas":10,"minReplicas":1,"targetCPUUtilizationPercentage":70},"nodeSelector":{},"pdb":{"enabled":false,"maxUnavailable":"","minAvailable":"50%"},"resources":{"requests":{"cpu":"100m","memory":"128Mi"}},"tolerations":[]}` | Sources server configuration |
497+
| cf-argocd-extras.sourcesServer | object | `{"affinity":{},"container":{"image":{"registry":"quay.io","repository":"codefresh/cf-argocd-extras","tag":"v0.5.14"}},"enabled":true,"hpa":{"enabled":false,"maxReplicas":10,"minReplicas":1,"targetCPUUtilizationPercentage":70},"nodeSelector":{},"pdb":{"enabled":false,"maxUnavailable":"","minAvailable":"50%"},"resources":{"requests":{"cpu":"100m","memory":"128Mi"}},"tolerations":[]}` | Sources server configuration |
332498
| cf-argocd-extras.sourcesServer.hpa.enabled | bool | `false` | Enable HPA for sources server |
333499
| cf-argocd-extras.sourcesServer.pdb.enabled | bool | `false` | Enable PDB for sources server |
334500
| codefreshWorkflowLogStoreCM | object | `{"enabled":true,"endpoint":"gitops-workflow-logs.codefresh.io","insecure":false}` | Argo workflows logs storage on Codefresh platform settings. Don't change unless instructed by Codefresh support. |
@@ -397,10 +563,13 @@ gitops-operator:
397563
| gitops-operator.fullnameOverride | string | `""` | |
398564
| gitops-operator.image.registry | string | `"quay.io"` | defaults |
399565
| gitops-operator.image.repository | string | `"codefresh/codefresh-gitops-operator"` | |
400-
| gitops-operator.image.tag | string | `"v0.8.11"` | |
566+
| gitops-operator.image.tag | string | `"v0.11.1"` | |
401567
| gitops-operator.imagePullSecrets | list | `[]` | |
402568
| gitops-operator.nameOverride | string | `""` | |
403569
| gitops-operator.nodeSelector | object | `{}` | |
570+
| gitops-operator.pdb.enabled | bool | `false` | |
571+
| gitops-operator.pdb.maxUnavailable | string | `""` | |
572+
| gitops-operator.pdb.minAvailable | int | `1` | |
404573
| gitops-operator.podAnnotations | object | `{}` | |
405574
| gitops-operator.podLabels | object | `{}` | |
406575
| gitops-operator.replicaCount | int | `1` | |

0 commit comments

Comments
 (0)