Skip to content

Commit ccdaf3c

Browse files
committed
feat(dso-env): add additional roles to be defined
Signed-off-by: William Phetsinorath <william.phetsinorath@shikanime.studio>
1 parent 440d8be commit ccdaf3c

File tree

4 files changed

+125
-22
lines changed

4 files changed

+125
-22
lines changed

charts/dso-env/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: v2
22
name: dso-env
33
description: Creates argocd Project and Applications to deploy DSO project repositories.
44
type: application
5-
version: 1.6.0
5+
version: 1.7.0
66
appVersion: 1.0.0
77
maintainers:
88
- name: this-is-tobi

charts/dso-env/README.md

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,31 @@ Creates argocd Project and Applications to deploy DSO project repositories.
66

77
## Maintainers
88

9-
| Name | Email | Url |
10-
| ---- | ------ | --- |
9+
| Name | Email | Url |
10+
| ------------ | ---------------------------------- | -------------------------- |
1111
| this-is-tobi | <thibault.colin@interieur.gouv.fr> | <https://this-is-tobi.com> |
1212

1313
## Values
1414

15-
| Key | Type | Default | Description |
16-
|-----|------|---------|-------------|
17-
| application.autosync | bool | `true` | Activer la synchronisation automatique de l'application |
18-
| application.destination.name | string | `"dest"` | Nom du cluster applicatif cible |
19-
| application.destination.namespace | string | `"app1"` | Nom du namespace applicatif cible |
20-
| application.repositories | string | `nil` | Liste des dépôts à déployer |
21-
| application.sourceRepositories | list | `["https://gitlab.com/projects/org/demo"]` | Liste des dépôts à autoriser au niveau du AppProject |
22-
| argocd.namespace | string | `"argocd"` | Namespace de création des objets ArgoCD |
23-
| argocd.nsChartVersion | string | `"1.0.0"` | Version du Chart dso-ns à utiliser |
24-
| argocd.project | string | `"project1"` | Préfixe des projets ArgoCD à créer |
25-
| common | object | `{"dso/environment":"env","dso/organization":"org","dso/project":"project"}` | Informations communes, notamment appliquées en label sur les différents objets |
26-
| environment.roGroup | string | `"/project/environment/RO"` | Nom du groupe à autoriser en lecture seule sur les objets applicatifs (-app) déployés par ArgoCD |
27-
| environment.rwGroup | string | `"/project/environment/RW"` | Nom du groupe à autoriser en lecture/écriture sur les objets applicatifs (-app) déployés par ArgoCD |
28-
| environment.valueFilePath | string | `"values.yaml"` | Chemin du fichier à utiliser lors de la récupération des values |
29-
| environment.valueFileRepository | string | `"https://gitlab.com/projects/Infra/org/demo/infra.git"` | URL du repo avec le fichier values à utiliser pour cet environnement |
30-
| environment.valueFileRevision | string | `"HEAD"` | Revision Git à utiliser lors de la récupération des values |
31-
32-
----------------------------------------------
15+
| Key | Type | Default | Description |
16+
| --------------------------------- | ------ | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
17+
| application.autosync | bool | `true` | Activer la synchronisation automatique de l'application |
18+
| application.destination.name | string | `"dest"` | Nom du cluster applicatif cible |
19+
| application.destination.namespace | string | `"app1"` | Nom du namespace applicatif cible |
20+
| application.repositories | string | `nil` | Liste des dépôts à déployer |
21+
| application.sourceRepositories | list | `["https://gitlab.com/projects/org/demo"]` | Liste des dépôts à autoriser au niveau du AppProject |
22+
| argocd.namespace | string | `"argocd"` | Namespace de création des objets ArgoCD |
23+
| argocd.nsChartVersion | string | `"1.0.0"` | Version du Chart dso-ns à utiliser |
24+
| argocd.project | string | `"project1"` | Préfixe des projets ArgoCD à créer |
25+
| common | object | `{"dso/environment":"env","dso/organization":"org","dso/project":"project"}` | Informations communes, notamment appliquées en label sur les différents objets |
26+
| environment.roGroup | string | `"/project/environment/RO"` | Nom du groupe à autoriser en lecture seule sur les objets applicatifs (-app) déployés par ArgoCD |
27+
| environment.rwGroup | string | `"/project/environment/RW"` | Nom du groupe à autoriser en lecture/écriture sur les objets applicatifs (-app) déployés par ArgoCD |
28+
| environment.valueFilePath | string | `"values.yaml"` | Chemin du fichier à utiliser lors de la récupération des values |
29+
| environment.valueFileRepository | string | `"https://gitlab.com/projects/Infra/org/demo/infra.git"` | URL du repo avec le fichier values à utiliser pour cet environnement |
30+
| environment.valueFileRevision | string | `"HEAD"` | Revision Git à utiliser lors de la récupération des values |
31+
| features | object | `{"fineGrainedRoles":{"enabled":true}}` | Set of feature settings - experimental |
32+
| features.fineGrainedRoles.enabled | bool | `false` | enable fine grained roles in the roles matrix |
33+
34+
***
35+
3336
Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)

