| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 1 | import ( |
| 2 | "encoding/base64" |
| 3 | ) |
| 4 | |
| 5 | input: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 6 | network: #Network @name(Network) |
| 7 | repoAddr: string @name(Repository Address) |
| 8 | sshPrivateKey: string @name(SSH Private Key) |
| 9 | authGroups: string @name(Allowed Groups) |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 10 | } |
| 11 | |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 12 | name: "App Manager" |
| Giorgi Lekveishvili | 03d6f4b | 2024-03-08 13:05:21 +0400 | [diff] [blame] | 13 | namespace: "appmanager" |
| gio | 8c942d2 | 2024-07-17 13:43:02 +0400 | [diff] [blame] | 14 | icon: """ |
| gio | d2d2df0 | 2025-05-03 19:15:17 +0400 | [diff] [blame] | 15 | <svg width='50px' height='50px' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 33.66287237 39.68503937'> |
| 16 | <defs> |
| 17 | <style> |
| 18 | .cls-1 { |
| 19 | fill: currentColor; |
| 20 | } |
| 21 | </style> |
| 22 | </defs> |
| 23 | <path class='cls-1' d='m2.77885812,10.03744798c-1.53217449,0-2.77885812,1.24698542-2.77885812,2.77885812v24.08987515c0,1.5318727,1.24668363,2.77885812,2.77885812,2.77885812h28.10515613c1.53217449,0,2.77885812-1.24698542,2.77885812-2.77885812V12.8163061c0-1.5318727-1.24668363-2.77885812-2.77885812-2.77885812h-5.25110027v-1.23612107c0-4.9348271-3.86589623-8.80132691-8.80132691-8.80132691s-8.80162869,3.86649981-8.80162869,8.80132691v1.23612107H2.77885812Zm29.34127721,28.10485435H1.54273704V11.58018502h30.57739828v26.5621173ZM8.11234634,16.05991677c.58426035,4.33004521,4.20419987,7.56520583,8.71924074,7.56520583,4.51473908,0,8.1346786-3.23516062,8.71893895-7.56520583h-1.56084429c-.57067992,3.46210473-3.51008892,6.02246879-7.15809467,6.02246879s-6.58771654-2.56036406-7.15839646-6.02246879h-1.56084429Zm15.9778306-6.02246879h-14.51748151v-1.23612107c0-4.07050807,3.18838358-7.25858986,7.25889165-7.25858986,4.07020628,0,7.25858986,3.18808179,7.25858986,7.25858986v1.23612107Z'/> |
| 24 | </svg>""" |
| Giorgi Lekveishvili | 03d6f4b | 2024-03-08 13:05:21 +0400 | [diff] [blame] | 25 | |
| gio | 24312cc | 2025-04-20 15:53:15 +0400 | [diff] [blame] | 26 | _subdomain: "apps" |
| 27 | _webPort: 8080 |
| Giorgi Lekveishvili | 3c91e8b | 2024-03-25 20:20:14 +0400 | [diff] [blame] | 28 | |
| gio | 7841f4f | 2024-07-26 19:53:49 +0400 | [diff] [blame] | 29 | _domain: "\(_subdomain).\(input.network.domain)" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 30 | url: "https://\(_domain)" |
| gio | 09a3e5b | 2024-04-26 14:11:06 +0400 | [diff] [blame] | 31 | |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 32 | out: { |
| 33 | ingress: { |
| 34 | appmanager: { |
| 35 | auth: { |
| 36 | enabled: true |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 37 | groups: input.authGroups |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 38 | } |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 39 | network: input.network |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 40 | subdomain: _subdomain |
| 41 | service: { |
| 42 | name: "appmanager" |
| gio | 24312cc | 2025-04-20 15:53:15 +0400 | [diff] [blame] | 43 | port: _webPort |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 44 | } |
| 45 | } |
| 46 | } |
| 47 | |
| 48 | images: { |
| 49 | appmanager: { |
| 50 | repository: "giolekva" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 51 | name: "pcloud-installer" |
| 52 | tag: "latest" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 53 | pullPolicy: "Always" |
| 54 | } |
| 55 | } |
| 56 | |
| 57 | charts: { |
| 58 | appmanager: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 59 | kind: "GitRepository" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 60 | address: "https://code.v1.dodo.cloud/helm-charts" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 61 | branch: "main" |
| 62 | path: "charts/appmanager" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 63 | } |
| 64 | } |
| 65 | |
| 66 | helm: { |
| 67 | appmanager: { |
| 68 | chart: charts.appmanager |
| 69 | values: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 70 | repoAddr: input.repoAddr |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 71 | sshPrivateKey: base64.Encode(null, input.sshPrivateKey) |
| gio | f6ad298 | 2024-08-23 17:42:49 +0400 | [diff] [blame] | 72 | // TODO(gio): de-hardcode these variables |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 73 | headscaleAPIAddr: "http://headscale-api.\(global.namespacePrefix)app-headscale.svc.cluster.local" |
| 74 | dnsAPIAddr: "http://dns-api.\(global.namespacePrefix)dns.svc.cluster.local" |
| gio | f6ad298 | 2024-08-23 17:42:49 +0400 | [diff] [blame] | 75 | clusterProxyConfigPath: "/apps/private-network/resources/proxy-backend-config.yaml" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 76 | ingress: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 77 | className: input.network.ingressClass |
| 78 | domain: _domain |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 79 | certificateIssuer: "" |
| 80 | } |
| 81 | clusterRoleName: "\(global.id)-appmanager" |
| gio | 24312cc | 2025-04-20 15:53:15 +0400 | [diff] [blame] | 82 | port: _webPort |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 83 | image: { |
| 84 | repository: images.appmanager.fullName |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 85 | tag: images.appmanager.tag |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 86 | pullPolicy: images.appmanager.pullPolicy |
| 87 | } |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 88 | } |
| 89 | } |
| 90 | } |
| 91 | } |