blob: 21004f4c033ee01ab11625416dacfab1cd2f33e9 [file] [log] [blame]
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +04001input: {
gio44f621b2024-04-29 09:44:38 +04002 network: #Network @name(Network)
3 subdomain: string @name(Subdomain)
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +04004}
5
6_domain: "\(input.subdomain).\(input.network.domain)"
gio09a3e5b2024-04-26 14:11:06 +04007url: "https://\(_domain)"
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +04008
Giorgi Lekveishvilief21c132024-01-17 18:57:58 +04009name: "Penpot"
10namespace: "app-penpot"
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040011readme: "penpot application will be installed on \(input.network.name) network and be accessible to any user on https://\(_domain)"
Giorgi Lekveishvilief21c132024-01-17 18:57:58 +040012description: "Penpot is the first Open Source design and prototyping platform meant for cross-domain teams. Non dependent on operating systems, Penpot is web based and works with open standards (SVG). Penpot invites designers all over the world to fall in love with open source while getting developers excited about the design process in return."
gio44f621b2024-04-29 09:44:38 +040013icon: "<svg xmlns='http://www.w3.org/2000/svg' width='50' height='50' viewBox='0 0 24 24'><path fill='currentColor' d='M7.654 0L5.13 3.554v2.01L2.934 6.608l-.02-.009v13.109l8.563 4.045L12 24l.523-.247l8.563-4.045V6.6l-.017.008l-2.196-1.045V3.555l-.077-.108L16.349.001l-2.524 3.554v.004L11.989.973l-1.823 2.566l-.065-.091zm.447 2.065l.976 1.374H6.232l.964-1.358zm8.694 0l.976 1.374h-2.845l.965-1.358zm-4.36.971l.976 1.375h-2.845l.965-1.359zM5.962 4.132h1.35v4.544l-1.35-.638Zm2.042 0h1.343v5.506l-1.343-.635zm6.652 0h1.35V9l-1.35.637zm2.042 0h1.343v3.905l-1.343.634zm-6.402.972h1.35v5.62l-1.35-.638zm2.042 0h1.343v4.993l-1.343.634zm6.534 1.493l1.188.486l-1.188.561zM5.13 6.6v1.047l-1.187-.561ZM3.96 8.251l7.517 3.55v10.795l-7.516-3.55zm16.08 0v10.794l-7.517 3.55V11.802z'/></svg>"
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040014
gio7fbd4ad2024-08-27 10:06:39 +040015out: {
16 images: {
17 postgres: {
18 repository: "library"
19 name: "postgres"
20 tag: "15.3"
21 pullPolicy: "IfNotPresent"
22 }
23 backend: {
24 repository: "penpotapp"
25 name: "backend"
26 tag: "1.16.0-beta"
27 pullPolicy: "IfNotPresent"
28 }
29 frontend: {
30 repository: "penpotapp"
31 name: "frontend"
32 tag: "1.16.0-beta"
33 pullPolicy: "IfNotPresent"
34 }
35 exporter: {
36 repository: "penpotapp"
37 name: "exporter"
38 tag: "1.16.0-beta"
39 pullPolicy: "IfNotPresent"
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040040 }
41 }
gio7fbd4ad2024-08-27 10:06:39 +040042
43 charts: {
44 postgres: {
45 kind: "GitRepository"
46 address: "https://code.v1.dodo.cloud/helm-charts"
47 branch: "main"
48 path: "charts/postgresql"
49 }
50 oauth2Client: {
51 kind: "GitRepository"
52 address: "https://code.v1.dodo.cloud/helm-charts"
53 branch: "main"
54 path: "charts/oauth2-client"
55 }
56 penpot: {
57 kind: "GitRepository"
58 address: "https://code.v1.dodo.cloud/helm-charts"
59 branch: "main"
60 path: "charts/penpot"
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040061 }
62 }
gio7fbd4ad2024-08-27 10:06:39 +040063
64 _oauth2SecretName: "oauth2-credentials"
65
66 helm: {
67 "oauth2-client": {
68 chart: charts.oauth2Client
69 values: {
70 name: "\(release.namespace)-penpot"
71 secretName: _oauth2SecretName
72 grantTypes: ["authorization_code"]
73 responseTypes: ["code"]
74 scope: "openid profile email"
75 redirectUris: ["https://\(_domain)/api/auth/oauth/oidc/callback"]
76 hydraAdmin: "http://hydra-admin.\(global.namespacePrefix)core-auth.svc.cluster.local"
77 tokenEndpointAuthMethod: "client_secret_post"
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040078 }
gio7fbd4ad2024-08-27 10:06:39 +040079 }
80 postgres: {
81 chart: charts.postgres
82 values: {
83 fullnameOverride: "postgres"
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040084 image: {
gio7fbd4ad2024-08-27 10:06:39 +040085 registry: images.postgres.registry
86 repository: images.postgres.imageName
87 tag: images.postgres.tag
88 pullPolicy: images.postgres.pullPolicy
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040089 }
gio7fbd4ad2024-08-27 10:06:39 +040090 auth: {
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040091 username: "penpot"
92 password: "penpot"
gio7fbd4ad2024-08-27 10:06:39 +040093 database: "penpot"
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040094 }
gio7fbd4ad2024-08-27 10:06:39 +040095 }
96 }
97 penpot: {
98 chart: charts.penpot
99 values: {
100 "global": {
101 postgresqlEnabled: false
102 redisEnabled: true // TODO(gio): provide redis from outside
103 }
104 fullnameOverride: "penpot"
105 backend: {
106 image: {
107 repository: images.backend.fullName
108 tag: images.backend.tag
109 imagePullPolicy: images.backend.pullPolicy
110 }
111 }
112 frontend: {
113 image: {
114 repository: images.frontend.fullName
115 tag: images.frontend.tag
116 imagePullPolicy: images.frontend.pullPolicy
117 }
118 ingress: {
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +0400119 enabled: true
gio7fbd4ad2024-08-27 10:06:39 +0400120 className: input.network.ingressClass
121 if input.network.certificateIssuer != "" {
122 annotations: {
123 "acme.cert-manager.io/http01-edit-in-place": "true"
124 "cert-manager.io/cluster-issuer": input.network.certificateIssuer
125 }
126 }
127 hosts: [_domain]
128 tls: [{
129 hosts: [_domain]
130 secretName: "cert-\(_domain)"
131 }]
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +0400132 }
133 }
gio7fbd4ad2024-08-27 10:06:39 +0400134 persistence: enabled: true
135 config: {
136 publicURI: _domain
137 flags: "enable-login-with-oidc enable-registration enable-insecure-register disable-demo-users disable-demo-warning" // TODO(gio): remove enable-insecure-register?
138 postgresql: {
139 host: "postgres.\(release.namespace).svc.cluster.local"
140 database: "penpot"
141 username: "penpot"
142 password: "penpot"
143 }
144 redis: host: "penpot-redis-headless.\(release.namespace).svc.cluster.local"
145 providers: {
146 oidc: {
147 enabled: true
148 baseURI: "https://hydra.\(networks.public.domain)"
149 clientID: ""
150 clientSecret: ""
151 authURI: ""
152 tokenURI: ""
153 userURI: ""
154 roles: ""
155 rolesAttribute: ""
156 scopes: ""
157 nameAttribute: "name"
158 emailAttribute: "email"
159 }
160 existingSecret: _oauth2SecretName
161 secretKeys: {
162 oidcClientIDKey: "client_id"
163 oidcClientSecretKey: "client_secret"
164 }
165 }
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +0400166 }
gio7fbd4ad2024-08-27 10:06:39 +0400167 exporter: {
168 image: {
169 repository: images.exporter.fullName
170 tag: images.exporter.tag
171 imagePullPolicy: images.exporter.pullPolicy
172 }
173 }
174 redis: image: tag: "7.0.8-debian-11-r16"
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +0400175 }
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +0400176 }
177 }
178}