| DTabidze | 0993581 | 2024-03-13 13:47:39 +0400 | [diff] [blame] | 1 | input: { |
| 2 | network: #Network |
| 3 | subdomain: string |
| Giorgi Lekveishvili | 0ba5e40 | 2024-03-20 15:56:30 +0400 | [diff] [blame^] | 4 | requireAuth: bool |
| DTabidze | 0993581 | 2024-03-13 13:47:39 +0400 | [diff] [blame] | 5 | } |
| 6 | |
| 7 | _domain: "\(input.subdomain).\(input.network.domain)" |
| 8 | |
| 9 | name: "url-shortener" |
| 10 | namespace: "app-url-shortener" |
| 11 | readme: "URL shortener application will be installed on \(input.network.name) network and be accessible at https://\(_domain)" |
| 12 | description: "Provides URL shortening service. Can be configured to be reachable only from private network or publicly." |
| Giorgi Lekveishvili | b4fcaa2 | 2024-03-13 16:34:49 +0400 | [diff] [blame] | 13 | icon: "<svg xmlns='http://www.w3.org/2000/svg' width='40.63' height='50' viewBox='0 0 13 16'><circle cx='2' cy='10' r='1' fill='currentColor'/><circle cx='2' cy='6' r='1' fill='currentColor'/><path fill='currentColor' d='M4.5 14c-.06 0-.11 0-.17-.03a.501.501 0 0 1-.3-.64l4-11a.501.501 0 0 1 .94.34l-4 11c-.07.2-.27.33-.47.33m3 0c-.06 0-.11 0-.17-.03a.501.501 0 0 1-.3-.64l4-11a.501.501 0 0 1 .94.34l-4 11c-.07.2-.27.33-.47.33'/></svg>" |
| DTabidze | 0993581 | 2024-03-13 13:47:39 +0400 | [diff] [blame] | 14 | |
| 15 | images: { |
| 16 | urlShortener: { |
| 17 | repository: "giolekva" |
| 18 | name: "url-shortener" |
| 19 | tag: "latest" |
| 20 | pullPolicy: "Always" |
| 21 | } |
| Giorgi Lekveishvili | 0ba5e40 | 2024-03-20 15:56:30 +0400 | [diff] [blame^] | 22 | authProxy: { |
| 23 | repository: "giolekva" |
| 24 | name: "auth-proxy" |
| 25 | tag: "latest" |
| 26 | pullPolicy: "Always" |
| 27 | } |
| DTabidze | 0993581 | 2024-03-13 13:47:39 +0400 | [diff] [blame] | 28 | } |
| 29 | |
| 30 | charts: { |
| 31 | urlShortener: { |
| 32 | chart: "charts/url-shortener" |
| 33 | sourceRef: { |
| 34 | kind: "GitRepository" |
| 35 | name: "pcloud" |
| 36 | namespace: global.id |
| 37 | } |
| 38 | } |
| Giorgi Lekveishvili | 0ba5e40 | 2024-03-20 15:56:30 +0400 | [diff] [blame^] | 39 | ingress: { |
| 40 | chart: "charts/ingress" |
| 41 | sourceRef: { |
| 42 | kind: "GitRepository" |
| 43 | name: "pcloud" |
| 44 | namespace: global.id |
| 45 | } |
| 46 | } |
| 47 | authProxy: { |
| 48 | chart: "charts/auth-proxy" |
| 49 | sourceRef: { |
| 50 | kind: "GitRepository" |
| 51 | name: "pcloud" |
| 52 | namespace: global.id |
| 53 | } |
| 54 | } |
| DTabidze | 0993581 | 2024-03-13 13:47:39 +0400 | [diff] [blame] | 55 | } |
| 56 | |
| Giorgi Lekveishvili | 0ba5e40 | 2024-03-20 15:56:30 +0400 | [diff] [blame^] | 57 | _urlShortenerServiceName: "url-shortener" |
| 58 | _authProxyServiceName: "auth-proxy" |
| 59 | _httpPortName: "http" |
| 60 | |
| DTabidze | 0993581 | 2024-03-13 13:47:39 +0400 | [diff] [blame] | 61 | helm: { |
| 62 | "url-shortener": { |
| Giorgi Lekveishvili | b4fcaa2 | 2024-03-13 16:34:49 +0400 | [diff] [blame] | 63 | chart: charts.urlShortener |
| DTabidze | 0993581 | 2024-03-13 13:47:39 +0400 | [diff] [blame] | 64 | values: { |
| DTabidze | 0993581 | 2024-03-13 13:47:39 +0400 | [diff] [blame] | 65 | storage: { |
| 66 | size: "1Gi" |
| 67 | } |
| 68 | image: { |
| 69 | repository: images.urlShortener.fullName |
| 70 | tag: images.urlShortener.tag |
| 71 | pullPolicy: images.urlShortener.pullPolicy |
| 72 | } |
| Giorgi Lekveishvili | 0ba5e40 | 2024-03-20 15:56:30 +0400 | [diff] [blame^] | 73 | portName: _httpPortName |
| DTabidze | 0993581 | 2024-03-13 13:47:39 +0400 | [diff] [blame] | 74 | } |
| 75 | } |
| Giorgi Lekveishvili | 0ba5e40 | 2024-03-20 15:56:30 +0400 | [diff] [blame^] | 76 | if input.requireAuth { |
| 77 | "auth-proxy": { |
| 78 | chart: charts.authProxy |
| 79 | values: { |
| 80 | image: { |
| 81 | repository: images.authProxy.fullName |
| 82 | tag: images.authProxy.tag |
| 83 | pullPolicy: images.authProxy.pullPolicy |
| 84 | } |
| 85 | upstream: "\(_urlShortenerServiceName).\(release.namespace).svc.cluster.local" |
| 86 | whoAmIAddr: "https://accounts.\(global.domain)/sessions/whoami" |
| 87 | loginAddr: "https://accounts-ui.\(global.domain)/login" |
| 88 | portName: _httpPortName |
| 89 | } |
| 90 | } |
| 91 | } |
| 92 | ingress: { |
| 93 | chart: charts.ingress |
| 94 | values: { |
| 95 | domain: _domain |
| 96 | ingressClassName: input.network.ingressClass |
| 97 | certificateIssuer: input.network.certificateIssuer |
| 98 | service: { |
| 99 | if input.requireAuth { |
| 100 | name: _authProxyServiceName |
| 101 | } |
| 102 | if !input.requireAuth { |
| 103 | name: _urlShortenerServiceName |
| 104 | } |
| 105 | port: name: _httpPortName |
| 106 | } |
| 107 | } |
| 108 | } |
| DTabidze | 0993581 | 2024-03-13 13:47:39 +0400 | [diff] [blame] | 109 | } |