blob: 961cd30c3fc5510a35b4f5c1fb478c1c9837b2f7 [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
15images: {
16 postgres: {
17 repository: "library"
18 name: "postgres"
19 tag: "15.3"
20 pullPolicy: "IfNotPresent"
21 }
22 backend: {
23 repository: "penpotapp"
24 name: "backend"
25 tag: "1.16.0-beta"
26 pullPolicy: "IfNotPresent"
27 }
28 frontend: {
29 repository: "penpotapp"
30 name: "frontend"
31 tag: "1.16.0-beta"
32 pullPolicy: "IfNotPresent"
33 }
34 exporter: {
35 repository: "penpotapp"
36 name: "exporter"
37 tag: "1.16.0-beta"
38 pullPolicy: "IfNotPresent"
39 }
40}
41
42charts: {
43 postgres: {
giof8843412024-05-22 16:38:05 +040044 kind: "GitRepository"
45 address: "https://github.com/giolekva/pcloud.git"
46 branch: "main"
47 path: "charts/postgresql"
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040048 }
49 oauth2Client: {
giof8843412024-05-22 16:38:05 +040050 kind: "GitRepository"
51 address: "https://github.com/giolekva/pcloud.git"
52 branch: "main"
53 path: "charts/oauth2-client"
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040054 }
55 penpot: {
giof8843412024-05-22 16:38:05 +040056 kind: "GitRepository"
57 address: "https://github.com/giolekva/pcloud.git"
58 branch: "main"
59 path: "charts/penpot"
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040060 }
61}
62
63_oauth2SecretName: "oauth2-credentials"
64
65helm: {
66 "oauth2-client": {
67 chart: charts.oauth2Client
68 values: {
69 name: "penpot"
70 secretName: _oauth2SecretName
71 grantTypes: ["authorization_code"]
72 responseTypes: ["code"]
73 scope: "openid profile email"
74 redirectUris: ["https://\(_domain)/api/auth/oauth/oidc/callback"]
75 hydraAdmin: "http://hydra-admin.\(global.namespacePrefix)core-auth.svc.cluster.local"
76 tokenEndpointAuthMethod: "client_secret_post"
77 }
78 }
79 postgres: {
80 chart: charts.postgres
81 values: {
82 fullnameOverride: "postgres"
83 image: {
84 registry: images.postgres.registry
85 repository: images.postgres.imageName
86 tag: images.postgres.tag
87 pullPolicy: images.postgres.pullPolicy
88 }
89 auth: {
90 username: "penpot"
91 password: "penpot"
92 database: "penpot"
93 }
94 }
95 }
96 penpot: {
97 chart: charts.penpot
98 values: {
99 "global": {
100 postgresqlEnabled: false
101 redisEnabled: true // TODO(gio): provide redis from outside
102 }
103 fullnameOverride: "penpot"
104 backend: {
105 image: {
106 repository: images.backend.fullName
107 tag: images.backend.tag
108 imagePullPolicy: images.backend.pullPolicy
109 }
110 }
111 frontend: {
112 image: {
113 repository: images.frontend.fullName
114 tag: images.frontend.tag
115 imagePullPolicy: images.frontend.pullPolicy
116 }
117 ingress: {
118 enabled: true
119 className: input.network.ingressClass
120 if input.network.certificateIssuer != "" {
121 annotations: {
122 "acme.cert-manager.io/http01-edit-in-place": "true"
123 "cert-manager.io/cluster-issuer": input.network.certificateIssuer
124 }
125 }
126 hosts: [_domain]
127 tls: [{
128 hosts: [_domain]
129 secretName: "cert-\(_domain)"
130 }]
131 }
132 }
133 persistence: enabled: true
134 config: {
135 publicURI: _domain
136 flags: "enable-login-with-oidc enable-registration enable-insecure-register disable-demo-users disable-demo-warning" // TODO(gio): remove enable-insecure-register?
137 postgresql: {
138 host: "postgres.\(release.namespace).svc.cluster.local"
139 database: "penpot"
140 username: "penpot"
141 password: "penpot"
142 }
143 redis: host: "penpot-redis-headless.\(release.namespace).svc.cluster.local"
144 providers: {
145 oidc: {
146 enabled: true
147 baseURI: "https://hydra.\(global.domain)"
148 clientID: ""
149 clientSecret: ""
150 authURI: ""
151 tokenURI: ""
152 userURI: ""
153 roles: ""
154 rolesAttribute: ""
155 scopes: ""
156 nameAttribute: "name"
157 emailAttribute: "email"
158 }
159 existingSecret: _oauth2SecretName
160 secretKeys: {
161 oidcClientIDKey: "client_id"
162 oidcClientSecretKey: "client_secret"
163 }
164 }
165 }
166 exporter: {
167 image: {
168 repository: images.exporter.fullName
169 tag: images.exporter.tag
170 imagePullPolicy: images.exporter.pullPolicy
171 }
172 }
173 redis: image: tag: "7.0.8-debian-11-r16"
174 }
175 }
176}