Skip to content

Commit c3da28b

Browse files
committed
⏪️(helm) bring back helm chart
This is a revert of 1da5a removing actual deployments and keeping only the dev environment in Tilt. The clean-up was a bit heavy handed. We should keep the Helm chart to the development repository and move away only the deployment configuration.
1 parent b035b96 commit c3da28b

28 files changed

+2165
-0
lines changed

.github/workflows/docker-hub.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ on:
88
- 'main'
99
tags:
1010
- 'v*'
11+
pull_request:
12+
branches:
13+
- 'main'
1114

1215
env:
1316
DOCKER_USER: 1001:127
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: Helmfile lint
2+
run-name: Helmfile lint
3+
4+
on:
5+
pull_request:
6+
branches:
7+
- 'main'
8+
9+
jobs:
10+
helmfile-lint:
11+
runs-on: ubuntu-latest
12+
container:
13+
image: ghcr.io/helmfile/helmfile:latest
14+
steps:
15+
-
16+
uses: numerique-gouv/action-helmfile-lint@main
17+
with:
18+
app-id: ${{ secrets.APP_ID }}
19+
age-key: ${{ secrets.SOPS_PRIVATE }}
20+
private-key: ${{ secrets.PRIVATE_KEY }}
21+
helmfile-src: "src/helm"
22+
repositories: "impress,secrets"
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
djangoSuperUserEmail: ENC[AES256_GCM,data:7b1xfYmr1g0RlBmsHBRA39ZPV/6+1DrtHQ==,iv:/GW7oLxPTZYmRWVPvyAQMoZl1owHM4Fo0XAOtyEh2rA=,tag:DaqoW+dglyAOXMm5+mrDfA==,type:str]
2+
djangoSuperUserPass: ENC[AES256_GCM,data:RQgX,iv:q3CdfmwGfHSTjLXTimDk/1MyoFLviRuwmZa2E7GUzhY=,tag:HCtdtqgSxdJIHFhI8xpegQ==,type:str]
3+
djangoSecretKey: ENC[AES256_GCM,data:9fr7VwwXN6+9+rdDtgeDuEbq6R2Gb0JhifUgxTPVbd4usFQv1AUVkxF40fu5nYBmM8vk,iv:X44837MB7NQZ1J0o0JPDK+2g5eqbCzo9mDPJTz/bKSk=,tag:Ju4l5Pi8ccNASdiwFVFKgg==,type:str]
4+
oidc:
5+
clientId: ENC[AES256_GCM,data:wndPCbysbWDybdHglcG+wkMWk1rrD40hKqFxct9T3TLEGOk/,iv:RH1OdBX1GYIT90sSq0AGz49fFi6dL0m49Pegs6Ko9tQ=,tag:/tKytQwoZkBX1Tf96gAjIA==,type:str]
6+
clientSecret: ENC[AES256_GCM,data:MUJ0wsg+LC2QZ1jZ0Twd3FS3dQevmJq9/97qVI3ARHuJIVlQz0Qah4vE7/iR+sn7ME2o1s1AzV4c1Yx/F3nHBg==,iv:LvinICSzF/8EvrHZD4Jp6lt7g3yxSOEgVHPrc3SShjo=,tag:yvkyyBXmhEkmGL7jZevUCA==,type:str]
7+
sops:
8+
kms: []
9+
gcp_kms: []
10+
azure_kv: []
11+
hc_vault: []
12+
age:
13+
- recipient: age15fyxdwmg5mvldtqqus87xspuws2u0cpvwheehrtvkexj4tnsqqysw6re2x
14+
enc: |
15+
-----BEGIN AGE ENCRYPTED FILE-----
16+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMMjFCeWhkUmRWTnlIM1JM
17+
dVFock1DWmtXQnpQZWZMWW1YdndhSS93MlVFCmxKVDUwOUt0NjJIZiswSm5aRi9U
18+
VEllelBZVmFKdVFzcVJPUm50VHo5RTgKLS0tIDlkU3htTEdSREFOSUxlTGVtUm1n
19+
RzJZbzhFcDNZKzdxMWFHTWx6Uy9GVFkKTw8LbhzAACp0NUHDfNcXpZyr2pJyNxxw
20+
C7j/UB0cAejlSJHaUUiZ6TEcslXRpqnNagwUw4z/uzo7m4temay22A==
21+
-----END AGE ENCRYPTED FILE-----
22+
- recipient: age16hnlml8yv4ynwy0seer57g8qww075crd0g7nsundz3pj4wk7m3vqftszg7
23+
enc: |
24+
-----BEGIN AGE ENCRYPTED FILE-----
25+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQQjBNMnVlNURQVWdjSyty
26+
RGozcmN5eTUwRHJIWnhhc1E3U1NXQ3AwTWxBCnFjbmJNZnFiRVJ6VHhmQmt1Vk5n
27+
OTVXWVh3RzhoMWNrbUl6OHphTjFLQVUKLS0tIGJjUlNhK0dHQ2R3SCtrbTRnaFJT
28+
Q1pyRXhSVm8xQWk2NG1MK0srVU1pL2sKkoxGCM00UM2leTNCn5H8499uwJw1NIXs
29+
PoRNgplehrHFptrAwGEpSYMXbxu88N7EWa/rtOp+sHWK5zpxscMkjA==
30+
-----END AGE ENCRYPTED FILE-----
31+
- recipient: age1plkp8td6zzfcavjusmsfrlk54t9vn8jjxm8zaz7cmnr7kzl2nfnsd54hwg
32+
enc: |
33+
-----BEGIN AGE ENCRYPTED FILE-----
34+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzYnpkYnJnYnJjVFRHRzRa
35+
N09JOXVnQkVrcVcwdk9kR1k1azNib2lkMVZFCmhvOHlpVnJ0RlRpYWZ1TkVoaklV
36+
NmNzY3BEeWN1MUtKWmZFT2RaMUxBRW8KLS0tIG92ZmhsZ29LSkRSREhiaG9kWXhH
37+
akREb0ttYVpNWTJHb1pjaWRFbWpxUjgKgZp3cN2rZw4ktbpb5cUnDEtsT/KWszGi
38+
pmpJHgsMADigyUc+Pjw+1pwpn0FtXVEXGedbf8bBuJavvbS2PuJBsg==
39+
-----END AGE ENCRYPTED FILE-----
40+
- recipient: age12g6f5fse25tgrwweleh4jls3qs52hey2edh759smulwmk5lnzadslu2cp3
41+
enc: |
42+
-----BEGIN AGE ENCRYPTED FILE-----
43+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxaHZJeStiVnBzTGNTNzdo
44+
UDFVTU51ZWp0WWorUnBlSzVBSU9IU2JnbUNNCkpMZGdNV3FUYkZOcWNLK0JWci81
45+
WGNwYi9Jb0QrV0lkUzNJWTcrUjIzUmMKLS0tIHlTKzNsVzNsSGFuYjJ0RFp0Y1Nr
46+
a1VOcDBPTTYvNjkxN092N1UrYk1CM2cKNifC3ZLOrFTFKA9iKg8nPpZb+3DxnTwq
47+
grsrxQa40b/Vv/aPoiPBMeSENDcH48X/EhMFNKX7dvl+7HEaY+QPlA==
48+
-----END AGE ENCRYPTED FILE-----
49+
- recipient: age1hnhuzj96ktkhpyygvmz0x9h8mfvssz7ss6emmukags644mdhf4msajk93r
50+
enc: |
51+
-----BEGIN AGE ENCRYPTED FILE-----
52+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBoZ2ZlcllJeGlKUDNxUk1w
53+
ekZ3TSttaXREV1FBRWwzNW54cjlYbHpLdWpRCnhSL2hEVVBEWEJKQWF0YTk1YzhJ
54+
RTBGN25sT0hBM3V4QndiTVkveDBwQ2cKLS0tIEdoZGRLRXdCME1wcUJHQXhtSHBQ
55+
UVEyNUVIanF6Z3ZSUjU1aTk0NFRBR0EKGuH5vzOV9lP/qRew0maECapKtLILaf/4
56+
XoSgPnjh8pIbJG7i9VKnFORlzkNJ6OPhZlX3ax15hd1qQv0PSCMBDA==
57+
-----END AGE ENCRYPTED FILE-----
58+
lastmodified: "2024-11-02T06:36:16Z"
59+
mac: ENC[AES256_GCM,data:CFU67noumihiYd0zSQex6Bgs5e/w3v3a9Ywd2XX53mx6W16w8DGyMykjaBzwX+wKC9oTqEmBXmmixf8NpQRuG9owcf9GIsFy1cK+69y+ISQINxBqxMvYouaC7UQeywpC1b9gHw7sVU1GCAiY6Ha+lPHvEavelbGWn/MSVyaBB2k=,iv:m1ShIjNGFjcC0N5mjvhbgxnVN7PcpSkBxMquUlsROCk=,tag:XTNxFRMQslbpvbL9gzMxHA==,type:str]
60+
pgp: []
61+
unencrypted_suffix: _unencrypted
62+
version: 3.9.0
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
image:
2+
repository: localhost:5001/impress-backend
3+
pullPolicy: Always
4+
tag: "latest"
5+
6+
backend:
7+
replicas: 1
8+
envVars:
9+
DJANGO_CSRF_TRUSTED_ORIGINS: https://impress.127.0.0.1.nip.io,http://impress.127.0.0.1.nip.io
10+
DJANGO_CONFIGURATION: Production
11+
DJANGO_ALLOWED_HOSTS: "*"
12+
DJANGO_SECRET_KEY: {{ .Values.djangoSecretKey }}
13+
DJANGO_SETTINGS_MODULE: impress.settings
14+
DJANGO_SUPERUSER_PASSWORD: admin
15+
DJANGO_EMAIL_HOST: "mailcatcher"
16+
DJANGO_EMAIL_PORT: 1025
17+
DJANGO_EMAIL_USE_SSL: False
18+
OIDC_OP_JWKS_ENDPOINT: https://fca.integ01.dev-agentconnect.fr/api/v2/jwks
19+
OIDC_OP_AUTHORIZATION_ENDPOINT: https://fca.integ01.dev-agentconnect.fr/api/v2/authorize
20+
OIDC_OP_TOKEN_ENDPOINT: https://fca.integ01.dev-agentconnect.fr/api/v2/token
21+
OIDC_OP_USER_ENDPOINT: https://fca.integ01.dev-agentconnect.fr/api/v2/userinfo
22+
OIDC_OP_LOGOUT_ENDPOINT: https://fca.integ01.dev-agentconnect.fr/api/v2/session/end
23+
OIDC_RP_CLIENT_ID: {{ .Values.oidc.clientId }}
24+
OIDC_RP_CLIENT_SECRET: {{ .Values.oidc.clientSecret }}
25+
OIDC_RP_SIGN_ALGO: RS256
26+
OIDC_RP_SCOPES: "openid email"
27+
OIDC_REDIRECT_ALLOWED_HOSTS: https://impress.127.0.0.1.nip.io
28+
OIDC_AUTH_REQUEST_EXTRA_PARAMS: "{'acr_values': 'eidas1'}"
29+
LOGIN_REDIRECT_URL: https://impress.127.0.0.1.nip.io
30+
LOGIN_REDIRECT_URL_FAILURE: https://impress.127.0.0.1.nip.io
31+
LOGOUT_REDIRECT_URL: https://impress.127.0.0.1.nip.io
32+
DB_HOST: postgres-postgresql
33+
DB_NAME: impress
34+
DB_USER: dinum
35+
DB_PASSWORD: pass
36+
DB_PORT: 5432
37+
POSTGRES_DB: impress
38+
POSTGRES_USER: dinum
39+
POSTGRES_PASSWORD: pass
40+
REDIS_URL: redis://default:pass@redis-master:6379/1
41+
AWS_S3_ENDPOINT_URL: http://minio.impress.svc.cluster.local:9000
42+
AWS_S3_ACCESS_KEY_ID: impress
43+
AWS_S3_SECRET_ACCESS_KEY: password
44+
AWS_STORAGE_BUCKET_NAME: impress-media-storage
45+
STORAGES_STATICFILES_BACKEND: django.contrib.staticfiles.storage.StaticFilesStorage
46+
47+
migrate:
48+
command:
49+
- "/bin/sh"
50+
- "-c"
51+
- |
52+
python manage.py migrate --no-input &&
53+
python manage.py create_demo --force
54+
restartPolicy: Never
55+
56+
command:
57+
- "gunicorn"
58+
- "-c"
59+
- "/usr/local/etc/gunicorn/impress.py"
60+
- "impress.wsgi:application"
61+
- "--reload"
62+
63+
createsuperuser:
64+
command:
65+
- "/bin/sh"
66+
- "-c"
67+
- |
68+
python manage.py createsuperuser --email [email protected] --password admin
69+
restartPolicy: Never
70+
71+
frontend:
72+
envVars:
73+
PORT: 8080
74+
NEXT_PUBLIC_API_ORIGIN: https://impress.127.0.0.1.nip.io
75+
NEXT_PUBLIC_Y_PROVIDER_URL: wss://impress.127.0.0.1.nip.io/ws
76+
NEXT_PUBLIC_MEDIA_URL: https://impress.127.0.0.1.nip.io
77+
78+
replicas: 1
79+
command:
80+
- yarn
81+
- dev
82+
83+
image:
84+
repository: localhost:5001/impress-frontend
85+
pullPolicy: Always
86+
tag: "latest"
87+
88+
yProvider:
89+
replicas: 1
90+
91+
image:
92+
repository: localhost:5001/impress-y-provider
93+
pullPolicy: Always
94+
tag: "latest"
95+
96+
ingress:
97+
enabled: true
98+
host: impress.127.0.0.1.nip.io
99+
100+
ingressWS:
101+
enabled: true
102+
host: impress.127.0.0.1.nip.io
103+
104+
ingressAdmin:
105+
enabled: true
106+
host: impress.127.0.0.1.nip.io
107+
108+
ingressMedia:
109+
enabled: true
110+
host: impress.127.0.0.1.nip.io
111+
112+
annotations:
113+
nginx.ingress.kubernetes.io/auth-url: https://impress.127.0.0.1.nip.io/api/v1.0/documents/retrieve-auth/
114+
nginx.ingress.kubernetes.io/auth-response-headers: "Authorization, X-Amz-Date, X-Amz-Content-SHA256"
115+
nginx.ingress.kubernetes.io/upstream-vhost: minio.impress.svc.cluster.local:9000
116+
nginx.ingress.kubernetes.io/rewrite-target: /impress-media-storage/$1
117+
118+
serviceMedia:
119+
host: minio.impress.svc.cluster.local
120+
port: 9000