charts/dso-env/templates/project-app.yaml

Lines changed: 77 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,83 @@ spec:
3737
allow
3838
- p, proj:{{ .Values.argocd.project }}-app:rw-group, applications, create, {{ .Values.argocd.project }}-app/*,
3939
deny
40-
sourceRepos:
40+
{{- if .Values.features.fineGrainedRoles.enabled }}
41+
- description: platform admin group
42+
groups:
43+
- {{ .Values.environment.consoleAdminGroup }}
44+
- {{ .Values.environment.platformAdminGroup }}
45+
name: platform-admin
46+
policies:
47+
- p, proj:{{ .Values.argocd.project }}-app:platform-admin, *, *, {{ .Values.argocd.project }}-app/*, allow
48+
- description: platform security group
49+
groups:
50+
- {{ .Values.environment.platformSecurityGroup }}
51+
name: platform-security
52+
policies:
53+
- p, proj:{{ .Values.argocd.project }}-app:platform-security, applications, get, {{ .Values.argocd.project }}-app/*, allow
54+
- p, proj:{{ .Values.argocd.project }}-app:platform-security, projects, get, {{ .Values.argocd.project }}-app, allow
55+
- p, proj:{{ .Values.argocd.project }}-app:platform-security, repositories, get, *, allow
56+
- p, proj:{{ .Values.argocd.project }}-app:platform-security, clusters, get, *, allow
57+
- p, proj:{{ .Values.argocd.project }}-app:platform-security, accounts, get, *, allow
58+
- description: platform readonly group
59+
groups:
60+
- {{ .Values.environment.platformReadonlyGroup }}
61+
name: platform-readonly
62+
policies:
63+
- p, proj:{{ .Values.argocd.project }}-app:platform-readonly, applications, get, {{ .Values.argocd.project }}-app/*, allow
64+
- p, proj:{{ .Values.argocd.project }}-app:platform-readonly, projects, get, {{ .Values.argocd.project }}-app, allow
65+
- p, proj:{{ .Values.argocd.project }}-app:platform-readonly, repositories, get, *, allow
66+
- p, proj:{{ .Values.argocd.project }}-app:platform-readonly, clusters, get, *, allow
67+
- description: project admin group
68+
groups:
69+
- {{ .Values.environment.projectAdminGroup }}
70+
name: project-admin
71+
policies:
72+
- p, proj:{{ .Values.argocd.project }}-app:project-admin, applications, get, {{ .Values.argocd.project }}-app/*, allow
73+
- p, proj:{{ .Values.argocd.project }}-app:project-admin, applications, sync, {{ .Values.argocd.project }}-app/*, allow
74+
- p, proj:{{ .Values.argocd.project }}-app:project-admin, applications, update, {{ .Values.argocd.project }}-app/*, allow
75+
- p, proj:{{ .Values.argocd.project }}-app:project-admin, applications, delete, {{ .Values.argocd.project }}-app/*, allow
76+
- p, proj:{{ .Values.argocd.project }}-app:project-admin, projects, get, {{ .Values.argocd.project }}-app, allow
77+
- p, proj:{{ .Values.argocd.project }}-app:project-admin, projects, update, {{ .Values.argocd.project }}-app, allow
78+
- p, proj:{{ .Values.argocd.project }}-app:project-admin, repositories, get, *, allow
79+
- p, proj:{{ .Values.argocd.project }}-app:project-admin, clusters, get, *, allow
80+
- description: project devops group
81+
groups:
82+
- {{ .Values.environment.projectDevopsGroup }}
83+
name: project-devops
84+
policies:
85+
- p, proj:{{ .Values.argocd.project }}-app:project-devops, applications, get, {{ .Values.argocd.project }}-app/*, allow
86+
- p, proj:{{ .Values.argocd.project }}-app:project-devops, applications, sync, {{ .Values.argocd.project }}-app/*, allow
87+
- p, proj:{{ .Values.argocd.project }}-app:project-devops, applications, update, {{ .Values.argocd.project }}-app/*, allow
88+
- p, proj:{{ .Values.argocd.project }}-app:project-devops, projects, get, {{ .Values.argocd.project }}-app, allow
89+
- p, proj:{{ .Values.argocd.project }}-app:project-devops, repositories, get, *, allow
90+
- p, proj:{{ .Values.argocd.project }}-app:project-devops, clusters, get, *, allow
91+
- description: project developer group
92+
groups:
93+
- {{ .Values.environment.projectDevelopperGroup }}
94+
name: project-developer
95+
policies:
96+
- p, proj:{{ .Values.argocd.project }}-app:project-developer, applications, get, {{ .Values.argocd.project }}-app/*, allow
97+
- p, proj:{{ .Values.argocd.project }}-app:project-developer, applications, sync, {{ .Values.argocd.project }}-app/*, allow
98+
- p, proj:{{ .Values.argocd.project }}-app:project-developer, projects, get, {{ .Values.argocd.project }}-app, allow
99+
- description: project security group
100+
groups:
101+
- {{ .Values.environment.projectSecurityGroup }}
102+
name: project-security
103+
policies:
104+
- p, proj:{{ .Values.argocd.project }}-app:project-security, applications, get, {{ .Values.argocd.project }}-app/*, allow
105+
- p, proj:{{ .Values.argocd.project }}-app:project-security, projects, get, {{ .Values.argocd.project }}-app, allow
106+
- p, proj:{{ .Values.argocd.project }}-app:project-security, repositories, get, *, allow
107+
- p, proj:{{ .Values.argocd.project }}-app:project-security, clusters, get, *, allow
108+
- description: project readonly group
109+
groups:
110+
- {{ .Values.environment.projectReadonlyGroup }}
111+
name: project-readonly
112+
policies:
113+
- p, proj:{{ .Values.argocd.project }}-app:project-readonly, applications, get, {{ .Values.argocd.project }}-app/*, allow
114+
- p, proj:{{ .Values.argocd.project }}-app:project-readonly, projects, get, {{ .Values.argocd.project }}-app, allow
115+
{{- end }}
116+
sourceRepos:
41117
{{- range .Values.application.sourceRepositories }}
42118
- {{ . }}
43119
{{- end }}

charts/dso-env/values.yaml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,24 @@ environment:
2121
roGroup: /project/environment/RO
2222
# -- Nom du groupe à autoriser en lecture/écriture sur les objets applicatifs (-app) déployés par ArgoCD
2323
rwGroup: /project/environment/RW
24+
# -- Nom du groupe d'administration de la plateforme
25+
platformAdminGroup: /console/admin
26+
# -- Nom du groupe d'administration globale (Console)
27+
consoleAdminGroup: /console-admin
28+
# -- Nom du groupe de lecture seule de la plateforme
29+
platformReadonlyGroup: /console/readonly
30+
# -- Nom du groupe de sécurité de la plateforme
31+
platformSecurityGroup: /console/security
32+
# -- Nom du groupe d'administration du projet
33+
projectAdminGroup: /project1/console/admin
34+
# -- Nom du groupe DevOps du projet
35+
projectDevopsGroup: /project1/console/devops
36+
# -- Nom du groupe Développeur du projet
37+
projectDevelopperGroup: /project1/console/developer
38+
# -- Nom du groupe de sécurité du projet
39+
projectSecurityGroup: /project1/console/security
40+
# -- Nom du groupe de lecture seule du projet
41+
projectReadonlyGroup: /project1/console/readonly
2442
application:
2543
# -- Liste des dépôts à autoriser au niveau du AppProject
2644
sourceRepositories:
@@ -49,3 +67,9 @@ application:
4967
# valueFiles:
5068
# - values.yaml
5169
# - values-integ.yaml
70+
# -- Set of feature settings - experimental
71+
features:
72+
# -- Fine grained roles support
73+
fineGrainedRoles:
74+
# -- enabling fine grained roles
75+
enabled: false

0 commit comments

Comments
 (0)