Skip to content

Commit 69c65a0

Browse files
docs: add explanation about our dependency management + clarify version compatiblity in README (#607)
* chore(docs): add docs about version compatiblity/dependencies Signed-off-by: Nathanael Liechti <[email protected]> * chore: appliy @onematchfox's version of the table Co-authored-by: Brian Fox <[email protected]> Signed-off-by: Nathanael Liechti <[email protected]> --------- Signed-off-by: Nathanael Liechti <[email protected]> Co-authored-by: Brian Fox <[email protected]>
1 parent 22487c3 commit 69c65a0

File tree

2 files changed

+62
-38
lines changed

2 files changed

+62
-38
lines changed

CONTRIBUTING.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,21 @@
22

33
Contributions are welcome!
44

5+
## Dependency Management
6+
7+
### K8s version
8+
In our CI we test against a Kubernetes version that is supported by all Argo CD versions we support.
9+
10+
That version can be obtained when looking at [this table](https://argo-cd.readthedocs.io/en/stable/operator-manual/installation/#tested-versions) in the Argo CD documentation.
11+
12+
### Argo CD client-lib
13+
14+
Some dependencies we use are strictly aligned with the Argo CD client-lib that we use and should only be updated together:
15+
- github.com/argoproj/gitops-engine
16+
- k8s.io/*
17+
18+
Please don't update any of these dependencies without having discussed this first!
19+
520
## Building
621

722
1. `git clone` this repository and `cd` into its directory

README.md

Lines changed: 47 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,52 @@ Official documentation on how to use this provider can be found on the
2929
[Terraform
3030
Registry](https://registry.terraform.io/providers/argoproj-labs/argocd/latest/docs).
3131

32+
## Version Compatibility
33+
34+
The provider supports all versions Argo-CD itself currently supports. See the [Argo CD documentation](https://argo-cd.readthedocs.io/en/stable/operator-manual/installation/#supported-versions) for supported versions.
35+
36+
The following table shows the versions of Argo CD that are tested with each version of the provider.
37+
38+
| Provider version | Argo CD versions |
39+
|---|---|
40+
| 7.5 | v2.12, v2.13, v2.14 |
41+
| 7.4 | v2.11, v2.12, v2.13 |
42+
| 7.2 | v2.10, v2.11, v2.12 |
43+
| 7.1 | v2.9, v2.10, v2.11 |
44+
| 7.0 | v2.8, v2.9, v2.10 |
45+
| 6.x | v2.8, v2.9, v2.10 |
46+
47+
Note: these numbers are based on our testing matrix that tests the provider against these versions of Argo CD. You may be able to use other provider versions as the ones listed here and it may still work.
48+
49+
## Motivations
50+
51+
### *I thought ArgoCD already allowed for 100% declarative configuration?*
52+
53+
While that is true through the use of ArgoCD Kubernetes Custom Resources, there
54+
are some resources that simply cannot be managed using Kubernetes manifests,
55+
such as project roles JWTs whose respective lifecycles are better handled by a
56+
tool like Terraform. Even more so when you need to export these JWTs to another
57+
external system using Terraform, like a CI platform.
58+
59+
### *Wouldn't using a Kubernetes provider to handle ArgoCD configuration be enough?*
60+
61+
Existing Kubernetes providers do not patch arrays of objects, losing project
62+
role JWTs when doing small project changes just happen.
63+
64+
ArgoCD Kubernetes admission webhook controller is not as exhaustive as ArgoCD
65+
API validation, this can be seen with RBAC policies, where no validation occur
66+
when creating/patching a project.
67+
68+
Using Terraform to manage Kubernetes Custom Resource becomes increasingly
69+
difficult the further you use HCL2 DSL to merge different data structures *and*
70+
want to preserve type safety.
71+
72+
Whatever the Kubernetes CRD provider you are using, you will probably end up
73+
using `locals` and the `yamlencode` function **which does not preserve the
74+
values' type**. In these cases, not only the readability of your Terraform plan
75+
will worsen, but you will also be losing some safeties that Terraform provides
76+
in the process.
77+
3278
## Upgrading
3379

3480
### Migrate provider source `oboukili` -> `argoproj-labs`
@@ -121,47 +167,10 @@ HashiCorps [replace-provider] docs. In summary, you can do the following:
121167
122168
5. You have successfully migrated
123169
124-
## Compatibility promise
125-
126-
This provider is compatible with _at least_ the last 2 minor releases of ArgoCD
127-
(e.g, ranging from 1.(n).m, to 1.(n-1).0, where `n` is the latest available
128-
minor version).
129-
130-
Older releases are not supported and some resources may not work as expected.
131-
132-
## Motivations
133-
134-
### *I thought ArgoCD already allowed for 100% declarative configuration?*
135-
136-
While that is true through the use of ArgoCD Kubernetes Custom Resources, there
137-
are some resources that simply cannot be managed using Kubernetes manifests,
138-
such as project roles JWTs whose respective lifecycles are better handled by a
139-
tool like Terraform. Even more so when you need to export these JWTs to another
140-
external system using Terraform, like a CI platform.
141-
142-
### *Wouldn't using a Kubernetes provider to handle ArgoCD configuration be enough?*
143-
144-
Existing Kubernetes providers do not patch arrays of objects, losing project
145-
role JWTs when doing small project changes just happen.
146-
147-
ArgoCD Kubernetes admission webhook controller is not as exhaustive as ArgoCD
148-
API validation, this can be seen with RBAC policies, where no validation occur
149-
when creating/patching a project.
150-
151-
Using Terraform to manage Kubernetes Custom Resource becomes increasingly
152-
difficult the further you use HCL2 DSL to merge different data structures *and*
153-
want to preserve type safety.
154-
155-
Whatever the Kubernetes CRD provider you are using, you will probably end up
156-
using `locals` and the `yamlencode` function **which does not preserve the
157-
values' type**. In these cases, not only the readability of your Terraform plan
158-
will worsen, but you will also be losing some safeties that Terraform provides
159-
in the process.
160-
161170
## Requirements
162171
163172
* [Terraform](https://www.terraform.io/downloads) (>= 1.0)
164-
* [Go](https://go.dev/doc/install) (1.19)
173+
* [Go](https://go.dev/doc/install) (1.24)
165174
* [GNU Make](https://www.gnu.org/software/make/)
166175
* [golangci-lint](https://golangci-lint.run/usage/install/#local-installation) (optional)
167176

0 commit comments

Comments
 (0)