src/helm/extra/Chart.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
apiVersion: v2
2+
name: extra
3+
description: A Helm chart to add some manifests to impress
4+
type: application
5+
version: 0.1.0
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: core.libre.sh/v1alpha1
2+
kind: Redis
3+
metadata:
4+
name: redis
5+
namespace: {{ .Release.Namespace | quote }}
6+
spec:
7+
disableAuth: false
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: core.libre.sh/v1alpha1
2+
kind: Postgres
3+
metadata:
4+
name: postgresql
5+
namespace: {{ .Release.Namespace | quote }}
6+
spec:
7+
database: impress

src/helm/extra/templates/s3.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: core.libre.sh/v1alpha1
2+
kind: Bucket
3+
metadata:
4+
name: impress-media-storage
5+
namespace: {{ .Release.Namespace | quote }}
6+
spec:
7+
provider: data
8+
versioned: true

src/helm/helmfile.yaml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
repositories:
2+
- name: bitnami
3+
url: registry-1.docker.io/bitnamicharts
4+
oci: true
5+
6+
releases:
7+
- name: postgres
8+
installed: {{ eq .Environment.Name "dev" | toYaml }}
9+
namespace: {{ .Namespace }}
10+
chart: bitnami/postgresql
11+
version: 13.1.5
12+
values:
13+
- auth:
14+
username: dinum
15+
password: pass
16+
database: impress
17+
- tls:
18+
enabled: true
19+
autoGenerated: true
20+
21+
- name: minio
22+
installed: {{ eq .Environment.Name "dev" | toYaml }}
23+
namespace: {{ .Namespace }}
24+
chart: bitnami/minio
25+
version: 12.10.10
26+
values:
27+
- auth:
28+
rootUser: impress
29+
rootPassword: password
30+
- provisioning:
31+
enabled: true
32+
buckets:
33+
- name: impress-media-storage
34+
versioning: true
35+
36+
- name: redis
37+
installed: {{ eq .Environment.Name "dev" | toYaml }}
38+
namespace: {{ .Namespace }}
39+
chart: bitnami/redis
40+
version: 18.19.2
41+
values:
42+
- auth:
43+
password: pass
44+
architecture: standalone
45+
46+
- name: extra
47+
installed: {{ ne .Environment.Name "dev" | toYaml }}
48+
namespace: {{ .Namespace }}
49+
chart: ./extra
50+
secrets:
51+
- env.d/{{ .Environment.Name }}/secrets.enc.yaml
52+
53+
- name: impress
54+
version: {{ .Values.version }}
55+
namespace: {{ .Namespace }}
56+
chart: ./impress
57+
values:
58+
- env.d/{{ .Environment.Name }}/values.impress.yaml.gotmpl
59+
secrets:
60+
- env.d/{{ .Environment.Name }}/secrets.enc.yaml
61+
62+
environments:
63+
dev:
64+
values:
65+
- version: 0.0.1
66+
secrets:
67+
- env.d/{{ .Environment.Name }}/secrets.enc.yaml

src/helm/impress/Chart.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
apiVersion: v2
2+
type: application
3+
name: impress
4+
version: 0.0.1

0 commit comments

Comments
 (0)