Skip to content

Commit 30639e6

Browse files
Merge pull request #94 from codefresh-io/CR-24728-argo-cd-helm-7
feat: update upstream argo-cd 2.12.3 and bump helm chart to 7.4.7
2 parents f526b3f + 449822b commit 30639e6

File tree

82 files changed

+2250
-869
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+2250
-869
lines changed

.github/dependabot.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,11 @@ updates:
66
schedule:
77
interval: weekly
88
day: "saturday"
9+
commit-message:
10+
prefix: "chore(deps)"
11+
groups:
12+
dependencies:
13+
applies-to: version-updates
14+
update-types:
15+
- "minor"
16+
- "patch"

.github/workflows/lint-and-test.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
options: --user 1001
1414
steps:
1515
- name: Checkout
16-
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
16+
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
1717
- name: Run ah lint
1818
working-directory: ./charts
1919
run: ah lint
@@ -22,7 +22,7 @@ jobs:
2222
runs-on: ubuntu-latest
2323
steps:
2424
- name: Checkout
25-
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
25+
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
2626
with:
2727
fetch-depth: 0
2828

@@ -32,7 +32,7 @@ jobs:
3232
version: v3.10.1 # Also update in publish.yaml
3333

3434
- name: Set up python
35-
uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0
35+
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1
3636
with:
3737
python-version: 3.9
3838

.github/workflows/pr-title.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
name: Validate PR title
2020
runs-on: ubuntu-latest
2121
steps:
22-
- uses: amannn/action-semantic-pull-request@cfb60706e18bc85e8aec535e3c577abe8f70378e # v5.5.2
22+
- uses: amannn/action-semantic-pull-request@0723387faaf9b38adef4775cd42cfd5155ed6017 # v5.5.3
2323
env:
2424
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2525
with:

.github/workflows/publish.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
runs-on: ubuntu-latest
1919
steps:
2020
- name: Checkout
21-
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
21+
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
2222
with:
2323
fetch-depth: 0
2424

@@ -67,7 +67,7 @@ jobs:
6767
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
6868

6969
- name: Login to GHCR
70-
uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0
70+
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
7171
with:
7272
registry: ghcr.io
7373
username: ${{ github.actor }}

.github/workflows/renovate.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,21 @@ jobs:
1616
runs-on: ubuntu-latest
1717
steps:
1818
- name: Get token
19-
uses: actions/create-github-app-token@a0de6af83968303c8c955486bf9739a57d23c7f1 # v1.10.0
19+
uses: actions/create-github-app-token@31c86eb3b33c9b601a1f60f98dcbfd1d70f379b4 # v1.10.3
2020
id: get_token
2121
with:
2222
app-id: ${{ vars.RENOVATE_APP_ID }}
2323
private-key: ${{ secrets.RENOVATE_APP_PRIVATE_KEY }}
2424

2525
- name: Checkout
26-
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
26+
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
2727

2828
- name: Self-hosted Renovate
29-
uses: renovatebot/github-action@063e0c946b9c1af35ef3450efc44114925d6e8e6 # v40.1.11
29+
uses: renovatebot/github-action@630a255a1f2f56c8d8ce160bed3e3ca577ca53e2 # v40.2.7
3030
with:
3131
configurationFile: .github/configs/renovate-config.js
3232
# renovate: datasource=docker depName=ghcr.io/renovatebot/renovate
33-
renovate-version: 37.332.0
33+
renovate-version: 38.18.0
3434
token: '${{ steps.get_token.outputs.token }}'
3535
env:
3636
LOG_LEVEL: 'debug'

.github/workflows/scorecard.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ jobs:
3333

3434
steps:
3535
- name: "Checkout code"
36-
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
36+
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
3737
with:
3838
persist-credentials: false
3939

4040
- name: "Run analysis"
41-
uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3
41+
uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0
4242
with:
4343
results_file: results.sarif
4444
results_format: sarif
@@ -60,14 +60,14 @@ jobs:
6060
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
6161
# format to the repository Actions tab.
6262
- name: "Upload artifact"
63-
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
63+
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6
6464
with:
6565
name: SARIF file
6666
path: results.sarif
6767
retention-days: 5
6868

6969
# Upload the results to GitHub's code scanning dashboard.
7070
- name: "Upload to code-scanning"
71-
uses: github/codeql-action/upload-sarif@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5
71+
uses: github/codeql-action/upload-sarif@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5
7272
with:
7373
sarif_file: results.sarif

README.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,63 @@ Please refer to [SECURITY.md](SECURITY.md) for details on how to report security
4242
### Changelog
4343

4444
Releases are managed independently for each helm chart, and changelogs are tracked on each release. Read more about this process [here](https://github.com/argoproj/argo-helm/blob/main/CONTRIBUTING.md#changelog).
45+
46+
## Charts use Helm "Capabilities"
47+
48+
Our charts make use of the Helm built-in object "Capabilities":
49+
> This provides information about what capabilities the Kubernetes cluster supports.
50+
> *Source: https://helm.sh/docs/chart_template_guide/builtin_objects/*
51+
52+
Today we use:
53+
54+
- `.Capabilities.APIVersions.Has` mostly to determine whether the CRDs for ServiceMonitors (from prometheus-operator) exists inside the cluster
55+
- `.Capabilities.KubeVersion.Version` to handle correct apiVersion of a specific resource kind (eg. "policy/v1" vs. "policy/v1beta1")
56+
57+
If you use the charts only to template the manifests, without installing (`helm install ..`), you need to make sure that Helm (or the Helm SDK) receives the available APIs from your Kubernetes cluster.
58+
59+
For this you need to pass the `--api-versions` parameter to the `helm template` command:
60+
61+
```bash
62+
helm template argocd \
63+
oci://ghcr.io/argoproj/argo-helm/argo-cd \
64+
--api-versions monitoring.coreos.com/v1 \
65+
--values my-argocd-values.yaml
66+
```
67+
68+
If you use other tools like [Kustomize](https://kubectl.docs.kubernetes.io/references/kustomize/builtins/) or [helmfile](https://helmfile.readthedocs.io/en/latest/#configuration) to render it, there are equivalent options.
69+
70+
Example with Kustomize:
71+
72+
```yaml
73+
# kustomization.yaml
74+
apiVersion: kustomize.config.k8s.io/v1beta1
75+
kind: Kustomization
76+
77+
helmCharts:
78+
- name: argo-cd
79+
repo: oci://ghcr.io/argoproj/argo-helm
80+
version: x.y.z
81+
releaseName: argocd
82+
apiVersions:
83+
- monitoring.coreos.com/v1
84+
valuesFile: my-argocd-values.yaml
85+
```
86+
87+
Example with helmfile:
88+
89+
```yaml
90+
# helmfile.yaml
91+
repositories:
92+
- name: argo
93+
url: https://argoproj.github.io/argo-helm
94+
95+
apiVersions:
96+
- monitoring.coreos.com/v1
97+
98+
releases:
99+
- name: argocd
100+
namespace: argocd
101+
chart: argo/argo-cd
102+
values:
103+
- my-argocd-values.yaml
104+
```

charts/argo-cd/Chart.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
apiVersion: v2
2-
appVersion: v2.11-2024.8.19-6be897266
2+
appVersion: v2.12-2024.9.3-6f8e0c7e2
33
kubeVersion: ">=1.23.0-0"
44
description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes.
55
name: argo-cd
6-
version: 6.11.1-8-cap-2.11-repo-server-cftoken-fix
6+
version: 7.4.7-0-cap-2.12-2024.9.3-6f8e0c7e2
77
home: https://github.com/argoproj/argo-helm
88
icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png
99
sources:
@@ -27,4 +27,4 @@ annotations:
2727
url: https://argoproj.github.io/argo-helm/pgp_keys.asc
2828
artifacthub.io/changes: |
2929
- kind: changed
30-
description: Upgrade argo-cd to v2.11-2024.8.19-6be897266 with v1 reporter removal
30+
description: Upgrade argo-cd to v2.12.3

charts/argo-cd/README.md

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,31 @@ For full list of changes please check ArtifactHub [changelog].
278278

279279
Highlighted versions provide information about additional steps that should be performed by user when upgrading to newer version.
280280

281+
### 7.0.0
282+
283+
We changed the type of `.Values.configs.clusterCredentials` from `list` to `object`.
284+
If you used the value, please migrate like below.
285+
286+
```yaml
287+
# before
288+
configs:
289+
clusterCredentials:
290+
- mycluster:
291+
server: https://mycluster.example.com
292+
labels: {}
293+
annotations: {}
294+
# ...
295+
296+
# after
297+
configs:
298+
clusterCredentials:
299+
mycluster:
300+
server: https://mycluster.example.com
301+
labels: {}
302+
annotations: {}
303+
# ...
304+
```
305+
281306
### 6.10.0
282307

283308
This version introduces authentication for Redis to mitigate GHSA-9766-5277-j5hr.
@@ -744,6 +769,8 @@ NAME: my-release
744769
| global.deploymentAnnotations | object | `{}` | Annotations for the all deployed Deployments |
745770
| global.deploymentStrategy | object | `{}` | Deployment strategy for the all deployed Deployments |
746771
| global.domain | string | `"argocd.example.com"` | Default domain used by all components |
772+
| global.dualStack.ipFamilies | list | `[]` | IP families that should be supported and the order in which they should be applied to ClusterIP as well. Can be IPv4 and/or IPv6. |
773+
| global.dualStack.ipFamilyPolicy | string | `""` | IP family policy to configure dual-stack see [Configure dual-stack](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) |
747774
| global.env | list | `[]` | Environment variables to pass to all deployed Deployments |
748775
| global.hostAliases | list | `[]` | Mapping between IP and hostnames that will be injected as entries in the pod's hosts files |
749776
| global.image.imagePullPolicy | string | `"IfNotPresent"` | If defined, a imagePullPolicy applied to all Argo CD deployments |
@@ -768,7 +795,7 @@ NAME: my-release
768795

769796
| Key | Type | Default | Description |
770797
|-----|------|---------|-------------|
771-
| configs.clusterCredentials | list | `[]` (See [values.yaml]) | Provide one or multiple [external cluster credentials] |
798+
| configs.clusterCredentials | object | `{}` (See [values.yaml]) | Provide one or multiple [external cluster credentials] |
772799
| configs.cm."admin.enabled" | bool | `true` | Enable local admin user |
773800
| configs.cm."application.instanceLabelKey" | string | Defaults to app.kubernetes.io/instance | The name of tracking label used by Argo CD for resource pruning |
774801
| configs.cm."exec.enabled" | bool | `false` | Enable exec feature in Argo UI |
@@ -1039,7 +1066,7 @@ NAME: my-release
10391066
| server.certificate.privateKey.rotationPolicy | string | `"Never"` | Rotation policy of private key when certificate is re-issued. Either: `Never` or `Always` |
10401067
| server.certificate.privateKey.size | int | `2048` | Key bit size of the private key. If algorithm is set to `Ed25519`, size is ignored. |
10411068
| server.certificate.renewBefore | string | `""` (defaults to 360h = 15d if not specified) | How long before the expiry a certificate should be renewed. |
1042-
| server.certificate.secretName | string | `"argocd-server-tls"` | The name of the Secret that will be automatically created and managed by this Certificate resource |
1069+
| server.certificate.secretTemplateAnnotations | object | `{}` | Annotations that allow the certificate to be composed from data residing in existing Kubernetes Resources |
10431070
| server.certificate.usages | list | `[]` | Usages for the certificate |
10441071
| server.certificateSecret.annotations | object | `{}` | Annotations to be added to argocd-server-tls secret |
10451072
| server.certificateSecret.crt | string | `""` | Certificate data |
@@ -1154,6 +1181,7 @@ NAME: my-release
11541181
| server.service.externalIPs | list | `[]` | Server service external IPs |
11551182
| server.service.externalTrafficPolicy | string | `"Cluster"` | Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints |
11561183
| server.service.labels | object | `{}` | Server service labels |
1184+
| server.service.loadBalancerClass | string | `""` | The class of the load balancer implementation |
11571185
| server.service.loadBalancerIP | string | `""` | LoadBalancer will get created with the IP specified in this field |
11581186
| server.service.loadBalancerSourceRanges | list | `[]` | Source IP ranges to allow access to service from |
11591187
| server.service.nodePortHttp | int | `30080` | Server service http port for NodePort service type (only if `server.service.type` is set to "NodePort") |
@@ -1418,7 +1446,7 @@ If you want to use an existing Redis (eg. a managed service from a cloud provide
14181446

14191447
| Key | Type | Default | Description |
14201448
|-----|------|---------|-------------|
1421-
| externalRedis.existingSecret | string | `""` | The name of an existing secret with Redis credentials (must contain key `redis-password`). When it's set, the `externalRedis.password` parameter is ignored |
1449+
| externalRedis.existingSecret | string | `""` | The name of an existing secret with Redis (must contain key `redis-password`) and Sentinel credentials. When it's set, the `externalRedis.password` parameter is ignored |
14221450
| externalRedis.host | string | `""` | External Redis server host |
14231451
| externalRedis.password | string | `""` | External Redis password |
14241452
| externalRedis.port | int | `6379` | External Redis server port |
@@ -1472,7 +1500,6 @@ If you use an External Redis (See Option 3 above), this Job is not deployed.
14721500
| applicationSet.certificate.privateKey.rotationPolicy | string | `"Never"` | Rotation policy of private key when certificate is re-issued. Either: `Never` or `Always` |
14731501
| applicationSet.certificate.privateKey.size | int | `2048` | Key bit size of the private key. If algorithm is set to `Ed25519`, size is ignored. |
14741502
| applicationSet.certificate.renewBefore | string | `""` (defaults to 360h = 15d if not specified) | How long before the expiry a certificate should be renewed. |
1475-
| applicationSet.certificate.secretName | string | `"argocd-applicationset-controller-tls"` | The name of the Secret that will be automatically created and managed by this Certificate resource |
14761503
| applicationSet.containerPorts.metrics | int | `8080` | Metrics container port |
14771504
| applicationSet.containerPorts.probe | int | `8081` | Probe container port |
14781505
| applicationSet.containerPorts.webhook | int | `7000` | Webhook container port |
@@ -1589,6 +1616,12 @@ If you use an External Redis (See Option 3 above), this Job is not deployed.
15891616
| notifications.image.tag | string | `""` (defaults to global.image.tag) | Tag to use for the notifications controller |
15901617
| notifications.imagePullSecrets | list | `[]` (defaults to global.imagePullSecrets) | Secrets with credentials to pull images from a private registry |
15911618
| notifications.initContainers | list | `[]` | Init containers to add to the notifications controller pod |
1619+
| notifications.livenessProbe.enabled | bool | `false` | Enable Kubernetes liveness probe for notifications controller Pods |
1620+
| notifications.livenessProbe.failureThreshold | int | `3` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded |
1621+
| notifications.livenessProbe.initialDelaySeconds | int | `10` | Number of seconds after the container has started before [probe] is initiated |
1622+
| notifications.livenessProbe.periodSeconds | int | `10` | How often (in seconds) to perform the [probe] |
1623+
| notifications.livenessProbe.successThreshold | int | `1` | Minimum consecutive successes for the [probe] to be considered successful after having failed |
1624+
| notifications.livenessProbe.timeoutSeconds | int | `1` | Number of seconds after which the [probe] times out |
15921625
| notifications.logFormat | string | `""` (defaults to global.logging.format) | Notifications controller log format. Either `text` or `json` |
15931626
| notifications.logLevel | string | `""` (defaults to global.logging.level) | Notifications controller log level. One of: `debug`, `info`, `warn`, `error` |
15941627
| notifications.metrics.enabled | bool | `false` | Enables prometheus metrics server |
@@ -1617,6 +1650,12 @@ If you use an External Redis (See Option 3 above), this Job is not deployed.
16171650
| notifications.podAnnotations | object | `{}` | Annotations to be applied to the notifications controller Pods |
16181651
| notifications.podLabels | object | `{}` | Labels to be applied to the notifications controller Pods |
16191652
| notifications.priorityClassName | string | `""` (defaults to global.priorityClassName) | Priority class for the notifications controller pods |
1653+
| notifications.readinessProbe.enabled | bool | `false` | Enable Kubernetes liveness probe for notifications controller Pods |
1654+
| notifications.readinessProbe.failureThreshold | int | `3` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded |
1655+
| notifications.readinessProbe.initialDelaySeconds | int | `10` | Number of seconds after the container has started before [probe] is initiated |
1656+
| notifications.readinessProbe.periodSeconds | int | `10` | How often (in seconds) to perform the [probe] |
1657+
| notifications.readinessProbe.successThreshold | int | `1` | Minimum consecutive successes for the [probe] to be considered successful after having failed |
1658+
| notifications.readinessProbe.timeoutSeconds | int | `1` | Number of seconds after which the [probe] times out |
16201659
| notifications.resources | object | `{}` | Resource limits and requests for the notifications controller |
16211660
| notifications.secret.annotations | object | `{}` | key:value pairs of annotations to be added to the secret |
16221661
| notifications.secret.create | bool | `true` | Whether helm chart creates notifications controller secret |

charts/argo-cd/README.md.gotmpl

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,31 @@ For full list of changes please check ArtifactHub [changelog].
278278

279279
Highlighted versions provide information about additional steps that should be performed by user when upgrading to newer version.
280280

281+
### 7.0.0
282+
283+
We changed the type of `.Values.configs.clusterCredentials` from `list` to `object`.
284+
If you used the value, please migrate like below.
285+
286+
```yaml
287+
# before
288+
configs:
289+
clusterCredentials:
290+
- mycluster:
291+
server: https://mycluster.example.com
292+
labels: {}
293+
annotations: {}
294+
# ...
295+
296+
# after
297+
configs:
298+
clusterCredentials:
299+
mycluster:
300+
server: https://mycluster.example.com
301+
labels: {}
302+
annotations: {}
303+
# ...
304+
```
305+
281306
### 6.10.0
282307

283308
This version introduces authentication for Redis to mitigate GHSA-9766-5277-j5hr.

0 commit comments

Comments
 (0)