| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 1 | input: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 2 | network: #Network @name(Network) |
| 3 | subdomain: string @name(Subdomain) |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 4 | } |
| 5 | |
| 6 | _domain: "\(input.subdomain).\(input.network.domain)" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 7 | url: "https://\(_domain)" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 8 | |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 9 | name: "Penpot" |
| 10 | namespace: "app-penpot" |
| 11 | readme: "penpot application will be installed on \(input.network.name) network and be accessible to any user on https://\(_domain)" |
| Giorgi Lekveishvili | ef21c13 | 2024-01-17 18:57:58 +0400 | [diff] [blame] | 12 | description: "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." |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 13 | icon: "<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 Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 14 | |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 15 | out: { |
| 16 | images: { |
| 17 | postgres: { |
| 18 | repository: "library" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 19 | name: "postgres" |
| 20 | tag: "15.3" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 21 | pullPolicy: "IfNotPresent" |
| 22 | } |
| 23 | backend: { |
| 24 | repository: "penpotapp" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 25 | name: "backend" |
| 26 | tag: "1.16.0-beta" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 27 | pullPolicy: "IfNotPresent" |
| 28 | } |
| 29 | frontend: { |
| 30 | repository: "penpotapp" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 31 | name: "frontend" |
| 32 | tag: "1.16.0-beta" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 33 | pullPolicy: "IfNotPresent" |
| 34 | } |
| 35 | exporter: { |
| 36 | repository: "penpotapp" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 37 | name: "exporter" |
| 38 | tag: "1.16.0-beta" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 39 | pullPolicy: "IfNotPresent" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 40 | } |
| 41 | } |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 42 | |
| 43 | charts: { |
| 44 | postgres: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 45 | kind: "GitRepository" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 46 | address: "https://code.v1.dodo.cloud/helm-charts" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 47 | branch: "main" |
| 48 | path: "charts/postgresql" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 49 | } |
| 50 | oauth2Client: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 51 | kind: "GitRepository" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 52 | address: "https://code.v1.dodo.cloud/helm-charts" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 53 | branch: "main" |
| 54 | path: "charts/oauth2-client" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 55 | } |
| 56 | penpot: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 57 | kind: "GitRepository" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 58 | address: "https://code.v1.dodo.cloud/helm-charts" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 59 | branch: "main" |
| 60 | path: "charts/penpot" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 61 | } |
| 62 | } |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 63 | |
| 64 | _oauth2SecretName: "oauth2-credentials" |
| 65 | |
| 66 | helm: { |
| 67 | "oauth2-client": { |
| 68 | chart: charts.oauth2Client |
| 69 | values: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 70 | name: "\(release.namespace)-penpot" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 71 | secretName: _oauth2SecretName |
| 72 | grantTypes: ["authorization_code"] |
| 73 | responseTypes: ["code"] |
| 74 | scope: "openid profile email" |
| 75 | redirectUris: ["https://\(_domain)/api/auth/oauth/oidc/callback"] |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 76 | hydraAdmin: "http://hydra-admin.\(global.namespacePrefix)core-auth.svc.cluster.local" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 77 | tokenEndpointAuthMethod: "client_secret_post" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 78 | } |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 79 | } |
| 80 | postgres: { |
| 81 | chart: charts.postgres |
| 82 | values: { |
| 83 | fullnameOverride: "postgres" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 84 | image: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 85 | registry: images.postgres.registry |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 86 | repository: images.postgres.imageName |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 87 | tag: images.postgres.tag |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 88 | pullPolicy: images.postgres.pullPolicy |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 89 | } |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 90 | auth: { |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 91 | username: "penpot" |
| 92 | password: "penpot" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 93 | database: "penpot" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 94 | } |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 95 | } |
| 96 | } |
| 97 | penpot: { |
| 98 | chart: charts.penpot |
| 99 | values: { |
| 100 | "global": { |
| 101 | postgresqlEnabled: false |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 102 | redisEnabled: true // TODO(gio): provide redis from outside |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 103 | } |
| 104 | fullnameOverride: "penpot" |
| 105 | backend: { |
| 106 | image: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 107 | repository: images.backend.fullName |
| 108 | tag: images.backend.tag |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 109 | imagePullPolicy: images.backend.pullPolicy |
| 110 | } |
| 111 | } |
| 112 | frontend: { |
| 113 | image: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 114 | repository: images.frontend.fullName |
| 115 | tag: images.frontend.tag |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 116 | imagePullPolicy: images.frontend.pullPolicy |
| 117 | } |
| 118 | ingress: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 119 | enabled: true |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 120 | className: input.network.ingressClass |
| 121 | if input.network.certificateIssuer != "" { |
| 122 | annotations: { |
| 123 | "acme.cert-manager.io/http01-edit-in-place": "true" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 124 | "cert-manager.io/cluster-issuer": input.network.certificateIssuer |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 125 | } |
| 126 | } |
| 127 | hosts: [_domain] |
| 128 | tls: [{ |
| 129 | hosts: [_domain] |
| 130 | secretName: "cert-\(_domain)" |
| 131 | }] |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 132 | } |
| 133 | } |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 134 | persistence: enabled: true |
| 135 | config: { |
| 136 | publicURI: _domain |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 137 | flags: "enable-login-with-oidc enable-registration enable-insecure-register disable-demo-users disable-demo-warning" // TODO(gio): remove enable-insecure-register? |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 138 | postgresql: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 139 | host: "postgres.\(release.namespace).svc.cluster.local" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 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: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 147 | enabled: true |
| 148 | baseURI: "https://hydra.\(networks.public.domain)" |
| 149 | clientID: "" |
| 150 | clientSecret: "" |
| 151 | authURI: "" |
| 152 | tokenURI: "" |
| 153 | userURI: "" |
| 154 | roles: "" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 155 | rolesAttribute: "" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 156 | scopes: "" |
| 157 | nameAttribute: "name" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 158 | emailAttribute: "email" |
| 159 | } |
| 160 | existingSecret: _oauth2SecretName |
| 161 | secretKeys: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 162 | oidcClientIDKey: "client_id" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 163 | oidcClientSecretKey: "client_secret" |
| 164 | } |
| 165 | } |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 166 | } |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 167 | exporter: { |
| 168 | image: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 169 | repository: images.exporter.fullName |
| 170 | tag: images.exporter.tag |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 171 | imagePullPolicy: images.exporter.pullPolicy |
| 172 | } |
| 173 | } |
| 174 | redis: image: tag: "7.0.8-debian-11-r16" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 175 | } |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 176 | } |
| 177 | } |
| 178 | } |