diff --git a/assets/jsconfig.json b/assets/jsconfig.json
index 377218ccb..4ad710c10 100644
--- a/assets/jsconfig.json
+++ b/assets/jsconfig.json
@@ -3,7 +3,8 @@
"baseUrl": ".",
"paths": {
"*": [
- "*"
+ "*",
+ "../node_modules/*"
]
}
}
diff --git a/content/influxdb3/clustered/reference/release-notes/clustered.md b/content/influxdb3/clustered/reference/release-notes/clustered.md
index 7c0d688fe..6d21c65ab 100644
--- a/content/influxdb3/clustered/reference/release-notes/clustered.md
+++ b/content/influxdb3/clustered/reference/release-notes/clustered.md
@@ -21,6 +21,34 @@ weight: 201
> Checkpoint releases are only made when absolutely necessary and are clearly
> identified below with the icon.
+{{< expand-wrapper >}}
+{{% expand "Download release artifacts manually" %}}
+
+To download a bundle of release artifacts for a specific version of
+InfluxDB Clustered, [install `crane`](https://github.com/google/go-containerregistry/tree/main/cmd/crane#installation)
+and [`jq`](https://jqlang.org/download/) and run the following shell script:
+
+{{% code-placeholders "RELEASE_VERSION" %}}
+
+```bash
+INFLUXDB_RELEASE="RELEASE_VERSION"
+IMAGE="us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:$INFLUXDB_RELEASE"
+DOCKER_CFG="/tmp/influxdbsecret"
+
+DIGEST=$(DOCKER_CONFIG="$DOCKER_CFG" crane manifest "$IMAGE" | jq -r '.layers[1].digest')
+
+DOCKER_CONFIG="$DOCKER_CFG" \
+crane blob "$IMAGE@$DIGEST" | tar -xvzf - -C ./
+```
+{{% /code-placeholders %}}
+
+Replace {{% code-placeholder-key %}}`RELEASE_VERSION`{{% /code-placeholder-key %}}
+with the InfluxDB Clustered release version you want to download artifacts for.
+Assets will be available in the created `influxdb-3.0-clustered` directory.
+
+{{% /expand %}}
+{{< /expand-wrapper >}}
+
{{< release-toc >}}
---
@@ -35,6 +63,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20250508-1719206
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20250508-1719206/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20250508-1719206/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Changes
#### Deployment
@@ -59,6 +93,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20250212-1570743
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20250212-1570743/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20250212-1570743/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Bug Fixes
This release fixes a bug in the 20241217-1494922 release where the default
@@ -88,6 +128,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20241217-1494922
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20241217-1494922/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20241217-1494922/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Bug Fixes
This fixes a bug present in release [20241024-1354148](#20241024-1354148), in
@@ -112,7 +158,7 @@ DSN before connecting.
---
-## 20241024-1354148 {date="2024-10-24" .checkpoint}
+## 20241024-1354148 {date="2024-10-24" .checkpoint}
### Quickstart
@@ -122,6 +168,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20241022-1346953
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20241022-1346953/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20241022-1346953/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Known Bugs
### `core` service DSN parsing errors
@@ -318,6 +370,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20240819-1176644
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20240819-1176644/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20240819-1176644/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
#### `admin` section is no longer required
@@ -397,6 +455,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20240717-1117630
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20240717-1117630/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20240717-1117630/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
#### Experimental license enforcement
@@ -508,6 +572,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20240605-1035562
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20240605-1035562/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20240605-1035562/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
Multiple improvements to compaction, pruning, and performance of concurrent queries.
@@ -574,6 +644,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20240430-976585
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20240430-976585/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20240430-976585/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
- Added configuration settings for an optional Prometheus `ServiceMonitor`
@@ -605,6 +681,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20240418-955990
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20240418-955990/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20240418-955990/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
#### Minimum `influxctl` version
@@ -645,6 +727,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20240325-920726
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20240325-920726/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20240325-920726/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
#### Lower defaults for garbage collection
@@ -696,6 +784,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20240227-883344
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20240227-883344/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20240227-883344/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Changes
#### Deployment
@@ -724,6 +818,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20240214-863513
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20240214-863513/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20240214-863513/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
#### Grafana dashboards by default
@@ -783,6 +883,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20240111-824437
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20240111-824437/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20240111-824437/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
#### Ingress improvements
@@ -845,6 +951,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20231213-791734
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20231213-791734/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20231213-791734/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
#### Labels/annotations
@@ -885,6 +997,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20231117-750011
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20231117-750011/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20231117-750011/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
> ![Important]
@@ -910,6 +1028,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20231115-746129
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20231115-746129/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20231115-746129/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
#### Ingress templating
@@ -1022,6 +1146,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20231024-711448
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20231024-711448/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20231024-711448/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
#### Additional `AppInstance` parameters
@@ -1083,6 +1213,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20231004-666907
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20231004-666907/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20231004-666907/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
#### Object store custom certificates
@@ -1150,6 +1286,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20230922-650371
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20230922-650371/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20230922-650371/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
#### Configuration simplification
@@ -1202,6 +1344,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20230915-630658
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20230915-630658/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20230915-630658/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
#### Persistent volume fixes
@@ -1228,6 +1376,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20230914-628600
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20230914-628600/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20230914-628600/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
#### Updated Azure AD documentation
@@ -1263,6 +1417,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20230912-619813
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20230912-619813/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20230912-619813/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
#### Custom CA certificates {note="(Optional)"}
@@ -1333,6 +1493,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20230911-604209
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20230911-604209/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20230911-604209/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
This release contains a breaking change to the monitoring subsystem that
@@ -1382,6 +1548,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20230908-600131
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20230908-600131/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20230908-600131/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Highlights
#### Default storage class
@@ -1409,6 +1581,12 @@ spec:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20230907-597343
```
+#### Release artifacts
+
+- [app-instance-schema.json](/downloads/clustered-release-artifacts/20230907-597343/app-instance-schema.json)
+- [example-customer.yml](/downloads/clustered-release-artifacts/20230907-597343/example-customer.yml)
+- [InfluxDB Clustered README EULA July 2024.txt](/downloads/clustered-release-artifacts/InfluxDB%20Clustered%20README%20EULA%20July%202024.txt)
+
### Upgrade Notes
This release requires a new configuration block:
diff --git a/deploy/edge.js b/deploy/edge.js
index eeed914c1..668cffa72 100644
--- a/deploy/edge.js
+++ b/deploy/edge.js
@@ -3,31 +3,32 @@
const path = require('path');
const latestVersions = {
- 'influxdb': 'v2',
- 'influxdbv2': 'v2',
- 'telegraf': 'v1',
- 'chronograf': 'v1',
- 'kapacitor': 'v1',
- 'enterprise': 'v1',
- 'flux': 'v0',
+ influxdb: 'v2',
+ influxdbv2: 'v2',
+ telegraf: 'v1',
+ chronograf: 'v1',
+ kapacitor: 'v1',
+ enterprise: 'v1',
+ flux: 'v0',
};
const archiveDomain = 'https://archive.docs.influxdata.com';
const docsDomain = 'https://docs.influxdata.com';
exports.handler = (event, context, callback) => {
-
function temporaryRedirect(condition, newUri) {
if (condition) {
return callback(null, {
status: '302',
statusDescription: 'Found',
headers: {
- location: [{
- key: 'Location',
- value: newUri,
- }],
- }
+ location: [
+ {
+ key: 'Location',
+ value: newUri,
+ },
+ ],
+ },
});
}
}
@@ -38,14 +39,18 @@ exports.handler = (event, context, callback) => {
status: '301',
statusDescription: 'Moved Permanently',
headers: {
- 'location': [{
- key: 'Location',
- value: newUri,
- }],
- 'cache-control': [{
- key: 'Cache-Control',
- value: "max-age=3600"
- }],
+ location: [
+ {
+ key: 'Location',
+ value: newUri,
+ },
+ ],
+ 'cache-control': [
+ {
+ key: 'Cache-Control',
+ value: 'max-age=3600',
+ },
+ ],
},
});
}
@@ -55,34 +60,40 @@ exports.handler = (event, context, callback) => {
const parsedPath = path.parse(request.uri);
const indexPath = 'index.html';
const validExtensions = {
- '.html': true,
'.css': true,
- '.js': true,
- '.xml': true,
- '.png': true,
- '.gif': true,
- '.jpg': true,
- '.ico': true,
- '.svg': true,
'.csv': true,
- '.txt': true,
- '.lp': true,
- '.json': true,
- '.rb': true,
'.eot': true,
+ '.gif': true,
+ '.gz': true,
+ '.html': true,
+ '.ico': true,
+ '.jpg': true,
+ '.js': true,
+ '.json': true,
+ '.lp': true,
+ '.md': true,
+ '.md5': true,
+ '.markdown': true,
+ '.otf': true,
+ '.png': true,
+ '.rb': true,
+ '.sha256': true,
+ '.svg': true,
+ '.tar': true,
'.ttf': true,
+ '.txt': true,
'.woff': true,
'.woff2': true,
- '.otf': true,
- '.gz': true,
- '.tar': true,
+ '.yaml': true,
+ '.yml': true,
'.zip': true,
- '.md5': true,
- '.sha256': true,
};
// Remove index.html from path
- permanentRedirect(request.uri.endsWith('index.html'), request.uri.substr(0, request.uri.length - indexPath.length));
+ permanentRedirect(
+ request.uri.endsWith('index.html'),
+ request.uri.substr(0, request.uri.length - indexPath.length)
+ );
// If file has a valid extension, return the request unchanged
if (validExtensions[parsedPath.ext]) {
@@ -92,117 +103,536 @@ exports.handler = (event, context, callback) => {
////////////////////// START PRODUCT-SPECIFIC REDIRECTS //////////////////////
//////////////////////// Distributed product redirects ///////////////////////
- permanentRedirect(/\/influxdb\/cloud-serverless/.test(request.uri), request.uri.replace(/\/influxdb\/cloud-serverless/, '/influxdb3/cloud-serverless'));
- permanentRedirect(/\/influxdb\/cloud-dedicated/.test(request.uri), request.uri.replace(/\/influxdb\/cloud-dedicated/, '/influxdb3/cloud-dedicated'));
- permanentRedirect(/\/influxdb\/clustered/.test(request.uri), request.uri.replace(/\/influxdb\/clustered/, '/influxdb3/clustered'));
+ permanentRedirect(
+ /\/influxdb\/cloud-serverless/.test(request.uri),
+ request.uri.replace(
+ /\/influxdb\/cloud-serverless/,
+ '/influxdb3/cloud-serverless'
+ )
+ );
+ permanentRedirect(
+ /\/influxdb\/cloud-dedicated/.test(request.uri),
+ request.uri.replace(
+ /\/influxdb\/cloud-dedicated/,
+ '/influxdb3/cloud-dedicated'
+ )
+ );
+ permanentRedirect(
+ /\/influxdb\/clustered/.test(request.uri),
+ request.uri.replace(/\/influxdb\/clustered/, '/influxdb3/clustered')
+ );
//////////////////////////// v2 subdomain redirect ///////////////////////////
- permanentRedirect(request.headers.host[0].value === 'v2.docs.influxdata.com', `https://docs.influxdata.com${request.uri}`);
+ permanentRedirect(
+ request.headers.host[0].value === 'v2.docs.influxdata.com',
+ `https://docs.influxdata.com${request.uri}`
+ );
///////////////////////// Force v in version numbers /////////////////////////
- permanentRedirect(/(^\/[\w]*\/)(\d\.)/.test(request.uri), request.uri.replace(/(^\/[\w]*\/)(\d\.)/, `$1v$2`));
+ permanentRedirect(
+ /(^\/[\w]*\/)(\d\.)/.test(request.uri),
+ request.uri.replace(/(^\/[\w]*\/)(\d\.)/, `$1v$2`)
+ );
/////////////////// cloud-iox to cloud-serverless redirect //////////////////
- permanentRedirect(/\/influxdb\/cloud-iox/.test(request.uri), request.uri.replace(/\/influxdb\/cloud-iox/, '/influxdb/cloud-serverless'));
-
+ permanentRedirect(
+ /\/influxdb\/cloud-iox/.test(request.uri),
+ request.uri.replace(/\/influxdb\/cloud-iox/, '/influxdb/cloud-serverless')
+ );
+
////////////// CLI InfluxQL link (catch before latest redirect) //////////////
- permanentRedirect(/\/influxdb\/latest\/query_language\/spec/.test(request.uri), request.uri.replace(/latest/, 'v1'));
+ permanentRedirect(
+ /\/influxdb\/latest\/query_language\/spec/.test(request.uri),
+ request.uri.replace(/latest/, 'v1')
+ );
////////////////////////// Latest version redirects //////////////////////////
- temporaryRedirect(/\/influxdb\/latest/.test(request.uri), request.uri.replace(/\/latest/, `/${latestVersions['influxdb']}`));
- temporaryRedirect(/\/telegraf\/latest/.test(request.uri), request.uri.replace(/\/latest/, `/${latestVersions['telegraf']}`));
- temporaryRedirect(/\/chronograf\/latest/.test(request.uri), request.uri.replace(/\/latest/, `/${latestVersions['chronograf']}`));
- temporaryRedirect(/\/kapacitor\/latest/.test(request.uri), request.uri.replace(/\/latest/, `/${latestVersions['kapacitor']}`));
- temporaryRedirect(/\/enterprise_influxdb\/latest/.test(request.uri), request.uri.replace(/\/latest/, `/${latestVersions['enterprise']}`));
- temporaryRedirect(/\/flux\/latest/.test(request.uri), request.uri.replace(/\/latest/, `/${latestVersions['flux']}`));
+ temporaryRedirect(
+ /\/influxdb\/latest/.test(request.uri),
+ request.uri.replace(/\/latest/, `/${latestVersions['influxdb']}`)
+ );
+ temporaryRedirect(
+ /\/telegraf\/latest/.test(request.uri),
+ request.uri.replace(/\/latest/, `/${latestVersions['telegraf']}`)
+ );
+ temporaryRedirect(
+ /\/chronograf\/latest/.test(request.uri),
+ request.uri.replace(/\/latest/, `/${latestVersions['chronograf']}`)
+ );
+ temporaryRedirect(
+ /\/kapacitor\/latest/.test(request.uri),
+ request.uri.replace(/\/latest/, `/${latestVersions['kapacitor']}`)
+ );
+ temporaryRedirect(
+ /\/enterprise_influxdb\/latest/.test(request.uri),
+ request.uri.replace(/\/latest/, `/${latestVersions['enterprise']}`)
+ );
+ temporaryRedirect(
+ /\/flux\/latest/.test(request.uri),
+ request.uri.replace(/\/latest/, `/${latestVersions['flux']}`)
+ );
////////////////////////// Versionless URL redirects /////////////////////////
- temporaryRedirect(request.uri === '/influxdb/', `/influxdb/${latestVersions['influxdb']}/`);
- temporaryRedirect(request.uri === '/telegraf/', `/telegraf/${latestVersions['telegraf']}/`);
- temporaryRedirect(request.uri === '/chronograf/', `/chronograf/${latestVersions['chronograf']}/`);
- temporaryRedirect(request.uri === '/kapacitor/', `/kapacitor/${latestVersions['kapacitor']}/`);
- temporaryRedirect(request.uri === '/enterprise_influxdb/', `/enterprise_influxdb/${latestVersions['enterprise']}/`);
- temporaryRedirect(request.uri === '/flux/', `/flux/${latestVersions['flux']}/`);
+ temporaryRedirect(
+ request.uri === '/influxdb/',
+ `/influxdb/${latestVersions['influxdb']}/`
+ );
+ temporaryRedirect(
+ request.uri === '/telegraf/',
+ `/telegraf/${latestVersions['telegraf']}/`
+ );
+ temporaryRedirect(
+ request.uri === '/chronograf/',
+ `/chronograf/${latestVersions['chronograf']}/`
+ );
+ temporaryRedirect(
+ request.uri === '/kapacitor/',
+ `/kapacitor/${latestVersions['kapacitor']}/`
+ );
+ temporaryRedirect(
+ request.uri === '/enterprise_influxdb/',
+ `/enterprise_influxdb/${latestVersions['enterprise']}/`
+ );
+ temporaryRedirect(
+ request.uri === '/flux/',
+ `/flux/${latestVersions['flux']}/`
+ );
/////////////////////// VERSION RESTRUCTURE REDIRECTS ////////////////////////
- permanentRedirect(/^\/\w+\/(v\d{1})\.[\dx]+/.test(request.uri), request.uri.replace(/^\/(\w+)\/(v\d{1})\.[\dx]+(.*$)/, `/$1/$2$3`));
+ permanentRedirect(
+ /^\/\w+\/(v\d{1})\.[\dx]+/.test(request.uri),
+ request.uri.replace(/^\/(\w+)\/(v\d{1})\.[\dx]+(.*$)/, `/$1/$2$3`)
+ );
/////////////////////////////// Flux redirects ///////////////////////////////
- // Redirect old Flux guides and introduction
- permanentRedirect(/\/flux\/(?:v0\.[0-9]{1,2})\/guides\//.test(request.uri), request.uri.replace(/\/flux\/(?:v0\.[0-9]{1,2}|latest)\/guides\//, `/influxdb/${latestVersions['influxdb']}/query-data/flux/`));
- permanentRedirect(/\/flux\/(?:v0\.[0-9]{1,2})\/introduction\//.test(request.uri), `/flux/${latestVersions['flux']}/get-started/`);
+ // Redirect old Flux guides and introduction
+ permanentRedirect(
+ /\/flux\/(?:v0\.[0-9]{1,2})\/guides\//.test(request.uri),
+ request.uri.replace(
+ /\/flux\/(?:v0\.[0-9]{1,2}|latest)\/guides\//,
+ `/influxdb/${latestVersions['influxdb']}/query-data/flux/`
+ )
+ );
+ permanentRedirect(
+ /\/flux\/(?:v0\.[0-9]{1,2})\/introduction\//.test(request.uri),
+ `/flux/${latestVersions['flux']}/get-started/`
+ );
// Redirect Flux language (spec) sections to Flux docs
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/language\//.test(request.uri), request.uri.replace(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/language\//, `/flux/${latestVersions['flux']}/spec/`));
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/language\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/language\//,
+ `/flux/${latestVersions['flux']}/spec/`
+ )
+ );
// Redirect Flux stdlib/built-in sections to Flux stdlib/universe docs
- temporaryRedirect(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/(?:inputs\/|outputs\/|misc\/|tests\/)(\w+\/$)/.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/(?:inputs\/|outputs\/|misc\/|tests\/)(\w+\/$)/, `/flux/${latestVersions['flux']}/stdlib/universe/$1`));
- temporaryRedirect(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/(?:inputs\/|outputs\/|misc\/|tests\/)$/.test(request.uri), `/flux/${latestVersions['flux']}/function-types/`);
- temporaryRedirect(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/transformations\/(?:aggregates\/|selectors\/|stream-table\/|type-conversions\/)(\w+\/$)/.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/transformations\/(?:aggregates\/|selectors\/|stream-table\/|type-conversions\/)(\w+\/$)/, `/flux/${latestVersions['flux']}/stdlib/universe/$1`));
- temporaryRedirect(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/transformations\/(?:aggregates\/|selectors\/|stream-table\/|type-conversions\/)/.test(request.uri), `/flux/${latestVersions['flux']}/function-types/`);
- temporaryRedirect(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/transformations\/(\w+\/$)/.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/transformations\/(\w+\/$)/, `/flux/${latestVersions['flux']}/stdlib/universe/$1`));
- temporaryRedirect(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/transformations\/$/.test(request.uri), `/flux/${latestVersions['flux']}/function-types/`);
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/$/.test(request.uri), `/flux/${latestVersions['flux']}/stdlib/universe/`);
+ temporaryRedirect(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/(?:inputs\/|outputs\/|misc\/|tests\/)(\w+\/$)/.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/(?:inputs\/|outputs\/|misc\/|tests\/)(\w+\/$)/,
+ `/flux/${latestVersions['flux']}/stdlib/universe/$1`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/(?:inputs\/|outputs\/|misc\/|tests\/)$/.test(
+ request.uri
+ ),
+ `/flux/${latestVersions['flux']}/function-types/`
+ );
+ temporaryRedirect(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/transformations\/(?:aggregates\/|selectors\/|stream-table\/|type-conversions\/)(\w+\/$)/.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/transformations\/(?:aggregates\/|selectors\/|stream-table\/|type-conversions\/)(\w+\/$)/,
+ `/flux/${latestVersions['flux']}/stdlib/universe/$1`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/transformations\/(?:aggregates\/|selectors\/|stream-table\/|type-conversions\/)/.test(
+ request.uri
+ ),
+ `/flux/${latestVersions['flux']}/function-types/`
+ );
+ temporaryRedirect(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/transformations\/(\w+\/$)/.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/transformations\/(\w+\/$)/,
+ `/flux/${latestVersions['flux']}/stdlib/universe/$1`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/transformations\/$/.test(
+ request.uri
+ ),
+ `/flux/${latestVersions['flux']}/function-types/`
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/built-in\/$/.test(
+ request.uri
+ ),
+ `/flux/${latestVersions['flux']}/stdlib/universe/`
+ );
- temporaryRedirect(/\/flux\/v0\.x\/stdlib\/built-in\/(?:inputs\/|outputs\/|misc\/|tests\/)(\w+\/$)/.test(request.uri), request.uri.replace(/\/flux\/v0\.x\/stdlib\/built-in\/(?:inputs\/|outputs\/|misc\/|tests\/)(\w+\/$)/, `/flux/${latestVersions['flux']}/stdlib/universe/$1`));
- temporaryRedirect(/\/flux\/v0\.x\/stdlib\/built-in\/(?:inputs\/|outputs\/|misc\/|tests\/)$/.test(request.uri), `/flux/${latestVersions['flux']}/function-types/`);
- temporaryRedirect(/\/flux\/v0\.x\/stdlib\/built-in\/transformations\/(?:aggregates\/|selectors\/|stream-table\/|type-conversions\/)(\w+\/$)/.test(request.uri), request.uri.replace(/\/flux\/v0\.x\/stdlib\/built-in\/transformations\/(?:aggregates\/|selectors\/|stream-table\/|type-conversions\/)(\w+\/$)/, `/flux/${latestVersions['flux']}/stdlib/universe/$1`));
- temporaryRedirect(/\/flux\/v0\.x\/stdlib\/built-in\/transformations\/(?:aggregates\/|selectors\/|stream-table\/|type-conversions\/)/.test(request.uri), `/flux/${latestVersions['flux']}/function-types/`);
- temporaryRedirect(/\/flux\/v0\.x\/stdlib\/built-in\/transformations\/(\w+\/$)/.test(request.uri), request.uri.replace(/\/flux\/v0\.x\/stdlib\/built-in\/transformations\/(\w+\/$)/, `/flux/${latestVersions['flux']}/stdlib/universe/$1`));
- temporaryRedirect(/\/flux\/v0\.x\/stdlib\/built-in\/transformations\/$/.test(request.uri), `/flux/${latestVersions['flux']}/function-types/`);
- temporaryRedirect(/\/flux\/v0\.x\/stdlib\/built-in\/$/.test(request.uri), `/flux/${latestVersions['flux']}/stdlib/universe/`);
- temporaryRedirect(/\/flux\/v0\.x\/stdlib\/universe\/(?:inputs\/|outputs\/|misc\/|tests\/|transformations\/|selectors\/|aggregates\/)$/.test(request.uri), `/flux/${latestVersions['flux']}/function-types/`);
+ temporaryRedirect(
+ /\/flux\/v0\.x\/stdlib\/built-in\/(?:inputs\/|outputs\/|misc\/|tests\/)(\w+\/$)/.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/flux\/v0\.x\/stdlib\/built-in\/(?:inputs\/|outputs\/|misc\/|tests\/)(\w+\/$)/,
+ `/flux/${latestVersions['flux']}/stdlib/universe/$1`
+ )
+ );
+ temporaryRedirect(
+ /\/flux\/v0\.x\/stdlib\/built-in\/(?:inputs\/|outputs\/|misc\/|tests\/)$/.test(
+ request.uri
+ ),
+ `/flux/${latestVersions['flux']}/function-types/`
+ );
+ temporaryRedirect(
+ /\/flux\/v0\.x\/stdlib\/built-in\/transformations\/(?:aggregates\/|selectors\/|stream-table\/|type-conversions\/)(\w+\/$)/.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/flux\/v0\.x\/stdlib\/built-in\/transformations\/(?:aggregates\/|selectors\/|stream-table\/|type-conversions\/)(\w+\/$)/,
+ `/flux/${latestVersions['flux']}/stdlib/universe/$1`
+ )
+ );
+ temporaryRedirect(
+ /\/flux\/v0\.x\/stdlib\/built-in\/transformations\/(?:aggregates\/|selectors\/|stream-table\/|type-conversions\/)/.test(
+ request.uri
+ ),
+ `/flux/${latestVersions['flux']}/function-types/`
+ );
+ temporaryRedirect(
+ /\/flux\/v0\.x\/stdlib\/built-in\/transformations\/(\w+\/$)/.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/flux\/v0\.x\/stdlib\/built-in\/transformations\/(\w+\/$)/,
+ `/flux/${latestVersions['flux']}/stdlib/universe/$1`
+ )
+ );
+ temporaryRedirect(
+ /\/flux\/v0\.x\/stdlib\/built-in\/transformations\/$/.test(request.uri),
+ `/flux/${latestVersions['flux']}/function-types/`
+ );
+ temporaryRedirect(
+ /\/flux\/v0\.x\/stdlib\/built-in\/$/.test(request.uri),
+ `/flux/${latestVersions['flux']}/stdlib/universe/`
+ );
+ temporaryRedirect(
+ /\/flux\/v0\.x\/stdlib\/universe\/(?:inputs\/|outputs\/|misc\/|tests\/|transformations\/|selectors\/|aggregates\/)$/.test(
+ request.uri
+ ),
+ `/flux/${latestVersions['flux']}/function-types/`
+ );
// Redirect Flux stdlib/influxdb sections to Flux stdlib/influxdata docs
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb\//, `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/monitor\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/monitor\//, `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/monitor/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb-sample\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb-sample\//, `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/sample/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb-schema\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb-schema\//, `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/schema/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/secrets\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/secrets\//, `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/secrets/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb-tasks\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb-tasks\//, `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/tasks/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb-v1\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb-v1\//, `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/v1/`));
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb\//,
+ `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/monitor\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/monitor\//,
+ `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/monitor/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb-sample\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb-sample\//,
+ `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/sample/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb-schema\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb-schema\//,
+ `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/schema/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/secrets\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/secrets\//,
+ `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/secrets/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb-tasks\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb-tasks\//,
+ `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/tasks/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb-v1\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/influxdb-v1\//,
+ `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/v1/`
+ )
+ );
// Redirect Flux stdlib/contrib sections to Flux stdlib/contrib/user docs
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/alerta\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/alerta\//, `/flux/${latestVersions['flux']}/stdlib/contrib/bonitoo-io/alerta/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/bigpanda\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/bigpanda\//, `/flux/${latestVersions['flux']}/stdlib/contrib/rhajek/bigpanda/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/discord\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/discord\//, `/flux/${latestVersions['flux']}/stdlib/contrib/chobbs/discord/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/events\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/events\//, `/flux/${latestVersions['flux']}/stdlib/contrib/tomhollingworth/events/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/influxdb\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/influxdb\//, `/flux/${latestVersions['flux']}/stdlib/contrib/jsternberg/influxdb/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/teams\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/teams\//, `/flux/${latestVersions['flux']}/stdlib/contrib/sranka/teams/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/opsgenie\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/opsgenie\//, `/flux/${latestVersions['flux']}/stdlib/contrib/sranka/opsgenie/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/rows\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/rows\//, `/flux/${latestVersions['flux']}/stdlib/contrib/jsternberg/rows/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/sensu\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/sensu\//, `/flux/${latestVersions['flux']}/stdlib/contrib/sranka/sensu/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/telegram\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/telegram\//, `/flux/${latestVersions['flux']}/stdlib/contrib/sranka/telegram/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/tickscript\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/tickscript\//, `/flux/${latestVersions['flux']}/stdlib/contrib/bonitoo-io/tickscript/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/victorops\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/victorops\//, `/flux/${latestVersions['flux']}/stdlib/contrib/bonitoo-io/victorops/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/webexteams\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/webexteams\//, `/flux/${latestVersions['flux']}/stdlib/contrib/sranka/webexteams/`));
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/zenoss\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/zenoss\//, `/flux/${latestVersions['flux']}/stdlib/contrib/bonitoo-io/zenoss/`));
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/alerta\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/alerta\//,
+ `/flux/${latestVersions['flux']}/stdlib/contrib/bonitoo-io/alerta/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/bigpanda\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/bigpanda\//,
+ `/flux/${latestVersions['flux']}/stdlib/contrib/rhajek/bigpanda/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/discord\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/discord\//,
+ `/flux/${latestVersions['flux']}/stdlib/contrib/chobbs/discord/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/events\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/events\//,
+ `/flux/${latestVersions['flux']}/stdlib/contrib/tomhollingworth/events/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/influxdb\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/influxdb\//,
+ `/flux/${latestVersions['flux']}/stdlib/contrib/jsternberg/influxdb/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/teams\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/teams\//,
+ `/flux/${latestVersions['flux']}/stdlib/contrib/sranka/teams/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/opsgenie\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/opsgenie\//,
+ `/flux/${latestVersions['flux']}/stdlib/contrib/sranka/opsgenie/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/rows\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/rows\//,
+ `/flux/${latestVersions['flux']}/stdlib/contrib/jsternberg/rows/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/sensu\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/sensu\//,
+ `/flux/${latestVersions['flux']}/stdlib/contrib/sranka/sensu/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/telegram\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/telegram\//,
+ `/flux/${latestVersions['flux']}/stdlib/contrib/sranka/telegram/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/tickscript\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/tickscript\//,
+ `/flux/${latestVersions['flux']}/stdlib/contrib/bonitoo-io/tickscript/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/victorops\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/victorops\//,
+ `/flux/${latestVersions['flux']}/stdlib/contrib/bonitoo-io/victorops/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/webexteams\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/webexteams\//,
+ `/flux/${latestVersions['flux']}/stdlib/contrib/sranka/webexteams/`
+ )
+ );
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/zenoss\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\/contrib\/zenoss\//,
+ `/flux/${latestVersions['flux']}/stdlib/contrib/bonitoo-io/zenoss/`
+ )
+ );
// Generic Flux stdlib redirect
- temporaryRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\//.test(request.uri), request.uri.replace(/\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\//, `/flux/${latestVersions['flux']}/stdlib/`));
- temporaryRedirect(/\/flux\/v0\.x\/functions\//.test(request.uri), request.uri.replace(/(\/flux\/v0\.x\/)functions\/(.*)/, `$1stdlib/$2`));
- temporaryRedirect(/\/flux\/v0\.x\/stdlib\/experimental\/to\/.+/.test(request.uri), request.uri.replace(/(\/flux\/v0\.x\/stdlib\/experimental\/)to\/(.+)/, `$1$2`));
+ temporaryRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\//.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/influxdb\/(?:v2\.[0-9]{1,2}|cloud)\/reference\/flux\/stdlib\//,
+ `/flux/${latestVersions['flux']}/stdlib/`
+ )
+ );
+ temporaryRedirect(
+ /\/flux\/v0\.x\/functions\//.test(request.uri),
+ request.uri.replace(/(\/flux\/v0\.x\/)functions\/(.*)/, `$1stdlib/$2`)
+ );
+ temporaryRedirect(
+ /\/flux\/v0\.x\/stdlib\/experimental\/to\/.+/.test(request.uri),
+ request.uri.replace(
+ /(\/flux\/v0\.x\/stdlib\/experimental\/)to\/(.+)/,
+ `$1$2`
+ )
+ );
// Redirect outdated Chronograf links
- temporaryRedirect(/\/flux\/v[0,1]\.x\/stdlib\/built-in\/(?:inputs\/|outputs\/|misc\/|tests\/)(\w+\/$)/.test(request.uri), request.uri.replace(/\/flux\/v[0,1]\.x\/stdlib\/built-in\/(?:inputs\/|outputs\/|misc\/|tests\/)(\w+\/$)/, `/flux/${latestVersions['flux']}/stdlib/universe/$1`));
- temporaryRedirect(/\/flux\/v[0,1]\.x\/stdlib\/built-in\/transformations\/(?:aggregates\/|selectors\/|stream-table\/|type-conversions\/)(\w+\/$)/.test(request.uri), request.uri.replace(/\/flux\/v[0,1]\.x\/stdlib\/built-in\/transformations\/(?:aggregates\/|selectors\/|stream-table\/|type-conversions\/)(\w+\/$)/, `/flux/${latestVersions['flux']}/stdlib/universe/$1`));
- temporaryRedirect(/\/flux\/v[0,1]\.x\/stdlib\/built-in\/transformations\/(\w+\/$)/.test(request.uri), request.uri.replace(/\/flux\/v[0,1]\.x\/stdlib\/built-in\/transformations\/(\w+\/$)/, `/flux/${latestVersions['flux']}/stdlib/universe/$1`));
- temporaryRedirect(/\/flux\/v[0,1]\.x\/stdlib\/secrets\//.test(request.uri), request.uri.replace(/\/flux\/v[0,1]\.x\/stdlib\/secrets\//, `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/secrets/`));
- temporaryRedirect(/\/flux\/v[0,1]\.x\/stdlib\/influxdb-v1\//.test(request.uri), request.uri.replace(/\/flux\/v[0,1]\.x\/stdlib\/influxdb-v1\//, `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/v1/`));
+ temporaryRedirect(
+ /\/flux\/v[0,1]\.x\/stdlib\/built-in\/(?:inputs\/|outputs\/|misc\/|tests\/)(\w+\/$)/.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/flux\/v[0,1]\.x\/stdlib\/built-in\/(?:inputs\/|outputs\/|misc\/|tests\/)(\w+\/$)/,
+ `/flux/${latestVersions['flux']}/stdlib/universe/$1`
+ )
+ );
+ temporaryRedirect(
+ /\/flux\/v[0,1]\.x\/stdlib\/built-in\/transformations\/(?:aggregates\/|selectors\/|stream-table\/|type-conversions\/)(\w+\/$)/.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/flux\/v[0,1]\.x\/stdlib\/built-in\/transformations\/(?:aggregates\/|selectors\/|stream-table\/|type-conversions\/)(\w+\/$)/,
+ `/flux/${latestVersions['flux']}/stdlib/universe/$1`
+ )
+ );
+ temporaryRedirect(
+ /\/flux\/v[0,1]\.x\/stdlib\/built-in\/transformations\/(\w+\/$)/.test(
+ request.uri
+ ),
+ request.uri.replace(
+ /\/flux\/v[0,1]\.x\/stdlib\/built-in\/transformations\/(\w+\/$)/,
+ `/flux/${latestVersions['flux']}/stdlib/universe/$1`
+ )
+ );
+ temporaryRedirect(
+ /\/flux\/v[0,1]\.x\/stdlib\/secrets\//.test(request.uri),
+ request.uri.replace(
+ /\/flux\/v[0,1]\.x\/stdlib\/secrets\//,
+ `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/secrets/`
+ )
+ );
+ temporaryRedirect(
+ /\/flux\/v[0,1]\.x\/stdlib\/influxdb-v1\//.test(request.uri),
+ request.uri.replace(
+ /\/flux\/v[0,1]\.x\/stdlib\/influxdb-v1\//,
+ `/flux/${latestVersions['flux']}/stdlib/influxdata/influxdb/v1/`
+ )
+ );
// Redirect Flux release notes
- permanentRedirect(/\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/release-notes\/flux\//.test(request.uri), `/flux/${latestVersions['flux']}/release-notes/`);
+ permanentRedirect(
+ /\/influxdb\/(v2\.[0-9]{1,2}|cloud)\/reference\/release-notes\/flux\//.test(
+ request.uri
+ ),
+ `/flux/${latestVersions['flux']}/release-notes/`
+ );
////////////////////////////// v2 path redirect //////////////////////////////
- permanentRedirect(/^\/v2\.0\//.test(request.uri), request.uri.replace(/^\/v2\.0\//, `/influxdb/v2.0/`));
+ permanentRedirect(
+ /^\/v2\.0\//.test(request.uri),
+ request.uri.replace(/^\/v2\.0\//, `/influxdb/v2.0/`)
+ );
////////////////////////// Archive version redirects /////////////////////////
- permanentRedirect(/\/influxdb\/(?:v0\.[0-9]{1,2}|v1\.[0-2])\//.test(request.uri), `${archiveDomain}${request.uri}`);
- permanentRedirect(/\/telegraf\/(?:v0\.[0-9]{1,2}|v1\.[0-8])\//.test(request.uri), `${archiveDomain}${request.uri}`);
- permanentRedirect(/\/chronograf\/(?:v0\.[0-9]{1,2}|v1\.[0-5])\//.test(request.uri), `${archiveDomain}${request.uri}`);
- permanentRedirect(/\/kapacitor\/(?:v0\.[0-9]{1,2}|v1\.[0-3])\//.test(request.uri), `${archiveDomain}${request.uri}`);
- permanentRedirect(/\/enterprise_influxdb\/v1\.[0-3]\//.test(request.uri), `${archiveDomain}${request.uri}`);
- permanentRedirect(/\/enterprise_kapacitor\//.test(request.uri), `${archiveDomain}${request.uri}`);
+ permanentRedirect(
+ /\/influxdb\/(?:v0\.[0-9]{1,2}|v1\.[0-2])\//.test(request.uri),
+ `${archiveDomain}${request.uri}`
+ );
+ permanentRedirect(
+ /\/telegraf\/(?:v0\.[0-9]{1,2}|v1\.[0-8])\//.test(request.uri),
+ `${archiveDomain}${request.uri}`
+ );
+ permanentRedirect(
+ /\/chronograf\/(?:v0\.[0-9]{1,2}|v1\.[0-5])\//.test(request.uri),
+ `${archiveDomain}${request.uri}`
+ );
+ permanentRedirect(
+ /\/kapacitor\/(?:v0\.[0-9]{1,2}|v1\.[0-3])\//.test(request.uri),
+ `${archiveDomain}${request.uri}`
+ );
+ permanentRedirect(
+ /\/enterprise_influxdb\/v1\.[0-3]\//.test(request.uri),
+ `${archiveDomain}${request.uri}`
+ );
+ permanentRedirect(
+ /\/enterprise_kapacitor\//.test(request.uri),
+ `${archiveDomain}${request.uri}`
+ );
/////////////////////// END PRODUCT-SPECIFIC REDIRECTS ///////////////////////
diff --git a/helper-scripts/README.md b/helper-scripts/README.md
new file mode 100644
index 000000000..73f3c2067
--- /dev/null
+++ b/helper-scripts/README.md
@@ -0,0 +1,36 @@
+# InfluxData documentation helper scripts
+
+This directory contains scripts designed to help make specific maintenance
+processes easier.
+
+## InfluxDB Clustered release artifacts
+
+**Script:** `./clustered-release-artifacts.sh`
+
+Each InfluxDB Clustered release has the following associated artifacts that need
+to be provided with the release notes:
+
+- `example-customer.yaml`
+- `app-instance-schema.json`
+
+This script uses an InfluxDB Clustered pull secret to pull down the required
+assets and store them in `static/downloads/clustered-release-artifacts/`.
+
+1. **Set up the pull secret:**
+
+ The **Clustered Pull Secret** (config.json) is available in Docs Team
+ 1Password vault. Download the pull secret and store it in the
+ `/tmp/influxdbsecret` directory on your local machine.
+
+2. Install dependencies:
+
+ - [Install `crane`](https://github.com/google/go-containerregistry/tree/main/cmd/crane#installation).
+ - [Install `jq`](https://jqlang.org/download/)
+
+3. From the root of the docs project directory, run the following command to
+ execute the script. Provide the release version as an argument to the
+ script--for example:
+
+ ```sh
+ sh ./helper-scripts/clustered-release-artifacts.sh 20250508-1719206
+ ```
diff --git a/helper-scripts/clustered-release-artifacts.sh b/helper-scripts/clustered-release-artifacts.sh
new file mode 100644
index 000000000..a3eede6e5
--- /dev/null
+++ b/helper-scripts/clustered-release-artifacts.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+set -euo pipefail
+
+if [ $# -ne 1 ]; then
+ echo "Usage: $0 "
+ exit 1
+fi
+
+RELEASE="$1"
+IMAGE="us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:$RELEASE"
+WORKDIR=$(mktemp -d)
+
+# Target directory relative to where the script is run
+BASE_DIR="./static/downloads/clustered-release-artifacts"
+TARGET_DIR="$BASE_DIR/$RELEASE"
+
+echo "Creating release directory: $TARGET_DIR"
+mkdir -p "$TARGET_DIR"
+
+echo "Fetching manifest digest..."
+DIGEST=$(DOCKER_CONFIG=/tmp/influxdbsecret crane manifest "$IMAGE" | jq -r '.layers[1].digest')
+
+echo "Downloading and extracting assets..."
+DOCKER_CONFIG=/tmp/influxdbsecret \
+crane blob "$IMAGE@$DIGEST" | tar -xvzf - -C "$WORKDIR"
+
+# Find the top-level extracted directory
+SUBDIR=$(find "$WORKDIR" -mindepth 1 -maxdepth 1 -type d)
+
+echo "Copying selected files to release directory..."
+cp "$SUBDIR/app-instance-schema.json" "$TARGET_DIR/"
+cp "$SUBDIR/example-customer.yml" "$TARGET_DIR/"
+
+echo "Cleaning up temporary directory..."
+rm -rf "$WORKDIR"
+
+echo "Done. Selected assets for $RELEASE are in $TARGET_DIR"
diff --git a/static/downloads/clustered-release-artifacts/20230922-650371/app-instance-schema.json b/static/downloads/clustered-release-artifacts/20230922-650371/app-instance-schema.json
new file mode 100644
index 000000000..224b46090
--- /dev/null
+++ b/static/downloads/clustered-release-artifacts/20230922-650371/app-instance-schema.json
@@ -0,0 +1,986 @@
+{
+ "additionalProperties": false,
+ "properties": {
+ "apiVersion": {
+ "type": "string"
+ },
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "type": "object"
+ },
+ "spec": {
+ "additionalProperties": false,
+ "properties": {
+ "imagePullSecrets": {
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "package": {
+ "properties": {
+ "apiVersion": {
+ "type": "string"
+ },
+ "image": {
+ "type": "string"
+ },
+ "spec": {
+ "additionalProperties": false,
+ "properties": {
+ "admin": {
+ "additionalProperties": false,
+ "properties": {
+ "dsn": {
+ "additionalProperties": false,
+ "description": "The dsn for the postgres compatible database",
+ "properties": {
+ "value": {
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "identityProvider": {
+ "description": "The identity provider to be used e.g. \"keycloak\", \"auth0\", \"azure\"",
+ "type": "string"
+ },
+ "internalSigningKey": {
+ "description": "Internal JWT secrets",
+ "properties": {
+ "id": {
+ "additionalProperties": false,
+ "description": "random ID that uniquely identifies this keypair. Generally a UUID.",
+ "properties": {
+ "value": {
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "privateKey": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "publicKey": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "id",
+ "privateKey",
+ "publicKey"
+ ],
+ "type": "object"
+ },
+ "jwksEndpoint": {
+ "type": "string"
+ },
+ "users": {
+ "description": "The list of users to grant access to Clusterted via influxctl",
+ "item": {
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "users",
+ "dsn",
+ "identityProvider",
+ "jwksEndpoint"
+ ],
+ "type": "object"
+ },
+ "catalog": {
+ "additionalProperties": false,
+ "properties": {
+ "dsn": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "egress": {
+ "additionalProperties": false,
+ "properties": {
+ "customCertificates": {
+ "additionalProperties": false,
+ "description": "Custom certificate or CA Bundle. Used to verify outbound connections performed by influxdb, such as OIDC servers,\npostgres databases, or object store API endpoints.\n\nEquivalent to the SSL_CERT_FILE env var used by OpenSSL.\n",
+ "properties": {
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "featureFlags": {
+ "description": "An array of feature flag names. Feature flags (aka feature gates) control features that\nhave not yet been releases. They can be experimental to various degree (alpha, beta, rc),\nplease refer to the feature flag documentation.\n",
+ "type": "array"
+ },
+ "images": {
+ "properties": {
+ "overrides": {
+ "item": {
+ "description": "remaps an image matching naming predicates\n",
+ "properties": {
+ "name": {
+ "description": "naming predicate: the part of the image name that comes after the registry name, e.g.\nIf the image name is \"oci.influxdata.com/foo/bar:1234\", the name field matches \"foo/bar\"\n",
+ "type": "string"
+ },
+ "newFQIN": {
+ "description": "rewrite expression: when a naming predicate matches this image, rewrite the image reference\nusing this Fully Qualified Image Name. i.e. this replaces the whole registry/imagename:tag@digest\nparts of the input image reference.\n",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "registryOverride": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ingesterStorage": {
+ "additionalProperties": false,
+ "properties": {
+ "storage": {
+ "type": "string"
+ },
+ "storageClassName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "required": [
+ "storage"
+ ],
+ "type": "object"
+ },
+ "ingress": {
+ "additionalProperties": false,
+ "properties": {
+ "grpc": {
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "hosts": {
+ "minItems": 1,
+ "type": "array"
+ },
+ "http": {
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tlsSecretName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "monitoringStorage": {
+ "additionalProperties": false,
+ "properties": {
+ "storage": {
+ "type": "string"
+ },
+ "storageClassName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "required": [
+ "storage"
+ ],
+ "type": "object"
+ },
+ "objectStore": {
+ "additionalProperties": false,
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "allowHttp": {
+ "type": "string"
+ },
+ "bucket": {
+ "type": "string"
+ },
+ "endpoint": {
+ "default": "",
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "secretKey": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "bucket"
+ ],
+ "type": "object"
+ },
+ "resources": {
+ "additionalProperties": false,
+ "properties": {
+ "compactor": {
+ "additionalProperties": false,
+ "properties": {
+ "requests": {
+ "additionalProperties": false,
+ "properties": {
+ "cpu": {
+ "default": "100m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "100Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ingester": {
+ "additionalProperties": false,
+ "properties": {
+ "requests": {
+ "additionalProperties": false,
+ "properties": {
+ "cpu": {
+ "default": "100m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "100Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 3,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "querier": {
+ "additionalProperties": false,
+ "properties": {
+ "requests": {
+ "additionalProperties": false,
+ "properties": {
+ "cpu": {
+ "default": "100m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "100Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "router": {
+ "additionalProperties": false,
+ "properties": {
+ "requests": {
+ "additionalProperties": false,
+ "properties": {
+ "cpu": {
+ "default": "100m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "100Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 3,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "catalog",
+ "objectStore",
+ "ingesterStorage",
+ "admin",
+ "monitoringStorage"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "image",
+ "apiVersion"
+ ],
+ "type": "object"
+ },
+ "pause": {
+ "default": false,
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "status": {
+ "additionalProperties": true,
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
+
diff --git a/static/downloads/clustered-release-artifacts/20230922-650371/example-customer.yml b/static/downloads/clustered-release-artifacts/20230922-650371/example-customer.yml
new file mode 100644
index 000000000..bee20a3b4
--- /dev/null
+++ b/static/downloads/clustered-release-artifacts/20230922-650371/example-customer.yml
@@ -0,0 +1,180 @@
+# yaml-language-server: $schema=app-instance-schema.json
+apiVersion: kubecfg.dev/v1alpha1
+kind: AppInstance
+metadata:
+ name: influxdb
+ namespace: influxdb
+spec:
+ # One or more secrets that are used to pull the images from an authenticated registry.
+ # This will either be the secret provided to you, if using our registry, or a secret for your own registry
+ # if self-hosting the images.
+ imagePullSecrets:
+ - name:
+ package:
+ # The version of the clustered package that will be used.
+ # This determines the version of all of the individual components.
+ # When a new version of the product is released, this version should be updated and any
+ # new config options should be updated below.
+ image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20230922-650371
+ apiVersion: influxdata.com/v1alpha1
+ spec:
+ catalog:
+ # A postgresql style DSN that points at a postgresql compatible database.
+ # eg: postgres://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]
+ dsn:
+ valueFrom:
+ secretKeyRef:
+ name:
+ key:
+
+ # images:
+ # # This can be used to override a specific image for testing. eg.
+ # overrides:
+ # name: influxdb2-artifacts/iox/iox
+ # newFQIN: mycompany/test-iox-build:aninformativetag
+ #
+ # # Set this variable to the prefix of your internal registry. This will be prefixed to all expected images.
+ # # eg. us-docker.pkg.dev/iox:latest => registry.mycompany.io/us-docker.pkg.dev/iox:latest
+ # registryOverride:
+
+ objectStore:
+ # URL for S3 Compatible object store
+ endpoint:
+
+ # Set to true to allow communication over HTTP (instead of HTTPS)
+ allowHttp: "false"
+
+ # S3 Access Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ accessKey:
+ value:
+
+ # S3 Secret Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ secretKey:
+ value:
+
+ # Bucket that the parquet files will be stored in
+ bucket:
+
+ # This value is required for AWS S3, it may or may not be required for other providers.
+ region:
+
+ # Ingester pods have a volume attached.
+ ingesterStorage:
+ # (Optional) Set the storage class. This will differ based on the K8s environment and desired storage characteristics.
+ # If not set, the default storage class will be used.
+ # storageClassName:
+ # Set the storage size (minimum 2Gi recommended)
+ storage:
+
+ # Monitoring pods have a volume attached.
+ monitoringStorage:
+ # (Optional) Set the storage class. This will differ based on the K8s environment and desired storage characteristics.
+ # If not set, the default storage class will be used.
+ # storageClassName:
+ # Set the storage size (minimum 1Gi recommended)
+ storage:
+
+ # Uncomment the follow block if using our provided Ingress.
+ #
+ # We currently only support the ingress NGINX ingress controller: https://github.com/kubernetes/ingress-nginx
+ #
+ # ingress:
+ # hosts:
+ # # This is the host on which you will access Influxdb 3.0, for both reads and writes
+ # -
+
+ # # A TLS cert is required to exist in the same namespace as the ingress.
+ # tlsSecretName:
+
+ # http:
+ # # Usually you have only one ingress controller installed in a given cluster.
+ # # In case you have more than one, you have to specify the "class name" of the ingress controller you want to use
+ # className: nginx
+
+ # grpc:
+ # # Usually you have only one ingress controller installed in a given cluster.
+ # # In case you have more than one, you have to specify the "class name" of the ingress controller you want to use
+ # className: nginx
+
+ # Uncomment the following block to tune the various pods for their cpu/memory/replicas based on workload needs.
+ # Only uncomment the specific resources you want to change, anything uncommented will use the package default.
+ # resources:
+ # # The ingester handles data being written
+ # ingester:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # The default for ingesters is 3 to increase availability
+
+ # # The compactor reorganizes old data to improve query and storage efficiency.
+ # compactor:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ # # The querier handles querying data.
+ # querier:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ # # The router performs some api routing.
+ # router:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ admin:
+ # The list of users to grant access to Clustered via influxctl
+ users:
+ # First name of user
+ - firstName:
+ # Last name of user
+ lastName:
+ # Email of user
+ email:
+ # The ID that the configured Identity Provider uses for the user in oauth flows
+ id:
+
+ # The dsn for the postgres compatible database (note this is the same as defined above)
+ dsn:
+ valueFrom:
+ secretKeyRef:
+ name:
+ key:
+ # The identity provider to be used e.g. "keycloak", "auth0", "azure", etc
+ # Note for Azure Active Directory it must be exactly "azure"
+ identityProvider:
+ # The JWKS endpoint provided by the Identity Provider
+ jwksEndpoint:
+
+ # # This (optional) section controls how InfluxDB issues outbound requests to other services
+ # egress:
+ # # If you're using a custom CA you will need to specify the full custom CA bundle here.
+ # #
+ # # NOTE: the custom CA is currently only honoured for outbound requests used to obtain
+ # # the JWT public keys from your identiy provider (see `jwksEndpoint`).
+ # customCertificates:
+ # valueFrom:
+ # configMapKeyRef:
+ # key: ca.pem
+ # name: custom-ca
+
+ # We also include the ability to enable some features that are not yet ready for general availability
+ # or for which we don't yet have a proper place to turn on an optional feature in the configuration file.
+ # To turn on these you should include the name of the feature flag in the `featureFlag` array.
+ #
+ # featureFlags:
+ # # Uncomment to install a Grafana deployment with some recommended dashboards.
+ # # Depends on one of the prometheus features being deployed.
+ # # - grafana
+
+ # # The following 2 flags should be uncommented for k8s API 1.21 support.
+ # # Note that this is an experimental configuration.
+ # # - noMinReadySeconds
+ # # - noGrpcProbes
diff --git a/static/downloads/clustered-release-artifacts/20231004-666907/app-instance-schema.json b/static/downloads/clustered-release-artifacts/20231004-666907/app-instance-schema.json
new file mode 100644
index 000000000..b883a168b
--- /dev/null
+++ b/static/downloads/clustered-release-artifacts/20231004-666907/app-instance-schema.json
@@ -0,0 +1,1054 @@
+{
+ "additionalProperties": false,
+ "properties": {
+ "apiVersion": {
+ "type": "string"
+ },
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "type": "object"
+ },
+ "spec": {
+ "additionalProperties": false,
+ "properties": {
+ "imagePullSecrets": {
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "package": {
+ "properties": {
+ "apiVersion": {
+ "type": "string"
+ },
+ "image": {
+ "type": "string"
+ },
+ "spec": {
+ "additionalProperties": false,
+ "properties": {
+ "admin": {
+ "additionalProperties": false,
+ "properties": {
+ "dsn": {
+ "additionalProperties": false,
+ "description": "The dsn for the postgres compatible database",
+ "properties": {
+ "value": {
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "identityProvider": {
+ "description": "The identity provider to be used e.g. \"keycloak\", \"auth0\", \"azure\"",
+ "type": "string"
+ },
+ "internalSigningKey": {
+ "description": "Internal JWT secrets",
+ "properties": {
+ "id": {
+ "additionalProperties": false,
+ "description": "random ID that uniquely identifies this keypair. Generally a UUID.",
+ "properties": {
+ "value": {
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "privateKey": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "publicKey": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "id",
+ "privateKey",
+ "publicKey"
+ ],
+ "type": "object"
+ },
+ "jwksEndpoint": {
+ "type": "string"
+ },
+ "users": {
+ "description": "The list of users to grant access to Clusterted via influxctl",
+ "item": {
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "users",
+ "dsn",
+ "identityProvider",
+ "jwksEndpoint"
+ ],
+ "type": "object"
+ },
+ "catalog": {
+ "additionalProperties": false,
+ "properties": {
+ "dsn": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "egress": {
+ "additionalProperties": false,
+ "properties": {
+ "customCertificates": {
+ "additionalProperties": false,
+ "description": "Custom certificate or CA Bundle. Used to verify outbound connections performed by influxdb, such as OIDC servers,\npostgres databases, or object store API endpoints.\n\nEquivalent to the SSL_CERT_FILE env var used by OpenSSL.\n",
+ "properties": {
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "featureFlags": {
+ "description": "An array of feature flag names. Feature flags (aka feature gates) control features that\nhave not yet been releases. They can be experimental to various degree (alpha, beta, rc),\nplease refer to the feature flag documentation.\n",
+ "type": "array"
+ },
+ "images": {
+ "properties": {
+ "overrides": {
+ "item": {
+ "description": "remaps an image matching naming predicates\n",
+ "properties": {
+ "name": {
+ "description": "naming predicate: the part of the image name that comes after the registry name, e.g.\nIf the image name is \"oci.influxdata.com/foo/bar:1234\", the name field matches \"foo/bar\"\n",
+ "type": "string"
+ },
+ "newFQIN": {
+ "description": "rewrite expression: when a naming predicate matches this image, rewrite the image reference\nusing this Fully Qualified Image Name. i.e. this replaces the whole registry/imagename:tag@digest\nparts of the input image reference.\n",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "registryOverride": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ingesterStorage": {
+ "additionalProperties": false,
+ "properties": {
+ "storage": {
+ "type": "string"
+ },
+ "storageClassName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "required": [
+ "storage"
+ ],
+ "type": "object"
+ },
+ "ingress": {
+ "additionalProperties": false,
+ "properties": {
+ "grpc": {
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "hosts": {
+ "minItems": 1,
+ "type": "array"
+ },
+ "http": {
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tlsSecretName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "monitoringStorage": {
+ "additionalProperties": false,
+ "properties": {
+ "storage": {
+ "type": "string"
+ },
+ "storageClassName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "required": [
+ "storage"
+ ],
+ "type": "object"
+ },
+ "objectStore": {
+ "additionalProperties": false,
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "allowHttp": {
+ "type": "string"
+ },
+ "bucket": {
+ "type": "string"
+ },
+ "endpoint": {
+ "default": "",
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "secretKey": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "bucket"
+ ],
+ "type": "object"
+ },
+ "resources": {
+ "additionalProperties": false,
+ "properties": {
+ "compactor": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": null,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "100m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "100Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ingester": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": null,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "100m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "100Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 3,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "querier": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": null,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "100m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "100Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "router": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": null,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "100m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "100Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 3,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "catalog",
+ "objectStore",
+ "ingesterStorage",
+ "admin",
+ "monitoringStorage"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "image",
+ "apiVersion"
+ ],
+ "type": "object"
+ },
+ "pause": {
+ "default": false,
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "status": {
+ "additionalProperties": true,
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
+
diff --git a/static/downloads/clustered-release-artifacts/20231004-666907/example-customer.yml b/static/downloads/clustered-release-artifacts/20231004-666907/example-customer.yml
new file mode 100644
index 000000000..4276140a4
--- /dev/null
+++ b/static/downloads/clustered-release-artifacts/20231004-666907/example-customer.yml
@@ -0,0 +1,189 @@
+# yaml-language-server: $schema=app-instance-schema.json
+apiVersion: kubecfg.dev/v1alpha1
+kind: AppInstance
+metadata:
+ name: influxdb
+ namespace: influxdb
+spec:
+ # One or more secrets that are used to pull the images from an authenticated registry.
+ # This will either be the secret provided to you, if using our registry, or a secret for your own registry
+ # if self-hosting the images.
+ imagePullSecrets:
+ - name:
+ package:
+ # The version of the clustered package that will be used.
+ # This determines the version of all of the individual components.
+ # When a new version of the product is released, this version should be updated and any
+ # new config options should be updated below.
+ image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20231004-666907
+ apiVersion: influxdata.com/v1alpha1
+ spec:
+ catalog:
+ # A postgresql style DSN that points at a postgresql compatible database.
+ # eg: postgres://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]
+ dsn:
+ valueFrom:
+ secretKeyRef:
+ name:
+ key:
+
+ # images:
+ # # This can be used to override a specific image name with its FQIN
+ # # (Fully Qualified Image Name) for testing. eg.
+ # overrides:
+ # - name: influxdb2-artifacts/iox/iox
+ # newFQIN: mycompany/test-iox-build:aninformativetag
+ #
+ # # Set this variable to the prefix of your internal registry. This will be prefixed to all expected images.
+ # # eg. us-docker.pkg.dev/iox:latest => registry.mycompany.io/us-docker.pkg.dev/iox:latest
+ # registryOverride:
+
+ objectStore:
+ # URL for S3 Compatible object store
+ endpoint:
+
+ # Set to true to allow communication over HTTP (instead of HTTPS)
+ allowHttp: "false"
+
+ # S3 Access Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ accessKey:
+ value:
+
+ # S3 Secret Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ secretKey:
+ value:
+
+ # Bucket that the parquet files will be stored in
+ bucket:
+
+ # This value is required for AWS S3, it may or may not be required for other providers.
+ region:
+
+ # Ingester pods have a volume attached.
+ ingesterStorage:
+ # (Optional) Set the storage class. This will differ based on the K8s environment and desired storage characteristics.
+ # If not set, the default storage class will be used.
+ # storageClassName:
+ # Set the storage size (minimum 2Gi recommended)
+ storage:
+
+ # Monitoring pods have a volume attached.
+ monitoringStorage:
+ # (Optional) Set the storage class. This will differ based on the K8s environment and desired storage characteristics.
+ # If not set, the default storage class will be used.
+ # storageClassName:
+ # Set the storage size (minimum 1Gi recommended)
+ storage:
+
+ # Uncomment the follow block if using our provided Ingress.
+ #
+ # We currently only support the ingress NGINX ingress controller: https://github.com/kubernetes/ingress-nginx
+ #
+ # ingress:
+ # hosts:
+ # # This is the host on which you will access Influxdb 3.0, for both reads and writes
+ # -
+
+ # # A TLS cert is required to exist in the same namespace as the ingress.
+ # tlsSecretName:
+
+ # http:
+ # # Usually you have only one ingress controller installed in a given cluster.
+ # # In case you have more than one, you have to specify the "class name" of the ingress controller you want to use
+ # className: nginx
+
+ # grpc:
+ # # Usually you have only one ingress controller installed in a given cluster.
+ # # In case you have more than one, you have to specify the "class name" of the ingress controller you want to use
+ # className: nginx
+
+ # Uncomment the following block to tune the various pods for their cpu/memory/replicas based on workload needs.
+ # Only uncomment the specific resources you want to change, anything uncommented will use the package default.
+ # (You can read more about k8s resources and limits in https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits)
+ #
+ # resources:
+ # # The ingester handles data being written
+ # ingester:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # The default for ingesters is 3 to increase availability
+ #
+ # # optionally you can specify the resource limits which improves isolation.
+ # # (see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits)
+ # # limits:
+ # # cpu:
+ # # memory:
+
+ # # The compactor reorganizes old data to improve query and storage efficiency.
+ # compactor:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ # # The querier handles querying data.
+ # querier:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ # # The router performs some api routing.
+ # router:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ admin:
+ # The list of users to grant access to Clustered via influxctl
+ users:
+ # First name of user
+ - firstName:
+ # Last name of user
+ lastName:
+ # Email of user
+ email:
+ # The ID that the configured Identity Provider uses for the user in oauth flows
+ id:
+
+ # The dsn for the postgres compatible database (note this is the same as defined above)
+ dsn:
+ valueFrom:
+ secretKeyRef:
+ name:
+ key:
+ # The identity provider to be used e.g. "keycloak", "auth0", "azure", etc
+ # Note for Azure Active Directory it must be exactly "azure"
+ identityProvider:
+ # The JWKS endpoint provided by the Identity Provider
+ jwksEndpoint:
+
+ # # This (optional) section controls how InfluxDB issues outbound requests to other services
+ # egress:
+ # # If you're using a custom CA you will need to specify the full custom CA bundle here.
+ # #
+ # # NOTE: the custom CA is currently only honoured for outbound requests used to obtain
+ # # the JWT public keys from your identiy provider (see `jwksEndpoint`).
+ # customCertificates:
+ # valueFrom:
+ # configMapKeyRef:
+ # key: ca.pem
+ # name: custom-ca
+
+ # We also include the ability to enable some features that are not yet ready for general availability
+ # or for which we don't yet have a proper place to turn on an optional feature in the configuration file.
+ # To turn on these you should include the name of the feature flag in the `featureFlag` array.
+ #
+ # featureFlags:
+ # # Uncomment to install a Grafana deployment with some recommended dashboards.
+ # # Depends on one of the prometheus features being deployed.
+ # # - grafana
+
+ # # The following 2 flags should be uncommented for k8s API 1.21 support.
+ # # Note that this is an experimental configuration.
+ # # - noMinReadySeconds
+ # # - noGrpcProbes
diff --git a/static/downloads/clustered-release-artifacts/20231024-711448/app-instance-schema.json b/static/downloads/clustered-release-artifacts/20231024-711448/app-instance-schema.json
new file mode 100644
index 000000000..7d07c2157
--- /dev/null
+++ b/static/downloads/clustered-release-artifacts/20231024-711448/app-instance-schema.json
@@ -0,0 +1,1581 @@
+{
+ "additionalProperties": false,
+ "properties": {
+ "apiVersion": {
+ "type": "string"
+ },
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "type": "object"
+ },
+ "spec": {
+ "additionalProperties": false,
+ "properties": {
+ "imagePullSecrets": {
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "package": {
+ "properties": {
+ "apiVersion": {
+ "type": "string"
+ },
+ "image": {
+ "type": "string"
+ },
+ "spec": {
+ "additionalProperties": false,
+ "properties": {
+ "admin": {
+ "additionalProperties": false,
+ "properties": {
+ "dsn": {
+ "additionalProperties": false,
+ "description": "The dsn for the postgres compatible database",
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "identityProvider": {
+ "description": "The identity provider to be used e.g. \"keycloak\", \"auth0\", \"azure\"",
+ "type": "string"
+ },
+ "internalSigningKey": {
+ "description": "Internal JWT secrets",
+ "properties": {
+ "id": {
+ "additionalProperties": false,
+ "description": "random ID that uniquely identifies this keypair. Generally a UUID.",
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "privateKey": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "publicKey": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "id",
+ "privateKey",
+ "publicKey"
+ ],
+ "type": "object"
+ },
+ "jwksEndpoint": {
+ "type": "string"
+ },
+ "users": {
+ "description": "The list of users to grant access to Clusterted via influxctl",
+ "item": {
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "users",
+ "dsn",
+ "identityProvider",
+ "jwksEndpoint"
+ ],
+ "type": "object"
+ },
+ "catalog": {
+ "additionalProperties": false,
+ "properties": {
+ "dsn": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "egress": {
+ "additionalProperties": false,
+ "properties": {
+ "customCertificates": {
+ "additionalProperties": false,
+ "description": "Custom certificate or CA Bundle. Used to verify outbound connections performed by influxdb, such as OIDC servers,\npostgres databases, or object store API endpoints.\n\nEquivalent to the SSL_CERT_FILE env var used by OpenSSL.\n",
+ "properties": {
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "featureFlags": {
+ "description": "An array of feature flag names. Feature flags (aka feature gates) control features that\nhave not yet been releases. They can be experimental to various degree (alpha, beta, rc),\nplease refer to the feature flag documentation.\n",
+ "type": "array"
+ },
+ "hostingEnvironment": {
+ "additionalProperties": false,
+ "description": "Environment or cloud-specific configuration elements which are utilised by InfluxDB Clustered.",
+ "properties": {
+ "aws": {
+ "additionalProperties": false,
+ "description": "AWS specific configuration values.",
+ "properties": {
+ "eksRoleArn": {
+ "default": "",
+ "description": "IAM role ARN to apply to the IOx ServiceAccount, used with EKS IRSA.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "gke": {
+ "additionalProperties": false,
+ "properties": {
+ "workloadIdentity": {
+ "additionalProperties": false,
+ "description": "Authentication via GKE workload identity. This will annotate the relevant Kubernetes ServiceAccount objects.\nSee https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity for further details.\n",
+ "properties": {
+ "serviceAccountEmail": {
+ "description": "Google IAM Service Account email, this should be in the format NAME@PROJECT_ID.iam.gserviceaccount.com",
+ "type": "string"
+ }
+ },
+ "required": [
+ "serviceAccountEmail"
+ ],
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "openshift": {
+ "additionalProperties": false,
+ "description": "OpenShift specific configuration values.",
+ "properties": { },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "images": {
+ "properties": {
+ "overrides": {
+ "item": {
+ "description": "remaps an image matching naming predicates\n",
+ "properties": {
+ "name": {
+ "description": "naming predicate: the part of the image name that comes after the registry name, e.g.\nIf the image name is \"oci.influxdata.com/foo/bar:1234\", the name field matches \"foo/bar\"\n",
+ "type": "string"
+ },
+ "newFQIN": {
+ "description": "rewrite expression: when a naming predicate matches this image, rewrite the image reference\nusing this Fully Qualified Image Name. i.e. this replaces the whole registry/imagename:tag@digest\nparts of the input image reference.\n",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "registryOverride": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ingesterStorage": {
+ "additionalProperties": false,
+ "properties": {
+ "storage": {
+ "type": "string"
+ },
+ "storageClassName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "required": [
+ "storage"
+ ],
+ "type": "object"
+ },
+ "ingress": {
+ "additionalProperties": false,
+ "properties": {
+ "grpc": {
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "hosts": {
+ "minItems": 1,
+ "type": "array"
+ },
+ "http": {
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tlsSecretName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "monitoringStorage": {
+ "additionalProperties": false,
+ "properties": {
+ "storage": {
+ "type": "string"
+ },
+ "storageClassName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "required": [
+ "storage"
+ ],
+ "type": "object"
+ },
+ "objectStore": {
+ "additionalProperties": false,
+ "description": "Configuration values for the backing object store for IOx",
+ "oneOf": [
+ {
+ "required": [
+ "bucket",
+ "region"
+ ]
+ },
+ {
+ "required": [
+ "s3",
+ "bucket"
+ ]
+ },
+ {
+ "required": [
+ "azure",
+ "bucket"
+ ]
+ },
+ {
+ "required": [
+ "google",
+ "bucket"
+ ]
+ }
+ ],
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "allowHttp": {
+ "default": "false",
+ "type": "string"
+ },
+ "azure": {
+ "additionalProperties": false,
+ "description": "Configuration which correlates directly to Azure Blob Storage.",
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "account": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "accessKey",
+ "account"
+ ],
+ "type": "object"
+ },
+ "bucket": {
+ "type": "string"
+ },
+ "endpoint": {
+ "default": "",
+ "type": "string"
+ },
+ "google": {
+ "additionalProperties": false,
+ "description": "Configuration which correlates directly to Google Cloud Storage (GCS).",
+ "properties": {
+ "serviceAccountSecret": {
+ "additionalProperties": false,
+ "description": "Authentication via Google IAM Service Account credentials file.\nSee https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform for further details.\n",
+ "properties": {
+ "mountPath": {
+ "default": "/secrets/gcp/iox.json",
+ "description": "Optional mount path for the IAM Service Account secret",
+ "type": "string"
+ },
+ "name": {
+ "description": "Kubernetes Secret name which contains the GCP IAM Service Account key file to mount into the required pods.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "region": {
+ "default": "",
+ "type": "string"
+ },
+ "s3": {
+ "additionalProperties": false,
+ "description": "Configuration for AWS S3 (compatible) object stores.",
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "allowHttp": {
+ "type": "string"
+ },
+ "endpoint": {
+ "default": "",
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "secretKey": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "region",
+ "accessKey",
+ "secretKey"
+ ],
+ "type": "object"
+ },
+ "secretKey": {
+ "additionalProperties": false,
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "resources": {
+ "additionalProperties": false,
+ "properties": {
+ "compactor": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": null,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "100m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "100Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ingester": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": null,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "100m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "100Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 3,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "querier": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": null,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "100m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "100Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "router": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": null,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "100m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "100Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 3,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "catalog",
+ "objectStore",
+ "ingesterStorage",
+ "admin",
+ "monitoringStorage"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "image",
+ "apiVersion"
+ ],
+ "type": "object"
+ },
+ "pause": {
+ "default": false,
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "status": {
+ "additionalProperties": true,
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
+
diff --git a/static/downloads/clustered-release-artifacts/20231024-711448/example-customer.yml b/static/downloads/clustered-release-artifacts/20231024-711448/example-customer.yml
new file mode 100644
index 000000000..0c34193b3
--- /dev/null
+++ b/static/downloads/clustered-release-artifacts/20231024-711448/example-customer.yml
@@ -0,0 +1,238 @@
+# yaml-language-server: $schema=app-instance-schema.json
+apiVersion: kubecfg.dev/v1alpha1
+kind: AppInstance
+metadata:
+ name: influxdb
+ namespace: influxdb
+spec:
+ # One or more secrets that are used to pull the images from an authenticated registry.
+ # This will either be the secret provided to you, if using our registry, or a secret for your own registry
+ # if self-hosting the images.
+ imagePullSecrets:
+ - name:
+ package:
+ # The version of the clustered package that will be used.
+ # This determines the version of all of the individual components.
+ # When a new version of the product is released, this version should be updated and any
+ # new config options should be updated below.
+ image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20231024-711448
+ apiVersion: influxdata.com/v1alpha1
+ spec:
+
+ # Provides a way to pass down hosting environment specific configuration, such as an role ARN when using EKS IRSA.
+ # hostingEnvironment:
+ # aws:
+ # eksRoleArn: 'arn:aws:iam::111111111111:role/your-influxdb-clustered-role'
+ #
+ # A blank openshift object should be used to specify that changes should be made which cater to OpenShift.
+ # openshift: {}
+ #
+ # gke:
+ # Authenticate to Google Cloud services via workload identity, this
+ # annotates the 'iox' ServiceAccount with the role name you specify.
+ # NOTE: This requires a blank `objectStore.google` block in your
+ # configuration to ensure that InfluxDB knows which Google auth mode to run.
+ # workloadIdentity:
+ #
+ # Google Service Account name to use for the workload identity.
+ # accountName:
+ #
+ # Your Google Cloud Platform project ID.
+ # projectId:
+ catalog:
+ # A postgresql style DSN that points at a postgresql compatible database.
+ # eg: postgres://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]
+ dsn:
+ valueFrom:
+ secretKeyRef:
+ name:
+ key:
+
+ # images:
+ # # This can be used to override a specific image name with its FQIN
+ # # (Fully Qualified Image Name) for testing. eg.
+ # overrides:
+ # - name: influxdb2-artifacts/iox/iox
+ # newFQIN: mycompany/test-iox-build:aninformativetag
+ #
+ # # Set this variable to the prefix of your internal registry. This will be prefixed to all expected images.
+ # # eg. us-docker.pkg.dev/iox:latest => registry.mycompany.io/us-docker.pkg.dev/iox:latest
+ # registryOverride:
+
+ objectStore:
+ # Bucket that the parquet files will be stored in
+ bucket:
+
+ # Uncomment one of the following (s3, azure)
+ # to enable the configuration of your object store
+ s3:
+ # URL for S3 Compatible object store
+ endpoint:
+
+ # Set to true to allow communication over HTTP (instead of HTTPS)
+ allowHttp: "false"
+
+ # S3 Access Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ accessKey:
+ value:
+
+ # S3 Secret Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ secretKey:
+ value:
+
+ # This value is required for AWS S3, it may or may not be required for other providers.
+ region:
+
+ # azure:
+ # Azure Blob Storage Access Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ # accessKey:
+ # value:
+
+ # Azure Blob Storage Account
+ # This can also be provided as a valueFrom: secretKeyRef:
+ # account:
+ # value:
+
+ # google:
+ # Authenticate to Google Cloud services using a Service Account credentials file.
+ # You must create a Kubernetes Secret containing the appropriate value and provide
+ # its name here.
+ # serviceAccountSecret:
+ #
+ # Kubernetes Secret name containing the credentials for a
+ # Google IAM Service Account.
+ # name:
+ #
+ # Optional: A specific volume mount path to place your Secret within
+ # the InfluxDB pods.
+ # mountPath:
+
+ # Ingester pods have a volume attached.
+ ingesterStorage:
+ # (Optional) Set the storage class. This will differ based on the K8s environment and desired storage characteristics.
+ # If not set, the default storage class will be used.
+ # storageClassName:
+ # Set the storage size (minimum 2Gi recommended)
+ storage:
+
+ # Monitoring pods have a volume attached.
+ monitoringStorage:
+ # (Optional) Set the storage class. This will differ based on the K8s environment and desired storage characteristics.
+ # If not set, the default storage class will be used.
+ # storageClassName:
+ # Set the storage size (minimum 1Gi recommended)
+ storage:
+
+ # Uncomment the follow block if using our provided Ingress.
+ #
+ # We currently only support the ingress NGINX ingress controller: https://github.com/kubernetes/ingress-nginx
+ #
+ # ingress:
+ # hosts:
+ # # This is the host on which you will access Influxdb 3.0, for both reads and writes
+ # -
+
+ # # A TLS cert is required to exist in the same namespace as the ingress.
+ # tlsSecretName:
+
+ # http:
+ # # Usually you have only one ingress controller installed in a given cluster.
+ # # In case you have more than one, you have to specify the "class name" of the ingress controller you want to use
+ # className: nginx
+
+ # grpc:
+ # # Usually you have only one ingress controller installed in a given cluster.
+ # # In case you have more than one, you have to specify the "class name" of the ingress controller you want to use
+ # className: nginx
+
+ # Uncomment the following block to tune the various pods for their cpu/memory/replicas based on workload needs.
+ # Only uncomment the specific resources you want to change, anything uncommented will use the package default.
+ # (You can read more about k8s resources and limits in https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits)
+ #
+ # resources:
+ # # The ingester handles data being written
+ # ingester:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # The default for ingesters is 3 to increase availability
+ #
+ # # optionally you can specify the resource limits which improves isolation.
+ # # (see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits)
+ # # limits:
+ # # cpu:
+ # # memory:
+
+ # # The compactor reorganizes old data to improve query and storage efficiency.
+ # compactor:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ # # The querier handles querying data.
+ # querier:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ # # The router performs some api routing.
+ # router:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ admin:
+ # The list of users to grant access to Clustered via influxctl
+ users:
+ # First name of user
+ - firstName:
+ # Last name of user
+ lastName:
+ # Email of user
+ email:
+ # The ID that the configured Identity Provider uses for the user in oauth flows
+ id:
+
+ # The dsn for the postgres compatible database (note this is the same as defined above)
+ dsn:
+ valueFrom:
+ secretKeyRef:
+ name:
+ key:
+ # The identity provider to be used e.g. "keycloak", "auth0", "azure", etc
+ # Note for Azure Active Directory it must be exactly "azure"
+ identityProvider:
+ # The JWKS endpoint provided by the Identity Provider
+ jwksEndpoint:
+
+ # # This (optional) section controls how InfluxDB issues outbound requests to other services
+ # egress:
+ # # If you're using a custom CA you will need to specify the full custom CA bundle here.
+ # #
+ # # NOTE: the custom CA is currently only honoured for outbound requests used to obtain
+ # # the JWT public keys from your identiy provider (see `jwksEndpoint`).
+ # customCertificates:
+ # valueFrom:
+ # configMapKeyRef:
+ # key: ca.pem
+ # name: custom-ca
+
+ # We also include the ability to enable some features that are not yet ready for general availability
+ # or for which we don't yet have a proper place to turn on an optional feature in the configuration file.
+ # To turn on these you should include the name of the feature flag in the `featureFlag` array.
+ #
+ # featureFlags:
+ # # Uncomment to install a Grafana deployment with some recommended dashboards.
+ # # Depends on one of the prometheus features being deployed.
+ # # - grafana
+
+ # # The following 2 flags should be uncommented for k8s API 1.21 support.
+ # # Note that this is an experimental configuration.
+ # # - noMinReadySeconds
+ # # - noGrpcProbes
diff --git a/static/downloads/clustered-release-artifacts/20231115-746129/app-instance-schema.json b/static/downloads/clustered-release-artifacts/20231115-746129/app-instance-schema.json
new file mode 100644
index 000000000..2b9248ba8
--- /dev/null
+++ b/static/downloads/clustered-release-artifacts/20231115-746129/app-instance-schema.json
@@ -0,0 +1,2085 @@
+{
+ "additionalProperties": false,
+ "properties": {
+ "apiVersion": {
+ "type": "string"
+ },
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "type": "object"
+ },
+ "spec": {
+ "additionalProperties": false,
+ "properties": {
+ "imagePullSecrets": {
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "package": {
+ "properties": {
+ "apiVersion": {
+ "type": "string"
+ },
+ "image": {
+ "type": "string"
+ },
+ "spec": {
+ "additionalProperties": false,
+ "properties": {
+ "admin": {
+ "additionalProperties": false,
+ "properties": {
+ "dsn": {
+ "additionalProperties": false,
+ "description": "The dsn for the postgres compatible database",
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "identityProvider": {
+ "description": "The identity provider to be used e.g. \"keycloak\", \"auth0\", \"azure\"",
+ "type": "string"
+ },
+ "internalSigningKey": {
+ "description": "Internal JWT secrets",
+ "properties": {
+ "id": {
+ "additionalProperties": false,
+ "description": "random ID that uniquely identifies this keypair. Generally a UUID.",
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "privateKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "publicKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "id",
+ "privateKey",
+ "publicKey"
+ ],
+ "type": "object"
+ },
+ "jwksEndpoint": {
+ "type": "string"
+ },
+ "users": {
+ "description": "The list of users to grant access to Clusterted via influxctl",
+ "item": {
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "users",
+ "dsn",
+ "identityProvider",
+ "jwksEndpoint"
+ ],
+ "type": "object"
+ },
+ "catalog": {
+ "additionalProperties": false,
+ "properties": {
+ "dsn": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "components": {
+ "additionalProperties": false,
+ "properties": {
+ "compactor": {
+ "additionalProperties": false,
+ "properties": {
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ingester": {
+ "additionalProperties": false,
+ "properties": {
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "querier": {
+ "additionalProperties": false,
+ "properties": {
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "router": {
+ "additionalProperties": false,
+ "properties": {
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "egress": {
+ "additionalProperties": false,
+ "properties": {
+ "customCertificates": {
+ "additionalProperties": false,
+ "description": "Custom certificate or CA Bundle. Used to verify outbound connections performed by influxdb, such as OIDC servers,\npostgres databases, or object store API endpoints.\n\nEquivalent to the SSL_CERT_FILE env var used by OpenSSL.\n",
+ "examples": [
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "featureFlags": {
+ "description": "An array of feature flag names. Feature flags (aka feature gates) control features that\nhave not yet been releases. They can be experimental to various degree (alpha, beta, rc),\nplease refer to the feature flag documentation.\n",
+ "type": "array"
+ },
+ "hostingEnvironment": {
+ "additionalProperties": false,
+ "description": "Environment or cloud-specific configuration elements which are utilised by InfluxDB Clustered.",
+ "properties": {
+ "aws": {
+ "additionalProperties": false,
+ "description": "AWS specific configuration values.",
+ "properties": {
+ "eksRoleArn": {
+ "default": "",
+ "description": "IAM role ARN to apply to the IOx ServiceAccount, used with EKS IRSA.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "gke": {
+ "additionalProperties": false,
+ "properties": {
+ "workloadIdentity": {
+ "additionalProperties": false,
+ "description": "Authentication via GKE workload identity. This will annotate the relevant Kubernetes ServiceAccount objects.\nSee https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity for further details.\n",
+ "properties": {
+ "serviceAccountEmail": {
+ "description": "Google IAM Service Account email, this should be in the format NAME@PROJECT_ID.iam.gserviceaccount.com",
+ "type": "string"
+ }
+ },
+ "required": [
+ "serviceAccountEmail"
+ ],
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "openshift": {
+ "additionalProperties": false,
+ "description": "OpenShift specific configuration values.",
+ "properties": { },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "images": {
+ "properties": {
+ "overrides": {
+ "item": {
+ "description": "remaps an image matching naming predicates\n",
+ "properties": {
+ "name": {
+ "description": "naming predicate: the part of the image name that comes after the registry name, e.g.\nIf the image name is \"oci.influxdata.com/foo/bar:1234\", the name field matches \"foo/bar\"\n",
+ "type": "string"
+ },
+ "newFQIN": {
+ "description": "rewrite expression: when a naming predicate matches this image, rewrite the image reference\nusing this Fully Qualified Image Name. i.e. this replaces the whole registry/imagename:tag@digest\nparts of the input image reference.\n",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "registryOverride": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ingesterStorage": {
+ "additionalProperties": false,
+ "properties": {
+ "storage": {
+ "type": "string"
+ },
+ "storageClassName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "required": [
+ "storage"
+ ],
+ "type": "object"
+ },
+ "ingress": {
+ "additionalProperties": false,
+ "properties": {
+ "grpc": {
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "hosts": {
+ "minItems": 1,
+ "type": "array"
+ },
+ "http": {
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "description": "Template to apply across configured Ingress-type resources.\nThis allows you to specify a range of third party annotations onto the created Ingress objects and/or\nalter the kind of Ingress you would like to use, e.g. 'Route'.\n",
+ "properties": {
+ "apiVersion": {
+ "default": "networking.k8s.io/v1",
+ "enum": [
+ "networking.k8s.io/v1",
+ "route.openshift.io/v1"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "default": "Ingress",
+ "enum": [
+ "Ingress",
+ "Route"
+ ],
+ "type": "string"
+ },
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "annotations": {
+ "default": { },
+ "description": "Annotations to place onto the objects which enable ingress.",
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "tlsSecretName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "monitoringStorage": {
+ "additionalProperties": false,
+ "properties": {
+ "storage": {
+ "type": "string"
+ },
+ "storageClassName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "required": [
+ "storage"
+ ],
+ "type": "object"
+ },
+ "objectStore": {
+ "additionalProperties": false,
+ "description": "Configuration values for the backing object store for IOx",
+ "oneOf": [
+ {
+ "required": [
+ "bucket",
+ "region"
+ ]
+ },
+ {
+ "required": [
+ "s3",
+ "bucket"
+ ]
+ },
+ {
+ "required": [
+ "azure",
+ "bucket"
+ ]
+ },
+ {
+ "required": [
+ "google",
+ "bucket"
+ ]
+ }
+ ],
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "allowHttp": {
+ "default": "false",
+ "type": "string"
+ },
+ "azure": {
+ "additionalProperties": false,
+ "description": "Configuration which correlates directly to Azure Blob Storage.",
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "account": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "accessKey",
+ "account"
+ ],
+ "type": "object"
+ },
+ "bucket": {
+ "type": "string"
+ },
+ "endpoint": {
+ "default": "",
+ "type": "string"
+ },
+ "google": {
+ "additionalProperties": false,
+ "description": "Configuration which correlates directly to Google Cloud Storage (GCS).",
+ "properties": {
+ "serviceAccountSecret": {
+ "additionalProperties": false,
+ "description": "Authentication via Google IAM Service Account credentials file using a Kubernetes Secret name and key.\nSee https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform for further details.\n",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "region": {
+ "default": "",
+ "type": "string"
+ },
+ "s3": {
+ "additionalProperties": false,
+ "description": "Configuration for AWS S3 (compatible) object stores.",
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "allowHttp": {
+ "type": "string"
+ },
+ "endpoint": {
+ "default": "",
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "secretKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "region"
+ ],
+ "type": "object"
+ },
+ "secretKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "resources": {
+ "additionalProperties": false,
+ "properties": {
+ "compactor": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "1",
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ingester": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": "1Gi",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "1",
+ "type": "string"
+ },
+ "memory": {
+ "default": "1Gi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 3,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "querier": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "memory": {
+ "default": "512Mi"
+ },
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": null,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "250m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "router": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "250m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 3,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "catalog",
+ "objectStore",
+ "ingesterStorage",
+ "admin",
+ "monitoringStorage"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "image",
+ "apiVersion"
+ ],
+ "type": "object"
+ },
+ "pause": {
+ "default": false,
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "status": {
+ "additionalProperties": true,
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
+
diff --git a/static/downloads/clustered-release-artifacts/20231115-746129/example-customer.yml b/static/downloads/clustered-release-artifacts/20231115-746129/example-customer.yml
new file mode 100644
index 000000000..e0d91e596
--- /dev/null
+++ b/static/downloads/clustered-release-artifacts/20231115-746129/example-customer.yml
@@ -0,0 +1,254 @@
+# yaml-language-server: $schema=app-instance-schema.json
+apiVersion: kubecfg.dev/v1alpha1
+kind: AppInstance
+metadata:
+ name: influxdb
+ namespace: influxdb
+spec:
+ # One or more secrets that are used to pull the images from an authenticated registry.
+ # This will either be the secret provided to you, if using our registry, or a secret for your own registry
+ # if self-hosting the images.
+ imagePullSecrets:
+ - name:
+ package:
+ # The version of the clustered package that will be used.
+ # This determines the version of all of the individual components.
+ # When a new version of the product is released, this version should be updated and any
+ # new config options should be updated below.
+ image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20231115-746129
+ apiVersion: influxdata.com/v1alpha1
+ spec:
+ # Provides a way to pass down hosting environment specific configuration, such as an role ARN when using EKS IRSA.
+ # hostingEnvironment:
+ # aws:
+ # eksRoleArn: 'arn:aws:iam::111111111111:role/your-influxdb-clustered-role'
+ #
+ # A blank openshift object should be used to specify that changes should be made which cater to OpenShift.
+ # openshift: {}
+ #
+ # gke:
+ # Authenticate to Google Cloud services via workload identity, this
+ # annotates the 'iox' ServiceAccount with the role name you specify.
+ # NOTE: This requires a blank `objectStore.google` block in your
+ # configuration to ensure that InfluxDB knows which Google auth mode to run.
+ # workloadIdentity:
+ #
+ # Google Service Account name to use for the workload identity.
+ # accountName:
+ #
+ # Your Google Cloud Platform project ID.
+ # projectId:
+ catalog:
+ # A postgresql style DSN that points at a postgresql compatible database.
+ # eg: postgres://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]
+ dsn:
+ valueFrom:
+ secretKeyRef:
+ name:
+ key:
+
+ # images:
+ # # This can be used to override a specific image name with its FQIN
+ # # (Fully Qualified Image Name) for testing. eg.
+ # overrides:
+ # - name: influxdb2-artifacts/iox/iox
+ # newFQIN: mycompany/test-iox-build:aninformativetag
+ #
+ # # Set this variable to the prefix of your internal registry. This will be prefixed to all expected images.
+ # # eg. us-docker.pkg.dev/iox:latest => registry.mycompany.io/us-docker.pkg.dev/iox:latest
+ # registryOverride:
+
+ objectStore:
+ # Bucket that the parquet files will be stored in
+ bucket:
+
+ # Uncomment one of the following (s3, azure)
+ # to enable the configuration of your object store
+ s3:
+ # URL for S3 Compatible object store
+ endpoint:
+
+ # Set to true to allow communication over HTTP (instead of HTTPS)
+ allowHttp: "false"
+
+ # S3 Access Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ accessKey:
+ value:
+
+ # S3 Secret Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ secretKey:
+ value:
+
+ # This value is required for AWS S3, it may or may not be required for other providers.
+ region:
+
+ # azure:
+ # Azure Blob Storage Access Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ # accessKey:
+ # value:
+
+ # Azure Blob Storage Account
+ # This can also be provided as a valueFrom: secretKeyRef:
+ # account:
+ # value:
+
+ # google:
+ # Authenticate to Google Cloud services using a Service Account credentials file.
+ # You must create a Kubernetes Secret containing the appropriate value and provide
+ # its name here.
+ # serviceAccountSecret:
+ #
+ # Kubernetes Secret name containing the credentials for a
+ # Google IAM Service Account.
+ # name:
+ #
+ # The key within the Secret containing the credentials, this
+ # will be mounted onto the relevant pods.
+ # key:
+
+ # Ingester pods have a volume attached.
+ ingesterStorage:
+ # (Optional) Set the storage class. This will differ based on the K8s environment and desired storage characteristics.
+ # If not set, the default storage class will be used.
+ # storageClassName:
+ # Set the storage size (minimum 2Gi recommended)
+ storage:
+
+ # Monitoring pods have a volume attached.
+ monitoringStorage:
+ # (Optional) Set the storage class. This will differ based on the K8s environment and desired storage characteristics.
+ # If not set, the default storage class will be used.
+ # storageClassName:
+ # Set the storage size (minimum 1Gi recommended)
+ storage:
+
+ # Uncomment the follow block if using our provided Ingress.
+ #
+ # We currently only support the ingress NGINX ingress controller: https://github.com/kubernetes/ingress-nginx
+ #
+ # ingress:
+ # hosts:
+ # # This is the host on which you will access Influxdb 3.0, for both reads and writes
+ # -
+
+ # # A TLS cert is required to exist in the same namespace as the ingress.
+ # tlsSecretName:
+
+ # http:
+ # # Usually you have only one ingress controller installed in a given cluster.
+ # # In case you have more than one, you have to specify the "class name" of the ingress controller you want to use
+ # className: nginx
+
+ # grpc:
+ # # Usually you have only one ingress controller installed in a given cluster.
+ # # In case you have more than one, you have to specify the "class name" of the ingress controller you want to use
+ # className: nginx
+ #
+ # Enables specifying which 'type' of Ingress to use, alongside whether to place additional annotations
+ # onto those objects, this is useful for third party software in your environment, such as cert-manager.
+ # template:
+ # apiVersion: 'route.openshift.io/v1'
+ # kind: 'Route'
+ # metadata:
+ # annotations:
+ # 'example-annotation': 'annotation-value'
+
+ # Enables specifying customizations for the various components in InfluxDB 3.0.
+ # currently supported values are the `nodeSelector` configuration for specifying which node Pod(s) should run on.
+ # components:
+ # router:
+ # template:
+ # nodeSelector:
+ # disktype: ssd
+
+ # Uncomment the following block to tune the various pods for their cpu/memory/replicas based on workload needs.
+ # Only uncomment the specific resources you want to change, anything uncommented will use the package default.
+ # (You can read more about k8s resources and limits in https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits)
+ #
+ # resources:
+ # # The ingester handles data being written
+ # ingester:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # The default for ingesters is 3 to increase availability
+ #
+ # # optionally you can specify the resource limits which improves isolation.
+ # # (see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits)
+ # # limits:
+ # # cpu:
+ # # memory:
+
+ # # The compactor reorganizes old data to improve query and storage efficiency.
+ # compactor:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ # # The querier handles querying data.
+ # querier:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ # # The router performs some api routing.
+ # router:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ admin:
+ # The list of users to grant access to Clustered via influxctl
+ users:
+ # First name of user
+ - firstName:
+ # Last name of user
+ lastName:
+ # Email of user
+ email:
+ # The ID that the configured Identity Provider uses for the user in oauth flows
+ id:
+
+ # The dsn for the postgres compatible database (note this is the same as defined above)
+ dsn:
+ valueFrom:
+ secretKeyRef:
+ name:
+ key:
+ # The identity provider to be used e.g. "keycloak", "auth0", "azure", etc
+ # Note for Azure Active Directory it must be exactly "azure"
+ identityProvider:
+ # The JWKS endpoint provided by the Identity Provider
+ jwksEndpoint:
+
+ # # This (optional) section controls how InfluxDB issues outbound requests to other services
+ # egress:
+ # # If you're using a custom CA you will need to specify the full custom CA bundle here.
+ # #
+ # # NOTE: the custom CA is currently only honoured for outbound requests used to obtain
+ # # the JWT public keys from your identiy provider (see `jwksEndpoint`).
+ # customCertificates:
+ # valueFrom:
+ # configMapKeyRef:
+ # key: ca.pem
+ # name: custom-ca
+
+ # We also include the ability to enable some features that are not yet ready for general availability
+ # or for which we don't yet have a proper place to turn on an optional feature in the configuration file.
+ # To turn on these you should include the name of the feature flag in the `featureFlag` array.
+ #
+ # featureFlags:
+ # # Uncomment to install a Grafana deployment with some recommended dashboards.
+ # # Depends on one of the prometheus features being deployed.
+ # # - grafana
+
+ # # The following 2 flags should be uncommented for k8s API 1.21 support.
+ # # Note that this is an experimental configuration.
+ # # - noMinReadySeconds
+ # # - noGrpcProbes
diff --git a/static/downloads/clustered-release-artifacts/20231117-750011/app-instance-schema.json b/static/downloads/clustered-release-artifacts/20231117-750011/app-instance-schema.json
new file mode 100644
index 000000000..788070bd4
--- /dev/null
+++ b/static/downloads/clustered-release-artifacts/20231117-750011/app-instance-schema.json
@@ -0,0 +1,2245 @@
+{
+ "additionalProperties": false,
+ "properties": {
+ "apiVersion": {
+ "type": "string"
+ },
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "type": "object"
+ },
+ "spec": {
+ "additionalProperties": false,
+ "properties": {
+ "imagePullSecrets": {
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "package": {
+ "properties": {
+ "apiVersion": {
+ "type": "string"
+ },
+ "image": {
+ "type": "string"
+ },
+ "spec": {
+ "additionalProperties": false,
+ "properties": {
+ "admin": {
+ "additionalProperties": false,
+ "properties": {
+ "dsn": {
+ "additionalProperties": false,
+ "description": "The dsn for the postgres compatible database",
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "identityProvider": {
+ "description": "The identity provider to be used e.g. \"keycloak\", \"auth0\", \"azure\"",
+ "type": "string"
+ },
+ "internalSigningKey": {
+ "description": "Internal JWT secrets",
+ "properties": {
+ "id": {
+ "additionalProperties": false,
+ "description": "random ID that uniquely identifies this keypair. Generally a UUID.",
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "privateKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "publicKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "id",
+ "privateKey",
+ "publicKey"
+ ],
+ "type": "object"
+ },
+ "jwksEndpoint": {
+ "type": "string"
+ },
+ "users": {
+ "description": "The list of users to grant access to Clusterted via influxctl",
+ "item": {
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "users",
+ "dsn",
+ "identityProvider",
+ "jwksEndpoint"
+ ],
+ "type": "object"
+ },
+ "catalog": {
+ "additionalProperties": false,
+ "properties": {
+ "dsn": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "components": {
+ "additionalProperties": false,
+ "properties": {
+ "compactor": {
+ "additionalProperties": false,
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "garbage-collector": {
+ "additionalProperties": false,
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ingester": {
+ "additionalProperties": false,
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "querier": {
+ "additionalProperties": false,
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "router": {
+ "additionalProperties": false,
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "egress": {
+ "additionalProperties": false,
+ "properties": {
+ "customCertificates": {
+ "additionalProperties": false,
+ "description": "Custom certificate or CA Bundle. Used to verify outbound connections performed by influxdb, such as OIDC servers,\npostgres databases, or object store API endpoints.\n\nEquivalent to the SSL_CERT_FILE env var used by OpenSSL.\n",
+ "examples": [
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "featureFlags": {
+ "description": "An array of feature flag names. Feature flags (aka feature gates) control features that\nhave not yet been releases. They can be experimental to various degree (alpha, beta, rc),\nplease refer to the feature flag documentation.\n",
+ "type": "array"
+ },
+ "hostingEnvironment": {
+ "additionalProperties": false,
+ "description": "Environment or cloud-specific configuration elements which are utilised by InfluxDB Clustered.",
+ "properties": {
+ "aws": {
+ "additionalProperties": false,
+ "description": "AWS specific configuration values.",
+ "properties": {
+ "eksRoleArn": {
+ "default": "",
+ "description": "IAM role ARN to apply to the IOx ServiceAccount, used with EKS IRSA.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "gke": {
+ "additionalProperties": false,
+ "properties": {
+ "workloadIdentity": {
+ "additionalProperties": false,
+ "description": "Authentication via GKE workload identity. This will annotate the relevant Kubernetes ServiceAccount objects.\nSee https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity for further details.\n",
+ "properties": {
+ "serviceAccountEmail": {
+ "description": "Google IAM Service Account email, this should be in the format NAME@PROJECT_ID.iam.gserviceaccount.com",
+ "type": "string"
+ }
+ },
+ "required": [
+ "serviceAccountEmail"
+ ],
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "openshift": {
+ "additionalProperties": false,
+ "description": "OpenShift specific configuration values.",
+ "properties": { },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "images": {
+ "properties": {
+ "overrides": {
+ "item": {
+ "description": "remaps an image matching naming predicates\n",
+ "properties": {
+ "name": {
+ "description": "naming predicate: the part of the image name that comes after the registry name, e.g.\nIf the image name is \"oci.influxdata.com/foo/bar:1234\", the name field matches \"foo/bar\"\n",
+ "type": "string"
+ },
+ "newFQIN": {
+ "description": "rewrite expression: when a naming predicate matches this image, rewrite the image reference\nusing this Fully Qualified Image Name. i.e. this replaces the whole registry/imagename:tag@digest\nparts of the input image reference.\n",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "registryOverride": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ingesterStorage": {
+ "additionalProperties": false,
+ "properties": {
+ "storage": {
+ "type": "string"
+ },
+ "storageClassName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "required": [
+ "storage"
+ ],
+ "type": "object"
+ },
+ "ingress": {
+ "additionalProperties": false,
+ "properties": {
+ "grpc": {
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "hosts": {
+ "minItems": 1,
+ "type": "array"
+ },
+ "http": {
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "description": "Template to apply across configured Ingress-type resources.\nThis allows you to specify a range of third party annotations onto the created Ingress objects and/or\nalter the kind of Ingress you would like to use, e.g. 'Route'.\n",
+ "properties": {
+ "apiVersion": {
+ "default": "networking.k8s.io/v1",
+ "enum": [
+ "networking.k8s.io/v1",
+ "route.openshift.io/v1"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "default": "Ingress",
+ "enum": [
+ "Ingress",
+ "Route"
+ ],
+ "type": "string"
+ },
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "annotations": {
+ "default": { },
+ "description": "Annotations to place onto the objects which enable ingress.",
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "tlsSecretName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "monitoringStorage": {
+ "additionalProperties": false,
+ "properties": {
+ "storage": {
+ "type": "string"
+ },
+ "storageClassName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "required": [
+ "storage"
+ ],
+ "type": "object"
+ },
+ "objectStore": {
+ "additionalProperties": false,
+ "description": "Configuration values for the backing object store for IOx",
+ "oneOf": [
+ {
+ "required": [
+ "bucket",
+ "region"
+ ]
+ },
+ {
+ "required": [
+ "s3",
+ "bucket"
+ ]
+ },
+ {
+ "required": [
+ "azure",
+ "bucket"
+ ]
+ },
+ {
+ "required": [
+ "google",
+ "bucket"
+ ]
+ }
+ ],
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "allowHttp": {
+ "default": "false",
+ "type": "string"
+ },
+ "azure": {
+ "additionalProperties": false,
+ "description": "Configuration which correlates directly to Azure Blob Storage.",
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "account": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "accessKey",
+ "account"
+ ],
+ "type": "object"
+ },
+ "bucket": {
+ "type": "string"
+ },
+ "endpoint": {
+ "default": "",
+ "type": "string"
+ },
+ "google": {
+ "additionalProperties": false,
+ "description": "Configuration which correlates directly to Google Cloud Storage (GCS).",
+ "properties": {
+ "serviceAccountSecret": {
+ "additionalProperties": false,
+ "description": "Authentication via Google IAM Service Account credentials file using a Kubernetes Secret name and key.\nSee https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform for further details.\n",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "region": {
+ "default": "",
+ "type": "string"
+ },
+ "s3": {
+ "additionalProperties": false,
+ "description": "Configuration for AWS S3 (compatible) object stores.",
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "allowHttp": {
+ "type": "string"
+ },
+ "endpoint": {
+ "default": "",
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "secretKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "region"
+ ],
+ "type": "object"
+ },
+ "secretKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "resources": {
+ "additionalProperties": false,
+ "properties": {
+ "compactor": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "1",
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "garbage-collector": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "memory": {
+ "default": "512Mi"
+ },
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": null,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "250m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ingester": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": "1Gi",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "1",
+ "type": "string"
+ },
+ "memory": {
+ "default": "1Gi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 3,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "querier": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "memory": {
+ "default": "512Mi"
+ },
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": null,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "250m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "router": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "250m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 3,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "catalog",
+ "objectStore",
+ "ingesterStorage",
+ "admin",
+ "monitoringStorage"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "image",
+ "apiVersion"
+ ],
+ "type": "object"
+ },
+ "pause": {
+ "default": false,
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "status": {
+ "additionalProperties": true,
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
+
diff --git a/static/downloads/clustered-release-artifacts/20231117-750011/example-customer.yml b/static/downloads/clustered-release-artifacts/20231117-750011/example-customer.yml
new file mode 100644
index 000000000..ac2f9e6c9
--- /dev/null
+++ b/static/downloads/clustered-release-artifacts/20231117-750011/example-customer.yml
@@ -0,0 +1,257 @@
+# yaml-language-server: $schema=app-instance-schema.json
+apiVersion: kubecfg.dev/v1alpha1
+kind: AppInstance
+metadata:
+ name: influxdb
+ namespace: influxdb
+spec:
+ # One or more secrets that are used to pull the images from an authenticated registry.
+ # This will either be the secret provided to you, if using our registry, or a secret for your own registry
+ # if self-hosting the images.
+ imagePullSecrets:
+ - name:
+ package:
+ # The version of the clustered package that will be used.
+ # This determines the version of all of the individual components.
+ # When a new version of the product is released, this version should be updated and any
+ # new config options should be updated below.
+ image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20231117-750011
+ apiVersion: influxdata.com/v1alpha1
+ spec:
+ # Provides a way to pass down hosting environment specific configuration, such as an role ARN when using EKS IRSA.
+ # hostingEnvironment:
+ # aws:
+ # eksRoleArn: 'arn:aws:iam::111111111111:role/your-influxdb-clustered-role'
+ #
+ # A blank openshift object should be used to specify that changes should be made which cater to OpenShift.
+ # openshift: {}
+ #
+ # gke:
+ # Authenticate to Google Cloud services via workload identity, this
+ # annotates the 'iox' ServiceAccount with the role name you specify.
+ # NOTE: This requires a blank `objectStore.google` block in your
+ # configuration to ensure that InfluxDB knows which Google auth mode to run.
+ # workloadIdentity:
+ #
+ # Google Service Account name to use for the workload identity.
+ # accountName:
+ #
+ # Your Google Cloud Platform project ID.
+ # projectId:
+ catalog:
+ # A postgresql style DSN that points at a postgresql compatible database.
+ # eg: postgres://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]
+ dsn:
+ valueFrom:
+ secretKeyRef:
+ name:
+ key:
+
+ # images:
+ # # This can be used to override a specific image name with its FQIN
+ # # (Fully Qualified Image Name) for testing. eg.
+ # overrides:
+ # - name: influxdb2-artifacts/iox/iox
+ # newFQIN: mycompany/test-iox-build:aninformativetag
+ #
+ # # Set this variable to the prefix of your internal registry. This will be prefixed to all expected images.
+ # # eg. us-docker.pkg.dev/iox:latest => registry.mycompany.io/us-docker.pkg.dev/iox:latest
+ # registryOverride:
+
+ objectStore:
+ # Bucket that the parquet files will be stored in
+ bucket:
+
+ # Uncomment one of the following (s3, azure)
+ # to enable the configuration of your object store
+ s3:
+ # URL for S3 Compatible object store
+ endpoint:
+
+ # Set to true to allow communication over HTTP (instead of HTTPS)
+ allowHttp: "false"
+
+ # S3 Access Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ accessKey:
+ value:
+
+ # S3 Secret Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ secretKey:
+ value:
+
+ # This value is required for AWS S3, it may or may not be required for other providers.
+ region:
+
+ # azure:
+ # Azure Blob Storage Access Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ # accessKey:
+ # value:
+
+ # Azure Blob Storage Account
+ # This can also be provided as a valueFrom: secretKeyRef:
+ # account:
+ # value:
+
+ # google:
+ # Authenticate to Google Cloud services using a Service Account credentials file.
+ # You must create a Kubernetes Secret containing the appropriate value and provide
+ # its name here.
+ # serviceAccountSecret:
+ #
+ # Kubernetes Secret name containing the credentials for a
+ # Google IAM Service Account.
+ # name:
+ #
+ # The key within the Secret containing the credentials, this
+ # will be mounted onto the relevant pods.
+ # key:
+
+ # Ingester pods have a volume attached.
+ ingesterStorage:
+ # (Optional) Set the storage class. This will differ based on the K8s environment and desired storage characteristics.
+ # If not set, the default storage class will be used.
+ # storageClassName:
+ # Set the storage size (minimum 2Gi recommended)
+ storage:
+
+ # Monitoring pods have a volume attached.
+ monitoringStorage:
+ # (Optional) Set the storage class. This will differ based on the K8s environment and desired storage characteristics.
+ # If not set, the default storage class will be used.
+ # storageClassName:
+ # Set the storage size (minimum 1Gi recommended)
+ storage:
+
+ # Uncomment the follow block if using our provided Ingress.
+ #
+ # We currently only support the ingress NGINX ingress controller: https://github.com/kubernetes/ingress-nginx
+ #
+ # ingress:
+ # hosts:
+ # # This is the host on which you will access Influxdb 3.0, for both reads and writes
+ # -
+
+ # # A TLS cert is required to exist in the same namespace as the ingress.
+ # tlsSecretName:
+
+ # http:
+ # # Usually you have only one ingress controller installed in a given cluster.
+ # # In case you have more than one, you have to specify the "class name" of the ingress controller you want to use
+ # className: nginx
+
+ # grpc:
+ # # Usually you have only one ingress controller installed in a given cluster.
+ # # In case you have more than one, you have to specify the "class name" of the ingress controller you want to use
+ # className: nginx
+ #
+ # Enables specifying which 'type' of Ingress to use, alongside whether to place additional annotations
+ # onto those objects, this is useful for third party software in your environment, such as cert-manager.
+ # template:
+ # apiVersion: 'route.openshift.io/v1'
+ # kind: 'Route'
+ # metadata:
+ # annotations:
+ # 'example-annotation': 'annotation-value'
+
+ # Enables specifying customizations for the various components in InfluxDB 3.0.
+ # components:
+ # router:
+ # template:
+ # nodeSelector:
+ # disktype: ssd
+ # tolerations:
+ # - effect: NoSchedule
+ # key: example
+ # operator: Exists
+
+ # Uncomment the following block to tune the various pods for their cpu/memory/replicas based on workload needs.
+ # Only uncomment the specific resources you want to change, anything uncommented will use the package default.
+ # (You can read more about k8s resources and limits in https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits)
+ #
+ # resources:
+ # # The ingester handles data being written
+ # ingester:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # The default for ingesters is 3 to increase availability
+ #
+ # # optionally you can specify the resource limits which improves isolation.
+ # # (see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits)
+ # # limits:
+ # # cpu:
+ # # memory:
+
+ # # The compactor reorganizes old data to improve query and storage efficiency.
+ # compactor:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ # # The querier handles querying data.
+ # querier:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ # # The router performs some api routing.
+ # router:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ admin:
+ # The list of users to grant access to Clustered via influxctl
+ users:
+ # First name of user
+ - firstName:
+ # Last name of user
+ lastName:
+ # Email of user
+ email:
+ # The ID that the configured Identity Provider uses for the user in oauth flows
+ id:
+
+ # The dsn for the postgres compatible database (note this is the same as defined above)
+ dsn:
+ valueFrom:
+ secretKeyRef:
+ name:
+ key:
+ # The identity provider to be used e.g. "keycloak", "auth0", "azure", etc
+ # Note for Azure Active Directory it must be exactly "azure"
+ identityProvider:
+ # The JWKS endpoint provided by the Identity Provider
+ jwksEndpoint:
+
+ # # This (optional) section controls how InfluxDB issues outbound requests to other services
+ # egress:
+ # # If you're using a custom CA you will need to specify the full custom CA bundle here.
+ # #
+ # # NOTE: the custom CA is currently only honoured for outbound requests used to obtain
+ # # the JWT public keys from your identiy provider (see `jwksEndpoint`).
+ # customCertificates:
+ # valueFrom:
+ # configMapKeyRef:
+ # key: ca.pem
+ # name: custom-ca
+
+ # We also include the ability to enable some features that are not yet ready for general availability
+ # or for which we don't yet have a proper place to turn on an optional feature in the configuration file.
+ # To turn on these you should include the name of the feature flag in the `featureFlag` array.
+ #
+ # featureFlags:
+ # # Uncomment to install a Grafana deployment with some recommended dashboards.
+ # # Depends on one of the prometheus features being deployed.
+ # # - grafana
+
+ # # The following 2 flags should be uncommented for k8s API 1.21 support.
+ # # Note that this is an experimental configuration.
+ # # - noMinReadySeconds
+ # # - noGrpcProbes
diff --git a/static/downloads/clustered-release-artifacts/20231213-791734/app-instance-schema.json b/static/downloads/clustered-release-artifacts/20231213-791734/app-instance-schema.json
new file mode 100644
index 000000000..ddf4ccc2d
--- /dev/null
+++ b/static/downloads/clustered-release-artifacts/20231213-791734/app-instance-schema.json
@@ -0,0 +1,2442 @@
+{
+ "additionalProperties": false,
+ "properties": {
+ "apiVersion": {
+ "type": "string"
+ },
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "type": "object"
+ },
+ "spec": {
+ "additionalProperties": false,
+ "properties": {
+ "imagePullSecrets": {
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "package": {
+ "properties": {
+ "apiVersion": {
+ "type": "string"
+ },
+ "image": {
+ "type": "string"
+ },
+ "spec": {
+ "additionalProperties": false,
+ "properties": {
+ "admin": {
+ "additionalProperties": false,
+ "properties": {
+ "dsn": {
+ "additionalProperties": false,
+ "description": "The dsn for the postgres compatible database",
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "identityProvider": {
+ "description": "The identity provider to be used e.g. \"keycloak\", \"auth0\", \"azure\"",
+ "type": "string"
+ },
+ "internalSigningKey": {
+ "description": "Internal JWT secrets",
+ "properties": {
+ "id": {
+ "additionalProperties": false,
+ "description": "random ID that uniquely identifies this keypair. Generally a UUID.",
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "privateKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "publicKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "id",
+ "privateKey",
+ "publicKey"
+ ],
+ "type": "object"
+ },
+ "jwksEndpoint": {
+ "type": "string"
+ },
+ "users": {
+ "description": "The list of users to grant access to Clusterted via influxctl",
+ "item": {
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "users",
+ "dsn",
+ "identityProvider",
+ "jwksEndpoint"
+ ],
+ "type": "object"
+ },
+ "catalog": {
+ "additionalProperties": false,
+ "properties": {
+ "dsn": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "components": {
+ "additionalProperties": false,
+ "properties": {
+ "common": {
+ "additionalProperties": false,
+ "description": "Common parameters to all components. Will be overridden by component-specific parameters.\nAny value defined in the component-specific settings will be merged with values defined in the common settings.\n",
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "annotations": {
+ "default": { },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "labels": {
+ "default": { },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "compactor": {
+ "additionalProperties": false,
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "annotations": {
+ "default": { },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "labels": {
+ "default": { },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "garbage-collector": {
+ "additionalProperties": false,
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "annotations": {
+ "default": { },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "labels": {
+ "default": { },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ingester": {
+ "additionalProperties": false,
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "annotations": {
+ "default": { },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "labels": {
+ "default": { },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "querier": {
+ "additionalProperties": false,
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "annotations": {
+ "default": { },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "labels": {
+ "default": { },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "router": {
+ "additionalProperties": false,
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "annotations": {
+ "default": { },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "labels": {
+ "default": { },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "egress": {
+ "additionalProperties": false,
+ "properties": {
+ "customCertificates": {
+ "additionalProperties": false,
+ "description": "Custom certificate or CA Bundle. Used to verify outbound connections performed by influxdb, such as OIDC servers,\npostgres databases, or object store API endpoints.\n\nEquivalent to the SSL_CERT_FILE env var used by OpenSSL.\n",
+ "examples": [
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "featureFlags": {
+ "description": "An array of feature flag names. Feature flags (aka feature gates) control features that\nhave not yet been releases. They can be experimental to various degree (alpha, beta, rc),\nplease refer to the feature flag documentation.\n",
+ "type": "array"
+ },
+ "hostingEnvironment": {
+ "additionalProperties": false,
+ "description": "Environment or cloud-specific configuration elements which are utilised by InfluxDB Clustered.",
+ "properties": {
+ "aws": {
+ "additionalProperties": false,
+ "description": "AWS specific configuration values.",
+ "properties": {
+ "eksRoleArn": {
+ "default": "",
+ "description": "IAM role ARN to apply to the IOx ServiceAccount, used with EKS IRSA.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "gke": {
+ "additionalProperties": false,
+ "properties": {
+ "workloadIdentity": {
+ "additionalProperties": false,
+ "description": "Authentication via GKE workload identity. This will annotate the relevant Kubernetes ServiceAccount objects.\nSee https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity for further details.\n",
+ "properties": {
+ "serviceAccountEmail": {
+ "description": "Google IAM Service Account email, this should be in the format NAME@PROJECT_ID.iam.gserviceaccount.com",
+ "type": "string"
+ }
+ },
+ "required": [
+ "serviceAccountEmail"
+ ],
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "openshift": {
+ "additionalProperties": false,
+ "description": "OpenShift specific configuration values.",
+ "properties": { },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "images": {
+ "properties": {
+ "overrides": {
+ "item": {
+ "description": "remaps an image matching naming predicates\n",
+ "properties": {
+ "name": {
+ "description": "naming predicate: the part of the image name that comes after the registry name, e.g.\nIf the image name is \"oci.influxdata.com/foo/bar:1234\", the name field matches \"foo/bar\"\n",
+ "type": "string"
+ },
+ "newFQIN": {
+ "description": "rewrite expression: when a naming predicate matches this image, rewrite the image reference\nusing this Fully Qualified Image Name. i.e. this replaces the whole registry/imagename:tag@digest\nparts of the input image reference.\n",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "registryOverride": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ingesterStorage": {
+ "additionalProperties": false,
+ "properties": {
+ "storage": {
+ "type": "string"
+ },
+ "storageClassName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "required": [
+ "storage"
+ ],
+ "type": "object"
+ },
+ "ingress": {
+ "additionalProperties": false,
+ "properties": {
+ "grpc": {
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "hosts": {
+ "minItems": 1,
+ "type": "array"
+ },
+ "http": {
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "description": "Template to apply across configured Ingress-type resources.\nThis allows you to specify a range of third party annotations onto the created Ingress objects and/or\nalter the kind of Ingress you would like to use, e.g. 'Route'.\n",
+ "properties": {
+ "apiVersion": {
+ "default": "networking.k8s.io/v1",
+ "enum": [
+ "networking.k8s.io/v1",
+ "route.openshift.io/v1"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "default": "Ingress",
+ "enum": [
+ "Ingress",
+ "Route"
+ ],
+ "type": "string"
+ },
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "annotations": {
+ "default": { },
+ "description": "Annotations to place onto the objects which enable ingress.",
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "tlsSecretName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "monitoringStorage": {
+ "additionalProperties": false,
+ "properties": {
+ "storage": {
+ "type": "string"
+ },
+ "storageClassName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "required": [
+ "storage"
+ ],
+ "type": "object"
+ },
+ "objectStore": {
+ "additionalProperties": false,
+ "description": "Configuration values for the backing object store for IOx",
+ "oneOf": [
+ {
+ "required": [
+ "bucket",
+ "region"
+ ]
+ },
+ {
+ "required": [
+ "s3",
+ "bucket"
+ ]
+ },
+ {
+ "required": [
+ "azure",
+ "bucket"
+ ]
+ },
+ {
+ "required": [
+ "google",
+ "bucket"
+ ]
+ }
+ ],
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "allowHttp": {
+ "default": "false",
+ "type": "string"
+ },
+ "azure": {
+ "additionalProperties": false,
+ "description": "Configuration which correlates directly to Azure Blob Storage.",
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "account": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "accessKey",
+ "account"
+ ],
+ "type": "object"
+ },
+ "bucket": {
+ "type": "string"
+ },
+ "endpoint": {
+ "default": "",
+ "type": "string"
+ },
+ "google": {
+ "additionalProperties": false,
+ "description": "Configuration which correlates directly to Google Cloud Storage (GCS).",
+ "properties": {
+ "serviceAccountSecret": {
+ "additionalProperties": false,
+ "description": "Authentication via Google IAM Service Account credentials file using a Kubernetes Secret name and key.\nSee https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform for further details.\n",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "region": {
+ "default": "",
+ "type": "string"
+ },
+ "s3": {
+ "additionalProperties": false,
+ "description": "Configuration for AWS S3 (compatible) object stores.",
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "allowHttp": {
+ "type": "string"
+ },
+ "endpoint": {
+ "default": "",
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "secretKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "region"
+ ],
+ "type": "object"
+ },
+ "secretKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "resources": {
+ "additionalProperties": false,
+ "properties": {
+ "compactor": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "1",
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "garbage-collector": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "memory": {
+ "default": "512Mi"
+ },
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": null,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "250m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ingester": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": "1Gi",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "1",
+ "type": "string"
+ },
+ "memory": {
+ "default": "1Gi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 3,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "querier": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "memory": {
+ "default": "512Mi"
+ },
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": null,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "250m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "router": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "250m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 3,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "catalog",
+ "objectStore",
+ "ingesterStorage",
+ "admin",
+ "monitoringStorage"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "image",
+ "apiVersion"
+ ],
+ "type": "object"
+ },
+ "pause": {
+ "default": false,
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "status": {
+ "additionalProperties": true,
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
+
diff --git a/static/downloads/clustered-release-artifacts/20231213-791734/example-customer.yml b/static/downloads/clustered-release-artifacts/20231213-791734/example-customer.yml
new file mode 100644
index 000000000..dcb3ef8de
--- /dev/null
+++ b/static/downloads/clustered-release-artifacts/20231213-791734/example-customer.yml
@@ -0,0 +1,267 @@
+# yaml-language-server: $schema=app-instance-schema.json
+apiVersion: kubecfg.dev/v1alpha1
+kind: AppInstance
+metadata:
+ name: influxdb
+ namespace: influxdb
+spec:
+ # One or more secrets that are used to pull the images from an authenticated registry.
+ # This will either be the secret provided to you, if using our registry, or a secret for your own registry
+ # if self-hosting the images.
+ imagePullSecrets:
+ - name:
+ package:
+ # The version of the clustered package that will be used.
+ # This determines the version of all of the individual components.
+ # When a new version of the product is released, this version should be updated and any
+ # new config options should be updated below.
+ image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20231213-791734
+ apiVersion: influxdata.com/v1alpha1
+ spec:
+ # Provides a way to pass down hosting environment specific configuration, such as an role ARN when using EKS IRSA.
+ # hostingEnvironment:
+ # aws:
+ # eksRoleArn: 'arn:aws:iam::111111111111:role/your-influxdb-clustered-role'
+ #
+ # A blank openshift object should be used to specify that changes should be made which cater to OpenShift.
+ # openshift: {}
+ #
+ # gke:
+ # Authenticate to Google Cloud services via workload identity, this
+ # annotates the 'iox' ServiceAccount with the role name you specify.
+ # NOTE: This requires a blank `objectStore.google` block in your
+ # configuration to ensure that InfluxDB knows which Google auth mode to run.
+ # workloadIdentity:
+ #
+ # Google Service Account name to use for the workload identity.
+ # accountName:
+ #
+ # Your Google Cloud Platform project ID.
+ # projectId:
+ catalog:
+ # A postgresql style DSN that points at a postgresql compatible database.
+ # eg: postgres://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]
+ dsn:
+ valueFrom:
+ secretKeyRef:
+ name:
+ key:
+
+ # images:
+ # # This can be used to override a specific image name with its FQIN
+ # # (Fully Qualified Image Name) for testing. eg.
+ # overrides:
+ # - name: influxdb2-artifacts/iox/iox
+ # newFQIN: mycompany/test-iox-build:aninformativetag
+ #
+ # # Set this variable to the prefix of your internal registry. This will be prefixed to all expected images.
+ # # eg. us-docker.pkg.dev/iox:latest => registry.mycompany.io/us-docker.pkg.dev/iox:latest
+ # registryOverride:
+
+ objectStore:
+ # Bucket that the parquet files will be stored in
+ bucket:
+
+ # Uncomment one of the following (s3, azure)
+ # to enable the configuration of your object store
+ s3:
+ # URL for S3 Compatible object store
+ endpoint:
+
+ # Set to true to allow communication over HTTP (instead of HTTPS)
+ allowHttp: "false"
+
+ # S3 Access Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ accessKey:
+ value:
+
+ # S3 Secret Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ secretKey:
+ value:
+
+ # This value is required for AWS S3, it may or may not be required for other providers.
+ region:
+
+ # azure:
+ # Azure Blob Storage Access Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ # accessKey:
+ # value:
+
+ # Azure Blob Storage Account
+ # This can also be provided as a valueFrom: secretKeyRef:
+ # account:
+ # value:
+
+ # google:
+ # Authenticate to Google Cloud services using a Service Account credentials file.
+ # You must create a Kubernetes Secret containing the appropriate value and provide
+ # its name here.
+ # serviceAccountSecret:
+ #
+ # Kubernetes Secret name containing the credentials for a
+ # Google IAM Service Account.
+ # name:
+ #
+ # The key within the Secret containing the credentials, this
+ # will be mounted onto the relevant pods.
+ # key:
+
+ # Ingester pods have a volume attached.
+ ingesterStorage:
+ # (Optional) Set the storage class. This will differ based on the K8s environment and desired storage characteristics.
+ # If not set, the default storage class will be used.
+ # storageClassName:
+ # Set the storage size (minimum 2Gi recommended)
+ storage:
+
+ # Monitoring pods have a volume attached.
+ monitoringStorage:
+ # (Optional) Set the storage class. This will differ based on the K8s environment and desired storage characteristics.
+ # If not set, the default storage class will be used.
+ # storageClassName:
+ # Set the storage size (minimum 1Gi recommended)
+ storage:
+
+ # Uncomment the follow block if using our provided Ingress.
+ #
+ # We currently only support the ingress NGINX ingress controller: https://github.com/kubernetes/ingress-nginx
+ #
+ # ingress:
+ # hosts:
+ # # This is the host on which you will access Influxdb 3.0, for both reads and writes
+ # -
+
+ # (Optional)
+ # The name of the Kubernetes Secret containing a TLS certificate, this should exist in the same namespace as the Clustered installation.
+ # If you are using cert-manager, enter a name for the Secret it should create.
+ # tlsSecretName:
+
+ # http:
+ # # Usually you have only one ingress controller installed in a given cluster.
+ # # In case you have more than one, you have to specify the "class name" of the ingress controller you want to use
+ # className: nginx
+
+ # grpc:
+ # # Usually you have only one ingress controller installed in a given cluster.
+ # # In case you have more than one, you have to specify the "class name" of the ingress controller you want to use
+ # className: nginx
+ #
+ # Enables specifying which 'type' of Ingress to use, alongside whether to place additional annotations
+ # onto those objects, this is useful for third party software in your environment, such as cert-manager.
+ # template:
+ # apiVersion: 'route.openshift.io/v1'
+ # kind: 'Route'
+ # metadata:
+ # annotations:
+ # 'example-annotation': 'annotation-value'
+
+ # Enables specifying customizations for the various components in InfluxDB 3.0.
+ # components:
+ # # One of "router", "ingester", "querier", "compactor"
+ # # router:
+ # # template:
+ # # nodeSelector:
+ # # disktype: ssd
+ # # tolerations:
+ # # - effect: NoSchedule
+ # # key: example
+ # # operator: Exists
+ # # Common customizations for all components go in a pseudo-component called "common"
+ # # common:
+ # # template:
+ # # # Metadata contains custom annotations (and labels) to be added to a component. E.g.:
+ # # metadata:
+ # # annotations:
+ # # telegraf.influxdata.com/class: "foo"
+
+ # Uncomment the following block to tune the various pods for their cpu/memory/replicas based on workload needs.
+ # Only uncomment the specific resources you want to change, anything uncommented will use the package default.
+ # (You can read more about k8s resources and limits in https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits)
+ #
+ # resources:
+ # # The ingester handles data being written
+ # ingester:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # The default for ingesters is 3 to increase availability
+ #
+ # # optionally you can specify the resource limits which improves isolation.
+ # # (see https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits)
+ # # limits:
+ # # cpu:
+ # # memory:
+
+ # # The compactor reorganizes old data to improve query and storage efficiency.
+ # compactor:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ # # The querier handles querying data.
+ # querier:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ # # The router performs some api routing.
+ # router:
+ # requests:
+ # cpu:
+ # memory:
+ # replicas: # the default is 1
+
+ admin:
+ # The list of users to grant access to Clustered via influxctl
+ users:
+ # First name of user
+ - firstName:
+ # Last name of user
+ lastName:
+ # Email of user
+ email:
+ # The ID that the configured Identity Provider uses for the user in oauth flows
+ id:
+
+ # The dsn for the postgres compatible database (note this is the same as defined above)
+ dsn:
+ valueFrom:
+ secretKeyRef:
+ name:
+ key:
+ # The identity provider to be used e.g. "keycloak", "auth0", "azure", etc
+ # Note for Azure Active Directory it must be exactly "azure"
+ identityProvider:
+ # The JWKS endpoint provided by the Identity Provider
+ jwksEndpoint:
+
+ # # This (optional) section controls how InfluxDB issues outbound requests to other services
+ # egress:
+ # # If you're using a custom CA you will need to specify the full custom CA bundle here.
+ # #
+ # # NOTE: the custom CA is currently only honoured for outbound requests used to obtain
+ # # the JWT public keys from your identiy provider (see `jwksEndpoint`).
+ # customCertificates:
+ # valueFrom:
+ # configMapKeyRef:
+ # key: ca.pem
+ # name: custom-ca
+
+ # We also include the ability to enable some features that are not yet ready for general availability
+ # or for which we don't yet have a proper place to turn on an optional feature in the configuration file.
+ # To turn on these you should include the name of the feature flag in the `featureFlag` array.
+ #
+ # featureFlags:
+ # # Uncomment to install a Grafana deployment with some recommended dashboards.
+ # # Depends on one of the prometheus features being deployed.
+ # # - grafana
+
+ # # The following 2 flags should be uncommented for k8s API 1.21 support.
+ # # Note that this is an experimental configuration.
+ # # - noMinReadySeconds
+ # # - noGrpcProbes
diff --git a/static/downloads/clustered-release-artifacts/20240111-824437/app-instance-schema.json b/static/downloads/clustered-release-artifacts/20240111-824437/app-instance-schema.json
new file mode 100644
index 000000000..c5cac8189
--- /dev/null
+++ b/static/downloads/clustered-release-artifacts/20240111-824437/app-instance-schema.json
@@ -0,0 +1,2485 @@
+{
+ "additionalProperties": false,
+ "properties": {
+ "apiVersion": {
+ "type": "string"
+ },
+ "kind": {
+ "type": "string"
+ },
+ "metadata": {
+ "type": "object"
+ },
+ "spec": {
+ "additionalProperties": false,
+ "properties": {
+ "imagePullSecrets": {
+ "items": {
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "package": {
+ "properties": {
+ "apiVersion": {
+ "type": "string"
+ },
+ "image": {
+ "type": "string"
+ },
+ "spec": {
+ "additionalProperties": false,
+ "properties": {
+ "admin": {
+ "additionalProperties": false,
+ "properties": {
+ "dsn": {
+ "additionalProperties": false,
+ "description": "The dsn for the postgres compatible database",
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "identityProvider": {
+ "description": "The identity provider to be used e.g. \"keycloak\", \"auth0\", \"azure\"",
+ "type": "string"
+ },
+ "internalSigningKey": {
+ "description": "Internal JWT secrets",
+ "properties": {
+ "id": {
+ "additionalProperties": false,
+ "description": "random ID that uniquely identifies this keypair. Generally a UUID.",
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "privateKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "publicKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "id",
+ "privateKey",
+ "publicKey"
+ ],
+ "type": "object"
+ },
+ "jwksEndpoint": {
+ "type": "string"
+ },
+ "users": {
+ "description": "The list of users to grant access to Clusterted via influxctl",
+ "item": {
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "users",
+ "dsn",
+ "identityProvider",
+ "jwksEndpoint"
+ ],
+ "type": "object"
+ },
+ "catalog": {
+ "additionalProperties": false,
+ "properties": {
+ "dsn": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "components": {
+ "additionalProperties": false,
+ "properties": {
+ "common": {
+ "additionalProperties": false,
+ "description": "Common parameters to all components. Will be overridden by component-specific parameters.\nAny value defined in the component-specific settings will be merged with values defined in the common settings.\n",
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "annotations": {
+ "default": { },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "labels": {
+ "default": { },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "compactor": {
+ "additionalProperties": false,
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "annotations": {
+ "default": { },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "labels": {
+ "default": { },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "garbage-collector": {
+ "additionalProperties": false,
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "annotations": {
+ "default": { },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "labels": {
+ "default": { },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ingester": {
+ "additionalProperties": false,
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "annotations": {
+ "default": { },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "labels": {
+ "default": { },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "querier": {
+ "additionalProperties": false,
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "annotations": {
+ "default": { },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "labels": {
+ "default": { },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "router": {
+ "additionalProperties": false,
+ "properties": {
+ "log": {
+ "additionalProperties": false,
+ "description": "Configuring logging parameters.\n",
+ "properties": {
+ "filters": {
+ "description": "InfluxDB 3.0 logging verbosity can be configured in fine grained way using a list\nof \"log filters\".\n\nEach log filter is an expression in the form of:\n\ntarget=level\n\nWhere \"target\" matches the \"target\" field in the logs, while level can be one of\nerror, warn, info, debug and trace.\n\nError and warn are less verbose while debug and trace are more verbose.\n\nYou can omit target and just specify a level. In that case the level \nwill set the maximum level for all events that are not enabled by other filters.\n\nIf a filter for a given target appears again in the filter list, it will override\na previous occurrence. This allows you to override the default filters.\n\nThe full documentation for the log filter syntax can be found at:\nhttps://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html\n",
+ "item": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "properties": {
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "annotations": {
+ "default": { },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "labels": {
+ "default": { },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "nodeSelector": {
+ "default": { },
+ "patternProperties": {
+ ".": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "tolerations": {
+ "default": [ ],
+ "description": "Pod tolerations to place onto this IOx component to affect scheduling decisions.\n\nFor further details, consult the Kubernetes documentation\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration\n",
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "egress": {
+ "additionalProperties": false,
+ "properties": {
+ "customCertificates": {
+ "additionalProperties": false,
+ "description": "Custom certificate or CA Bundle. Used to verify outbound connections performed by influxdb, such as OIDC servers,\npostgres databases, or object store API endpoints.\n\nEquivalent to the SSL_CERT_FILE env var used by OpenSSL.\n",
+ "examples": [
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "featureFlags": {
+ "description": "An array of feature flag names. Feature flags (aka feature gates) control features that\nhave not yet been releases. They can be experimental to various degree (alpha, beta, rc),\nplease refer to the feature flag documentation.\n",
+ "type": "array"
+ },
+ "hostingEnvironment": {
+ "additionalProperties": false,
+ "description": "Environment or cloud-specific configuration elements which are utilised by InfluxDB Clustered.",
+ "properties": {
+ "aws": {
+ "additionalProperties": false,
+ "description": "AWS specific configuration values.",
+ "properties": {
+ "eksRoleArn": {
+ "default": "",
+ "description": "IAM role ARN to apply to the IOx ServiceAccount, used with EKS IRSA.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "gke": {
+ "additionalProperties": false,
+ "properties": {
+ "workloadIdentity": {
+ "additionalProperties": false,
+ "description": "Authentication via GKE workload identity. This will annotate the relevant Kubernetes ServiceAccount objects.\nSee https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity for further details.\n",
+ "properties": {
+ "serviceAccountEmail": {
+ "description": "Google IAM Service Account email, this should be in the format NAME@PROJECT_ID.iam.gserviceaccount.com",
+ "type": "string"
+ }
+ },
+ "required": [
+ "serviceAccountEmail"
+ ],
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "openshift": {
+ "additionalProperties": false,
+ "description": "OpenShift specific configuration values.",
+ "properties": { },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "images": {
+ "properties": {
+ "overrides": {
+ "item": {
+ "description": "remaps an image matching naming predicates\n",
+ "properties": {
+ "name": {
+ "description": "naming predicate: the part of the image name that comes after the registry name, e.g.\nIf the image name is \"oci.influxdata.com/foo/bar:1234\", the name field matches \"foo/bar\"\n",
+ "type": "string"
+ },
+ "newFQIN": {
+ "description": "rewrite expression: when a naming predicate matches this image, rewrite the image reference\nusing this Fully Qualified Image Name. i.e. this replaces the whole registry/imagename:tag@digest\nparts of the input image reference.\n",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "registryOverride": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ingesterStorage": {
+ "additionalProperties": false,
+ "properties": {
+ "storage": {
+ "type": "string"
+ },
+ "storageClassName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "required": [
+ "storage"
+ ],
+ "type": "object"
+ },
+ "ingress": {
+ "additionalProperties": false,
+ "properties": {
+ "grpc": {
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "hosts": {
+ "type": "array"
+ },
+ "http": {
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "template": {
+ "additionalProperties": false,
+ "description": "Template to apply across configured Ingress-type resources.\nThis allows you to specify a range of third party annotations onto the created Ingress objects and/or\nalter the kind of Ingress you would like to use, e.g. 'Route'.\n",
+ "oneOf": [
+ {
+ "properties": {
+ "apiVersion": {
+ "const": "networking.istio.io/v1beta1"
+ },
+ "kind": {
+ "const": "Gateway"
+ },
+ "selector": {
+ "default": { },
+ "description": "This selector determines which Istio ingress gateway pods will be chosen\nto handle traffic for the created Gateway resources. A blank selector means that all\ngateway pods in the cluster will handle traffic.\n\nFor more details, see https://istio.io/latest/docs/reference/config/networking/gateway/#Gateway\n",
+ "type": "object"
+ }
+ },
+ "required": [
+ "apiVersion",
+ "kind"
+ ]
+ },
+ {
+ "properties": {
+ "apiVersion": {
+ "enum": [
+ "networking.k8s.io/v1",
+ "route.openshift.io/v1"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "Ingress",
+ "Route"
+ ],
+ "type": "string"
+ }
+ }
+ }
+ ],
+ "properties": {
+ "apiVersion": {
+ "default": "networking.k8s.io/v1",
+ "enum": [
+ "networking.k8s.io/v1",
+ "route.openshift.io/v1",
+ "networking.istio.io/v1beta1"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "default": "Ingress",
+ "enum": [
+ "Ingress",
+ "Route",
+ "Gateway"
+ ],
+ "type": "string"
+ },
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "annotations": {
+ "default": { },
+ "description": "Annotations to place onto the objects which enable ingress.",
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "selector": {
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "tlsSecretName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "monitoringStorage": {
+ "additionalProperties": false,
+ "properties": {
+ "storage": {
+ "type": "string"
+ },
+ "storageClassName": {
+ "default": "",
+ "type": "string"
+ }
+ },
+ "required": [
+ "storage"
+ ],
+ "type": "object"
+ },
+ "objectStore": {
+ "additionalProperties": false,
+ "description": "Configuration values for the backing object store for IOx",
+ "oneOf": [
+ {
+ "required": [
+ "bucket",
+ "region"
+ ]
+ },
+ {
+ "required": [
+ "s3",
+ "bucket"
+ ]
+ },
+ {
+ "required": [
+ "azure",
+ "bucket"
+ ]
+ },
+ {
+ "required": [
+ "google",
+ "bucket"
+ ]
+ }
+ ],
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "allowHttp": {
+ "default": "false",
+ "type": "string"
+ },
+ "azure": {
+ "additionalProperties": false,
+ "description": "Configuration which correlates directly to Azure Blob Storage.",
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "account": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "accessKey",
+ "account"
+ ],
+ "type": "object"
+ },
+ "bucket": {
+ "type": "string"
+ },
+ "endpoint": {
+ "default": "",
+ "type": "string"
+ },
+ "google": {
+ "additionalProperties": false,
+ "description": "Configuration which correlates directly to Google Cloud Storage (GCS).",
+ "properties": {
+ "serviceAccountSecret": {
+ "additionalProperties": false,
+ "description": "Authentication via Google IAM Service Account credentials file using a Kubernetes Secret name and key.\nSee https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform for further details.\n",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "region": {
+ "default": "",
+ "type": "string"
+ },
+ "s3": {
+ "additionalProperties": false,
+ "description": "Configuration for AWS S3 (compatible) object stores.",
+ "properties": {
+ "accessKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "allowHttp": {
+ "type": "string"
+ },
+ "endpoint": {
+ "default": "",
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "secretKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "region"
+ ],
+ "type": "object"
+ },
+ "secretKey": {
+ "additionalProperties": false,
+ "examples": [
+ "value: ...",
+ "valueFrom: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "value"
+ ]
+ },
+ {
+ "required": [
+ "valueFrom"
+ ]
+ }
+ ],
+ "properties": {
+ "value": {
+ "default": "",
+ "description": "Value",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "additionalProperties": false,
+ "description": "Allows to source the value from configMaps or secrets",
+ "examples": [
+ "configMapKeyRef: ...",
+ "secretKeyRef: ..."
+ ],
+ "oneOf": [
+ {
+ "required": [
+ "configMapKeyRef"
+ ]
+ },
+ {
+ "required": [
+ "secretKeyRef"
+ ]
+ }
+ ],
+ "properties": {
+ "configMapKeyRef": {
+ "additionalProperties": false,
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "default": false,
+ "description": "Specify whether the ConfigMap or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "secretKeyRef": {
+ "additionalProperties": false,
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "properties": {
+ "key": {
+ "description": "The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "name": {
+ "default": "",
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or it's key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "resources": {
+ "additionalProperties": false,
+ "properties": {
+ "compactor": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "1",
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "garbage-collector": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "memory": {
+ "default": "512Mi"
+ },
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": null,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "250m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ingester": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": "1Gi",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "1",
+ "type": "string"
+ },
+ "memory": {
+ "default": "1Gi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 3,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "querier": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "memory": {
+ "default": "512Mi"
+ },
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": null,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "250m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "router": {
+ "additionalProperties": false,
+ "description": "See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits",
+ "properties": {
+ "limits": {
+ "additionalProperties": false,
+ "description": "Limits describes the maximum amount of compute resources allowed.",
+ "properties": {
+ "cpu": {
+ "default": null,
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": false,
+ "description": "Requests describes the minimum amount of compute resources required.",
+ "properties": {
+ "cpu": {
+ "default": "250m",
+ "type": "string"
+ },
+ "memory": {
+ "default": "512Mi",
+ "type": "string"
+ },
+ "replicas": {
+ "default": 3,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "catalog",
+ "objectStore",
+ "ingesterStorage",
+ "admin",
+ "monitoringStorage"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "image",
+ "apiVersion"
+ ],
+ "type": "object"
+ },
+ "pause": {
+ "default": false,
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "status": {
+ "additionalProperties": true,
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
+
diff --git a/static/downloads/clustered-release-artifacts/20240111-824437/example-customer.yml b/static/downloads/clustered-release-artifacts/20240111-824437/example-customer.yml
new file mode 100644
index 000000000..bd65070ee
--- /dev/null
+++ b/static/downloads/clustered-release-artifacts/20240111-824437/example-customer.yml
@@ -0,0 +1,267 @@
+# yaml-language-server: $schema=app-instance-schema.json
+apiVersion: kubecfg.dev/v1alpha1
+kind: AppInstance
+metadata:
+ name: influxdb
+ namespace: influxdb
+spec:
+ # One or more secrets that are used to pull the images from an authenticated registry.
+ # This will either be the secret provided to you, if using our registry, or a secret for your own registry
+ # if self-hosting the images.
+ imagePullSecrets:
+ - name:
+ package:
+ # The version of the clustered package that will be used.
+ # This determines the version of all of the individual components.
+ # When a new version of the product is released, this version should be updated and any
+ # new config options should be updated below.
+ image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:20240111-824437
+ apiVersion: influxdata.com/v1alpha1
+ spec:
+ # Provides a way to pass down hosting environment specific configuration, such as an role ARN when using EKS IRSA.
+ # hostingEnvironment:
+ # aws:
+ # eksRoleArn: 'arn:aws:iam::111111111111:role/your-influxdb-clustered-role'
+ #
+ # A blank openshift object should be used to specify that changes should be made which cater to OpenShift.
+ # openshift: {}
+ #
+ # gke:
+ # Authenticate to Google Cloud services via workload identity, this
+ # annotates the 'iox' ServiceAccount with the role name you specify.
+ # NOTE: This requires a blank `objectStore.google` block in your
+ # configuration to ensure that InfluxDB knows which Google auth mode to run.
+ # workloadIdentity:
+ #
+ # Google Service Account name to use for the workload identity.
+ # accountName:
+ #
+ # Your Google Cloud Platform project ID.
+ # projectId:
+ catalog:
+ # A postgresql style DSN that points at a postgresql compatible database.
+ # eg: postgres://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]
+ dsn:
+ valueFrom:
+ secretKeyRef:
+ name:
+ key:
+
+ # images:
+ # # This can be used to override a specific image name with its FQIN
+ # # (Fully Qualified Image Name) for testing. eg.
+ # overrides:
+ # - name: influxdb2-artifacts/iox/iox
+ # newFQIN: mycompany/test-iox-build:aninformativetag
+ #
+ # # Set this variable to the prefix of your internal registry. This will be prefixed to all expected images.
+ # # eg. us-docker.pkg.dev/iox:latest => registry.mycompany.io/us-docker.pkg.dev/iox:latest
+ # registryOverride:
+
+ objectStore:
+ # Bucket that the parquet files will be stored in
+ bucket:
+
+ # Uncomment one of the following (s3, azure)
+ # to enable the configuration of your object store
+ s3:
+ # URL for S3 Compatible object store
+ endpoint:
+
+ # Set to true to allow communication over HTTP (instead of HTTPS)
+ allowHttp: "false"
+
+ # S3 Access Key
+ # This can also be provided as a valueFrom: secretKeyRef:
+ accessKey:
+ value: