You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,21 @@
2
2
3
3
Contributions are welcome!
4
4
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
+
5
20
## Building
6
21
7
22
1.`git clone` this repository and `cd` into its directory
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
0 commit comments