docs(helm chart): values.yaml is documented and json.schema provided (#932)

* docs(helm chart): values.yaml is documented and json.schema provided

Helm Chart values.yaml file is documented with inline comments.  These have been used to generate a
README (in the helm repo) and a values.json.schema file.

fixes https://github.com/specklesystems/speckle-server/issues/887
fixes https://github.com/specklesystems/speckle-server/issues/867
This commit is contained in:
Iain Sproat
2022-08-16 14:41:34 +01:00
committed by GitHub
parent 259e8ec829
commit 49fdd818ce
6 changed files with 1720 additions and 120 deletions
+1
View File
@@ -12,6 +12,7 @@
"build": "yarn workspaces foreach -ptv run build",
"build:public": "yarn workspaces foreach -ptv --no-private run build",
"lint": "eslint . --ext .js,.ts,.vue --max-warnings=0",
"helm:readme:generate": "./utils/helm/update-documentation.sh",
"prettier:check": "prettier --check .",
"prettier:fix": "prettier --write .",
"circleci:check": "circleci config validate ./.circleci/config.yml",
@@ -0,0 +1,22 @@
{
"comments": {
"format": "##"
},
"tags": {
"param": "@param",
"section": "@section",
"descriptionStart": "@descriptionStart",
"descriptionEnd": "@descriptionEnd",
"skip": "@skip",
"extra": "@extra"
},
"modifiers": {
"array": "array",
"object": "object",
"string": "string",
"nullable": "nullable"
},
"regexp": {
"paramsSectionTitle": "Parameters"
}
}
@@ -94,14 +94,6 @@ Part-of label
app.kubernetes.io/part-of: {{ include "speckle.name" . }}
{{- end }}
{{/*
Connects to kube api-server to determine if Cilium CRD are present.
If they are we assume that Cilium is installed.
*/}}
{{- define "speckle.networkpolicy.ciliumIsPresent" -}}
{{- end }}
{{/*
Creates a network policy egress definition for connecting to Redis
File diff suppressed because it is too large Load Diff
+614 -112
View File
@@ -1,292 +1,794 @@
## @section Namespace
##
## @param namespace The name of the namespace in which Speckle will be deployed.
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
##
namespace: speckle-test
## @param create_namespace Enabling this will create a new namespace into which Speckle will be deployed
## The name of the namespace to create should be provided in the `namespace` parameter.
##
create_namespace: false
## @section SSL
##
## @param domain The DNS host name at which this Speckle deployment will be reachable
##
domain: localhost
## @param ssl_canonical_url HTTPS protocol will be the preferred protocol for serving this Speckle deployment
##
ssl_canonical_url: true
## @param cert_manager_issuer The name of the ClusterIssuer kubernetes resource that provides the SSL Certificate
##
cert_manager_issuer: letsencrypt-staging
## @section Ingress metadata for NetworkPolicy
## @descriptionStart
## This section is ignored unless networkPolicy is enabled for frontend or server.
## The NetworkPolicy uses this value to enable connections from the ingress controller pod in this namespace to reach Speckle.
## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
## @descriptionEnd
##
ingress:
## @param ingress.namespace The namespace in which the ingress controller is deployed.
namespace: ingress-nginx
## @param ingress.controllerName The name of the Kubernetes pod in which the ingress controller is deployed.
controllerName: ingress-nginx
## @section Common parameters
##
## @param docker_image_tag Speckle is published as a Docker Image. The version of the image which will be deployed is specified by this tag.
##
docker_image_tag: v2.3.3
## @param imagePullPolicy Determines the conditions when the Docker Images for Speckle should be pulled from the Image registry.
## ref: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy
##
imagePullPolicy: IfNotPresent
## @param secretName This is the name of the Kubernetes Secret resource in which secrets for Speckle are stored.
## Secrets within this Secret resource may include Postgres and Redis connectin strings, S3 secret values, email server passwords, etc..
## The expected key within the Secret resource is indicated elsewhere in this values.yaml file.
## This is expected to be an opaque Secret resource type.
## ref: https://kubernetes.io/docs/concepts/configuration/secret/#opaque-secrets
##
secretName: server-vars
## @param file_size_limit_mb This maximum size of any single file (unit is Megabytes) that can be uploaded to Speckle
##
file_size_limit_mb: 100
## @section Monitoring
## @descriptionStart
## This enables metrics generated by Speckle to be ingested by Prometheus: https://prometheus.io/
## Enabling this requires Prometheus to have been deployed prior, as this resource expects the Prometheus Customer Resource Definition
## for the ServiceMonitor to already be existing within the cluster.
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/getting-started.md#related-resources
## @descriptionEnd
##
## @param enable_prometheus_monitoring If enabled, Speckle deploys a Prometheus ServiceMonitor resource
##
enable_prometheus_monitoring: false
prometheusMonitoring:
## @param prometheusMonitoring.namespace If provided, deploys Speckle's Prometheus resources in the given namespace
## Prometheus prior to v0.19.0, or any version when deployed with default parameters, expects ServiceMonitors to be deployed within the same namespace.
## This parameter allows the Prometheus resources provided by Speckle to be deployed in another namespace.
## This allows Prometheus (< v0.19.0 or any version with default configuration) to be deployed in a separate namespace from Speckle.
## Note that Speckle expect the namespace to exist prior to deployment.
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/getting-started.md#related-resources
##
namespace: ''
## @param prometheusMonitoring.release If provided, adds the value to a `release` label on all the Prometheus resources deployed by Speckle
## Prometheus prior to v0.19.0, or any version when deployed with default parameters, expects ServiceMonitors to be selectable on the release label.
## This parameter allows Prometheus to be deployed with a non-default release name.
## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/getting-started.md#related-resources
##
release: ''
## @section Postgres Database
## @descriptionStart
## Defines parameters related to connections to the Postgres database.
## A secret containing the connection string to the Postgres database must stored within the Kubernetes cluster as an opaque Kubernetes Secret.
## The name of the secret must match the `secretName` parameter, and the key within this secret must be `postgres_url`.
## ref: https://kubernetes.io/docs/concepts/configuration/secret/#opaque-secrets
## @descriptionEnd
##
db:
# postgres_url: secret -> postgres_url
## @param db.useCertificate If enabled, the certificate defined in db.certificate is used to verify TLS connections to the Postgres database
##
useCertificate: false
## @param db.maxConnectionsServer The number of connections to the Postgres database to provide in the connection pool
##
maxConnectionsServer: 4
## @param db.certificate The x509 public certificate for SSL connections to the Postgres database
## Use of this certificate requires db.useCertificate to be enabled and an appropriate value for db.PGSSLMODE provided.
## The value must be formatted as a multi-line string. We recommend using the pipe-symbol and taking care to
## indent all lines of the value correctly.
## ref: https://helm.sh/docs/chart_template_guide/yaml_techniques/#strings-in-yaml
##
certificate: '' # Multi-line string with the contents of `ca-certificate.crt`
## @param db.PGSSLMODE This defines the level of security used when connecting to the Postgres database
## Postgres provides different froms of protection from different types of threat when communicating between the client (Speckle) and the Postgres database.
## ref: https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-PROTECTION
##
PGSSLMODE: require
networkPolicy: # if network policy is enabled for any service, this provides the networkPolicy with the necessary details to allow egress connections to the database
port: '' # the port to connect to, if known (default: "5432")
externalToCluster: # use if the database is external to the kubernetes cluster
enabled: true # only one of externalToCluster or inCluster should be enabled, if both are enabled only inCluster is deployed
host: '' # Domain name, or provide IP address. If both are provided IP address takes precedence
ipv4: '' # IP address of the externally hosted Database. If not known, provide the host instead. If both are provided the IP address takes precedence.
inCluster: # use if the database is deployed within the same kubernetes cluster as Speckle
enabled: false # only one of externalToCluster or inCluster should be enabled, if both are enabled only inCluster is deployed
podSelector: {} # the selector to match with pod of the deployed database instance
namespaceSelector: {} # the selector to match the namespace in which the database pod is deployed
## @extra db.networkPolicy If networkPolicy is enabled for any service, this provides the NetworkPolicy with the necessary details to allow egress connections to the Postgres database
##
networkPolicy:
## @param db.networkPolicy.port the port on the server providing the Postgres database (default: "5432")
##
port: ''
## @extra db.networkPolicy.externalToCluster Only required if the Postgres database is not hosted within the Kubernetes cluster in which Speckle will be deployed.
##
externalToCluster:
## @param db.networkPolicy.externalToCluster.enabled If enabled, indicates that the Postgres database is hosted externally to the Kubernetes cluster
## Only one of externalToCluster or inCluster should be enabled. If both are enabled then inCluster takes precedence and is the only one deployed
##
enabled: true
## @param db.networkPolicy.externalToCluster.host The domain name at which the Postgres database is hosted.
## This should match the value provided within the connection string.
## Provide the IP address if available (use the `ipv4` parameter), as the IP address takes precedence.
##
host: ''
## @param db.networkPolicy.externalToCluster.ipv4 The IP address at which the Postgres database is hosted
## This should be an IP address not within the Kubernetes Cluster Pod or Service IP ranges.
## If both host and ipv4 parameters are provided, ipv4 takes precedence and host is ignored.
##
ipv4: ''
## @extra db.networkPolicy.inCluster Only required if the Postgres database is hosted within the Kubernetes cluster in which Speckle will be deployed.
##
inCluster:
## @param db.networkPolicy.inCluster.enabled If enabled, indicates that the Postgres database is hosted withing the same Kubernetes cluster in which Speckle will be deployed
## Only one of externalToCluster or inCluster should be enabled. If both are enabled then inCluster takes precedence and is the only set of egress network policy rules deployed.
##
enabled: false
## @param db.networkPolicy.inCluster.podSelector The pod Selector yaml object used to uniquely select the Postgres database pods within the cluster and given namespace
## This is a Kubernetes podSelector object
## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/#behavior-of-to-and-from-selectors
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
##
podSelector: {}
## @param db.networkPolicy.inCluster.namespaceSelector The namespace selector yaml object used to uniquely select the namespace in which the Postgres database pods are deployed
## This is a Kubernetes namespaceSelector object
## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/#behavior-of-to-and-from-selectors
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
##
namespaceSelector: {}
## @section S3 Compatible Storage
## @descriptionStart
## Defines parameters related to connecting to the S3 compatible storage.
## A secret containing the secret key must stored within the Kubernetes cluster as an opaque Kubernetes Secret.
## The name of the Kubernetes Secret resource must match the `secretName` parameter, and the key within this Kubernetes Secret must be `s3_secret_key`.
## ref: https://kubernetes.io/docs/concepts/configuration/secret/#opaque-secrets
## @descriptionEnd
##
s3:
## @param s3.endpoint The URL at which the s3 compatible storage is hosted
## The url should be prefixed by the protocol (e.g. `https://`)
## The url may need to include the port if it is not the default (e.g. `443` for `https` protocol)
##
endpoint: ''
## @param s3.bucket The s3 compatible bucket in which Speckle data will be stored
## The access key should be granted write permissions to this bucket
##
bucket: ''
## @param s3.access_key The key of the access key used to authenticate with the s3 compatible storage
##
access_key: ''
## @param s3.create_bucket If enabled, will create a bucket with the given bucket name at this endpoint
## If enabled, the access_key must be granted the appropriate bucket creation privileges
##
create_bucket: 'false'
region: '' # optional, defaults to 'us-east-1'
# secret_key: secret -> s3_secret_key
networkPolicy: # if network policy is enabled for any service, this provides the networkPolicy with the necessary details to allow egress connections to the s3 compatible storage
externalToCluster: # use if the s3 compatible storage is external to the kubernetes cluster
enabled: true # only one of externalToCluster or inCluster should be enabled, if both are enabled only inCluster is deployed
inCluster: # use if the s3 compatible storage is deployed within the same kubernetes cluster as Speckle
enabled: false # only one of externalToCluster or inCluster should be enabled, if both are enabled only inCluster is deployed
podSelector: {} # the selector to match with pod of the deployed s3 compatible storage instance
namespaceSelector: {} # the selector to match the namespace in which the s3 compatible storage pod is deployed
## @param s3.region The region in which the bucket resides (or will be created in).
## If not provided, defaults to `us-east-1`. For many providers of s3 compatible storage, such as minio, this value may be ignored.
##
region: ''
## @extra s3.networkPolicy If networkPolicy is enabled for any service, this provides the NetworkPolicy with the necessary details to allow egress connections to the s3 compatible storage
##
networkPolicy:
## @param s3.networkPolicy.port the port on the server providing the s3 compatible storage (default: "443")
##
port: ''
## @extra s3.networkPolicy.externalToCluster Only required if the s3 compatible storage is not hosted within the Kubernetes cluster in which Speckle will be deployed.
##
externalToCluster:
## @param s3.networkPolicy.externalToCluster.enabled If enabled, indicates that the s3 compatible storage is hosted externally to the Kubernetes cluster
## Only one of externalToCluster or inCluster should be enabled. If both are enabled then inCluster takes precedence and is the only one deployed
##
enabled: true
## @param s3.networkPolicy.externalToCluster.host The domain name at which the s3 compatible storage is hosted.
## This should match the value provided within the connection string.
## Provide the IP address if available (use the `ipv4` parameter), as the IP address takes precedence.
##
host: ''
## @param s3.networkPolicy.externalToCluster.ipv4 The IP address at which the s3 compatible storage is hosted
## This should be an IP address not within the Kubernetes Cluster Pod or Service IP ranges.
## If both host and ipv4 parameters are provided, ipv4 takes precedence and host is ignored.
##
ipv4: ''
## @extra s3.networkPolicy.inCluster Only required if the s3 compatible storage is hosted within the Kubernetes cluster in which Speckle will be deployed.
##
inCluster:
## @param s3.networkPolicy.inCluster.enabled If enabled, indicates that the s3 compatible storage is hosted withing the same Kubernetes cluster in which Speckle will be deployed
## Only one of externalToCluster or inCluster should be enabled. If both are enabled then inCluster takes precedence and is the only set of egress network policy rules deployed.
##
enabled: false
## @param s3.networkPolicy.inCluster.podSelector The pod Selector yaml object used to uniquely select the s3 compatible storage pods within the cluster and given namespace
## This is a Kubernetes podSelector object
## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/#behavior-of-to-and-from-selectors
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
##
podSelector: {}
## @param s3.networkPolicy.inCluster.namespaceSelector The namespace selector yaml object used to uniquely select the namespace in which the s3 compatible storage pods are deployed
## This is a Kubernetes namespaceSelector object
## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/#behavior-of-to-and-from-selectors
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
##
namespaceSelector: {}
## @section Redis Store
## @descriptionStart
## Defines parameters related to connecting to the Redis Store.
## A secret containing the redis url (containing domain, username, and password) must stored within the Kubernetes cluster as an opaque Kubernetes Secret.
## The name of the Kubernetes Secret resource must match the `secretName` parameter, and the key within this Kubernetes Secret resource must be `redis_url`.
## ref: https://kubernetes.io/docs/concepts/configuration/secret/#opaque-secrets
## @descriptionEnd
##
redis:
# redis_url: secret -> redis_url
networkPolicy: # if network policy is enabled for any service, this provides the networkPolicy with the necessary details to allow egress connections to redis
port: '' # the port to connect to, if known (default: "6379")
externalToCluster: # use if redis is external to the kubernetes cluster
enabled: true # only one of externalToCluster or inCluster should be enabled, if both are enabled only inCluster is deployed
host: '' # Domain name of the externally hosted Redis. It is preferable to provide the IP address. If both are provided IP address takes precedence
ipv4: '' # IP address of the externally hosted Redis. If not known, provide the host instead. If both are provided the IP address takes precedence.
inCluster: # use if redis is deployed within the same kubernetes cluster as Speckle
enabled: false # only one of externalToCluster or inCluster should be enabled, if both are enabled only inCluster is deployed
podSelector: {} # the selector to match with pod of the deployed Redis instance
namespaceSelector: {} # the selector to match the namespace in which the Redis pod is deployed
## @extra redis.networkPolicy If networkPolicy is enabled for Speckle server, this provides the NetworkPolicy with the necessary details to allow egress connections to the Redis store
##
networkPolicy:
## @param redis.networkPolicy.port the port on the server providing the Redis store (default: "6379")
##
port: ''
## @extra redis.networkPolicy.externalToCluster Only required if the Redis store is not hosted within the Kubernetes cluster in which Speckle will be deployed.
##
externalToCluster:
## @param redis.networkPolicy.externalToCluster.enabled If enabled, indicates that the Redis store is hosted externally to the Kubernetes cluster
## Only one of externalToCluster or inCluster should be enabled. If both are enabled then inCluster takes precedence and is the only one deployed
##
enabled: true
## @param redis.networkPolicy.externalToCluster.host The domain name at which the Redis store is hosted.
## This should match the value provided within the connection string.
## Provide the IP address if available (use the `ipv4` parameter), as the IP address takes precedence.
##
host: ''
## @param redis.networkPolicy.externalToCluster.ipv4 The IP address at which the Redis store is hosted
## This should be an IP address not within the Kubernetes Cluster Pod or Service IP ranges.
## If both host and ipv4 parameters are provided, ipv4 takes precedence and host is ignored.
##
ipv4: ''
## @extra redis.networkPolicy.inCluster is only required if the Redis store is hosted within the Kubernetes cluster in which Speckle will be deployed.
##
inCluster:
## @param redis.networkPolicy.inCluster.enabled If enabled, indicates that the Redis store is hosted withing the same Kubernetes cluster in which Speckle will be deployed
## Only one of externalToCluster or inCluster should be enabled. If both are enabled then inCluster takes precedence and is the only set of egress network policy rules deployed.
##
enabled: false
## @param redis.networkPolicy.inCluster.podSelector The pod Selector yaml object used to uniquely select the Redis store pods within the cluster and given namespace
## This is a Kubernetes podSelector object
## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/#behavior-of-to-and-from-selectors
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
##
podSelector: {}
## @param redis.networkPolicy.inCluster.namespaceSelector The namespace selector yaml object used to uniquely select the namespace in which the Redis store pods are deployed
## This is a Kubernetes namespaceSelector object
## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/#behavior-of-to-and-from-selectors
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
##
namespaceSelector: {}
## @section Server
## @descriptionStart
## Defines parameters related to the backend server component of Speckle.
## A secret containing the an unique value (this can be generated randomly) must stored within the Kubernetes cluster as an opaque Kubernetes Secret.
## The name of the Kubernetes Secret resource must match the `secretName` parameter, and the key within this Secret resource must be `session_secret`.
## ref: https://kubernetes.io/docs/concepts/configuration/secret/#opaque-secrets
## @descriptionEnd
##
server:
## @param server.replicas The number of instances of the Server pod to be deployed within the cluster.
##
replicas: 1
# session_secret: secret -> `session_secret`
## @extra server.auth Speckle provides a number of different mechanisms for authenticating users. Each available option must be configured here.
##
auth:
local:
## @param server.auth.local.enabled If enabled, users can register and authenticate with an email address and password.
## The login details are stored in the Postgres database connected to Speckle and are encrypted.
##
enabled: true
google:
## @param server.auth.google.enabled If enabled, users can authenticate via Google with their Google account credentials.
## If enabling Google, the `server.auth.google.client_id` parameter is required.
## A secret containing the client secret must stored within the Kubernetes cluster as an opaque Kubernetes Secret.
## The name of the Kubernetes Secret resource must match the `secretName` parameter, and the key within this Kubernetes Secret must be `google_client_secret`.
## ref: https://kubernetes.io/docs/concepts/configuration/secret/#opaque-secrets
##
enabled: false
## @param server.auth.google.client_id This is the ID for Speckle that you have registered with Google.
##
client_id: ''
# client_secret: secret -> `google_client_secret`
github:
## @param server.auth.github.enabled If enabled, users can authenticate via Github with their Github account credentials.
## If enabling Github authentication, the `server.auth.github.client_id` parameter is required.
## A secret containing the client secret must stored within the Kubernetes cluster as an opaque Kubernetes Secret.
## The name of the Kubernetes Secret resource must match the `secretName` parameter, and the key within this Kubernetes Secret must be `github_client_secret`.
## ref: https://kubernetes.io/docs/concepts/configuration/secret/#opaque-secrets
##
enabled: false
## @param server.auth.github.client_id This is the ID for Speckle that you have registered with Github
##
client_id: ''
# client_secret: secret -> `github_client_secret`
azure_ad:
## @param server.auth.azure_ad.enabled If enabled, users can authenticate via Azure Active Directory.
## If enabling Azure Active Directory authentication, a secret containing the client secret must stored within the Kubernetes cluster as an opaque Kubernetes Secret.
## The name of the Kubernetes Secret resource must match the `secretName` parameter, and the key within this Kubernetes Secret must be `azure_ad_client_secret`.
## ref: https://kubernetes.io/docs/concepts/configuration/secret/#opaque-secrets
##
enabled: false
## @param server.auth.azure_ad.org_name This is the Organisation Name that you have registered with Azure
##
org_name: ''
## @param server.auth.azure_ad.identity_metadata This is the identity metadata for Speckle that you have registered with Azure
##
identity_metadata: ''
## @param server.auth.azure_ad.issuer This is the issuer name for Speckle that you have registered with Azure
##
issuer: ''
## @param server.auth.azure_ad.client_id This is the ID for Speckle that you have registered with Azure
##
client_id: ''
# client_secret: secret -> `azure_ad_client_secret`
## @extra server.email Speckle can communicate with users via email, providing account verification and notification.
##
email:
## @param server.email.enabled If enabled, Speckle can send email to users - for example, email verification for account registration.
## If enabling Email, a secret containing the password to the email server must stored within the Kubernetes cluster as an opaque Kubernetes Secret.
## The name of the Kubernetes Secret resource must match the `secretName` parameter, and the key within this Kubernetes Secret must be `email_password`.
## ref: https://kubernetes.io/docs/concepts/configuration/secret/#opaque-secrets
##
enabled: false
## @param server.email.host The domain name or IP address of the server hosting the email service.
##
host: ''
## @param server.email.port The port on the server for the email service.
##
port: ''
## @param server.email.username The username with which Speckle will authenticate with the email service.
## Note that the `email_password` is expected to be provided in the Kubernetes Secret with the name provided in the `secretName` parameter.
##
username: ''
# password: secret -> `email_password`
requests:
## @param server.requests.cpu The CPU that should be available on a node when scheduling this pod.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
cpu: 500m
## @param server.requests.memory The Memory that should be available on a node when scheduling this pod.
## Depending on the Kubernetes cluster's configuration, exceeding this value may result in pod eviction from a node.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
memory: 1Gi
limits:
## @param server.limits.cpu The maximum CPU that will be made available to the server Pod in a given period.
## If this limit is exceeded, execution of the Pod will be paused until the next period.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
cpu: 1000m
## @param server.limits.memory The maximum Memory that will be made available to the server Pod.
## If this limit is exceeded, processes within the pod that request additional memory may be stopped.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
memory: 3Gi
serviceAccount:
## @param server.serviceAccount.create If enabled, a Kubernetes Service Account will be created for this pod.
## This provides additional security by limiting this pod's access to the Kubernetes API and to Secrets on the Kubernetes cluster.
## If disabled, the default Service Account will be used which in most Kubernetes configurations will grant this pod
## access to most secrets on the cluster and access to the Kubernetes API.
##
create: true
monitoring:
apollo:
## @param server.monitoring.apollo.enabled (Optional) If enabled, exports metrics from the GraphQL API to Apollo Graphql Studio.
## If enabling Apollo, a secret containing the key to the Apollo Graphql Studio API must stored within the Kubernetes cluster as an opaque Kubernetes Secret.
## The name of the Kubernetes Secret resource must match the `secretName` parameter, and the key within this Kubernetes Secret must be `apollo_key`.
## ref: https://kubernetes.io/docs/concepts/configuration/secret/#opaque-secrets
##
enabled: false
## @param server.monitoring.apollo.graph_id The ID for Speckle that you registered in Apollo Graphql Studio.
##
graph_id: ''
# key: secret -> `apollo_key`
# Sentry specific:
## @param server.sentry_dns (Optional) The Data Source Name that was provided by Sentry.io
## Sentry.io allows events within Speckle to be monitored
##
sentry_dns: ''
## @param server.disable_tracking If set to true, will prevent tracking metrics from being collected
## Setting this value to false requires `sentry_dns` to be set
##
disable_tracking: false
## @param server.disable_tracing If set to true, will prevent tracing metrics from being collected
## Setting this value to false requires `sentry_dns` to be set
##
disable_tracing: false
networkPolicy:
## @param server.networkPolicy.enabled If enabled, will provide additional security be limiting network traffic into and out of the pod to only the required endpoints and ports.
## If enabled, the `ingress`, `postgres.networkPolicy`, `redis.networkPolicy`, and `s3.networkPolicy` parameters need be configured.
## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
##
enabled: false
## @param server.affinity Affinity for Speckle server pods assignment
## @param server.affinity Affinity for Speckle server pods scheduling
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
##
affinity: {}
## @param server.nodeSelector Node labels for Speckle server pods assignment
## @param server.nodeSelector Node labels for Speckle server pods scheduling
## ref: https://kubernetes.io/docs/user-guide/node-selection/
##
nodeSelector: {}
## @param server.tolerations Tolerations for Speckle server pods assignment
## @param server.tolerations Tolerations for Speckle server pods scheduling
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
##
tolerations: []
## @param server.topologySpreadConstraints Spread Constraints for Speckle server pod assignment
## @param server.topologySpreadConstraints Spread Constraints for Speckle server pod scheduling
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
##
topologySpreadConstraints: []
## @section Frontend
## @descriptionStart
## Defines parameters related to the frontend server component of Speckle.
## @descriptionEnd
##
frontend:
## @param frontend.replicas The number of instances of the Frontend pod to be deployed within the cluster.
##
replicas: 1
requests:
## @param frontend.requests.cpu The CPU that should be available on a node when scheduling this pod.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
cpu: 250m
## @param frontend.requests.memory The Memory that should be available on a node when scheduling this pod.
## Depending on the Kubernetes cluster's configuration, exceeding this value may result in pod eviction from a node.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
memory: 256Mi
limits:
## @param frontend.limits.cpu The maximum CPU that will be made available to the frontend Pod in a given period.
## If this limit is exceeded, execution of the Pod will be paused until the next period.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
cpu: 1000m
## @param frontend.limits.memory The maximum Memory that will be made available to the frontend Pod.
## If this limit is exceeded, processes within the pod that request additional memory may be stopped.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
memory: 512Mi
networkPolicy:
## @param frontend.networkPolicy.enabled If enabled, will provide additional security be limiting network traffic into and out of the pod to only the required endpoints and ports.
## If enabled, the `ingress` parameters need be configured.
## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
##
enabled: false
## @param server.affinity Affinity for Speckle server pods assignment
## @param frontend.affinity Affinity for Speckle frontend pod scheduling
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
##
affinity: {}
## @param server.nodeSelector Node labels for Speckle server pods assignment
## @param frontend.nodeSelector Node labels for Speckle frontend pods scheduling
## ref: https://kubernetes.io/docs/user-guide/node-selection/
##
nodeSelector: {}
## @param server.tolerations Tolerations for Speckle server pods assignment
## @param frontend.tolerations Tolerations for Speckle frontend pods scheduling
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
##
tolerations: []
## @param server.topologySpreadConstraints Spread Constraints for Speckle server pod assignment
## @param frontend.topologySpreadConstraints Spread Constraints for Speckle frontend pod scheduling
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
##
topologySpreadConstraints: []
serviceAccount:
## @param frontend.serviceAccount.create If enabled, a Kubernetes Service Account will be created for this pod.
## This provides additional security by limiting this pod's access to the Kubernetes API and to Secrets on the Kubernetes cluster.
## If disabled, the default Service Account will be used which in most Kubernetes configurations will grant this pod
## access to most secrets on the cluster and access to the Kubernetes API.
##
create: true
## @section Preview Service
## @descriptionStart
## Defines parameters related to the Preview Service component of Speckle.
## @descriptionEnd
##
preview_service:
## @param preview_service.replicas The number of instances of the Preview Service pod to be deployed within the cluster.
##
replicas: 1
requests:
## @param preview_service.requests.cpu The CPU that should be available on a node when scheduling this pod.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
cpu: 500m
## @param preview_service.requests.memory The Memory that should be available on a node when scheduling this pod.
## Depending on the Kubernetes cluster's configuration, exceeding this value may result in pod eviction from a node.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
memory: 2Gi
limits:
## @param preview_service.limits.cpu The maximum CPU that will be made available to the Preview Service Pod in a given period.
## If this limit is exceeded, execution of the Pod will be paused until the next period.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
cpu: 1000m
## @param preview_service.limits.memory The maximum Memory that will be made available to the Preview Service Pod.
## If this limit is exceeded, processes within the pod that request additional memory may be stopped.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
memory: 4Gi
networkPolicy:
## @param preview_service.networkPolicy.enabled If enabled, will provide additional security be limiting network traffic into and out of the pod to only the required endpoints and ports.
## If enabled, the `db.networkPolicy` parameters need be configured.
## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
##
enabled: false
## @param server.affinity Affinity for Speckle server pods assignment
## @param preview_service.affinity Affinity for Speckle Preview Service pod scheduling
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
##
affinity: {}
## @param server.nodeSelector Node labels for Speckle server pods assignment
## @param preview_service.nodeSelector Node labels for Speckle Preview Service pods scheduling
## ref: https://kubernetes.io/docs/user-guide/node-selection/
##
nodeSelector: {}
## @param server.tolerations Tolerations for Speckle server pods assignment
## @param preview_service.tolerations Tolerations for Speckle Preview Service pods scheduling
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
##
tolerations: []
## @param server.topologySpreadConstraints Spread Constraints for Speckle server pod assignment
## @param preview_service.topologySpreadConstraints Spread Constraints for Speckle Preview Service pod scheduling
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
##
topologySpreadConstraints: []
serviceAccount:
## @param preview_service.serviceAccount.create If enabled, a Kubernetes Service Account will be created for this pod.
## This provides additional security by limiting this pod's access to the Kubernetes API and to Secrets on the Kubernetes cluster.
## If disabled, the default Service Account will be used which in most Kubernetes configurations will grant this pod
## access to most secrets on the cluster and access to the Kubernetes API.
##
create: true
## @section Webhook Service
## @descriptionStart
## Defines parameters related to the Webhook Service component of Speckle.
## @descriptionEnd
##
webhook_service:
## @param webhook_service.replicas The number of instances of the Webhook Service pod to be deployed within the cluster.
##
replicas: 1
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 200m
memory: 512Mi
networkPolicy:
enabled: false
## @param server.affinity Affinity for Speckle server pods assignment
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
##
affinity: {}
## @param server.nodeSelector Node labels for Speckle server pods assignment
## ref: https://kubernetes.io/docs/user-guide/node-selection/
##
nodeSelector: {}
## @param server.tolerations Tolerations for Speckle server pods assignment
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
##
tolerations: []
## @param server.topologySpreadConstraints Spread Constraints for Speckle server pod assignment
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
##
topologySpreadConstraints: []
serviceAccount:
create: true
fileimport_service:
replicas: 1
requests:
cpu: 100m
memory: 512Mi
limits:
cpu: 1000m
## @param webhook_service.requests.cpu The CPU that should be available on a node when scheduling this pod.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
cpu: 500m
## @param webhook_service.requests.memory The Memory that should be available on a node when scheduling this pod.
## Depending on the Kubernetes cluster's configuration, exceeding this value may result in pod eviction from a node.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
memory: 2Gi
serviceAccount:
create: true
time_limit_min: 10
limits:
## @param webhook_service.limits.cpu The maximum CPU that will be made available to the Webhook Service Pod in a given period.
## If this limit is exceeded, execution of the Pod will be paused until the next period.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
cpu: 1000m
## @param webhook_service.limits.memory The maximum Memory that will be made available to the Webhook Service Pod.
## If this limit is exceeded, processes within the pod that request additional memory may be stopped.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
memory: 4Gi
networkPolicy:
## @param webhook_service.networkPolicy.enabled If enabled, will provide additional security be limiting network traffic into and out of the pod to only the required endpoints and ports.
## If enabled, the `db.networkPolicy` parameters need be configured.
## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
##
enabled: false
## @param server.affinity Affinity for Speckle server pods assignment
## @param webhook_service.affinity Affinity for Speckle Webhook Service pod scheduling
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
##
affinity: {}
## @param server.nodeSelector Node labels for Speckle server pods assignment
## @param webhook_service.nodeSelector Node labels for Speckle Webhook Service pods scheduling
## ref: https://kubernetes.io/docs/user-guide/node-selection/
##
nodeSelector: {}
## @param server.tolerations Tolerations for Speckle server pods assignment
## @param webhook_service.tolerations Tolerations for Speckle Webhook Service pods scheduling
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
##
tolerations: []
## @param server.topologySpreadConstraints Spread Constraints for Speckle server pod assignment
## @param webhook_service.topologySpreadConstraints Spread Constraints for Speckle Webhook Service pod scheduling
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
##
topologySpreadConstraints: []
serviceAccount:
## @param webhook_service.serviceAccount.create If enabled, a Kubernetes Service Account will be created for this pod.
## This provides additional security by limiting this pod's access to the Kubernetes API and to Secrets on the Kubernetes cluster.
## If disabled, the default Service Account will be used which in most Kubernetes configurations will grant this pod
## access to most secrets on the cluster and access to the Kubernetes API.
##
create: true
monitoring:
## @section File Import Service
## @descriptionStart
## Defines parameters related to the File Import Service component of Speckle.
## @descriptionEnd
##
fileimport_service:
## @param fileimport_service.replicas The number of instances of the FileImport Service pod to be deployed within the cluster.
##
replicas: 1
requests:
## @param fileimport_service.requests.cpu The CPU that should be available on a node when scheduling this pod.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
cpu: 100m
## @param fileimport_service.requests.memory The Memory that should be available on a node when scheduling this pod.
## Depending on the Kubernetes cluster's configuration, exceeding this value may result in pod eviction from a node.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
memory: 512Mi
limits:
## @param fileimport_service.limits.cpu The maximum CPU that will be made available to the FileImport Service Pod in a given period.
## If this limit is exceeded, execution of the Pod will be paused until the next period.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
cpu: 1000m
## @param fileimport_service.limits.memory The maximum Memory that will be made available to the FileImport Service Pod.
## If this limit is exceeded, processes within the pod that request additional memory may be stopped.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
memory: 2Gi
networkPolicy:
## @param fileimport_service.networkPolicy.enabled If enabled, will provide additional security be limiting network traffic into and out of the pod to only the required endpoints and ports.
## If enabled, the `db.networkPolicy` parameters need be configured.
## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
##
enabled: false
## @param fileimport_service.affinity Affinity for Speckle FileImport Service pod scheduling
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
##
affinity: {}
## @param fileimport_service.nodeSelector Node labels for Speckle FileImport Service pods scheduling
## ref: https://kubernetes.io/docs/user-guide/node-selection/
##
nodeSelector: {}
## @param fileimport_service.tolerations Tolerations for Speckle FileImport Service pods scheduling
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
##
tolerations: []
## @param fileimport_service.topologySpreadConstraints Spread Constraints for Speckle FileImport Service pod scheduling
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
##
topologySpreadConstraints: []
serviceAccount:
## @param fileimport_service.serviceAccount.create If enabled, a Kubernetes Service Account will be created for this pod.
## This provides additional security by limiting this pod's access to the Kubernetes API and to Secrets on the Kubernetes cluster.
## If disabled, the default Service Account will be used which in most Kubernetes configurations will grant this pod
## access to most secrets on the cluster and access to the Kubernetes API.
##
create: true
## @param fileimport_service.time_limit_min The maximum time that a file can take to be processed by the FileImport Service.
## Files which take longer than this value to process will be cancelled.
## If you experience repeated issues with small files taking a long time, and increasing CPU and/or memory requests & limits does not help,
## please reach out to Speckle at https://speckle.community/
##
time_limit_min: 10
## @section Monitoring
## @descriptionStart
## Provides Speckle with metrics related to the Postgres database.
## @descriptionEnd
##
monitoring:
## @param monitoring.replicas The number of instances of the Monitoring pod to be deployed within the cluster.
##
replicas: 1
requests:
## @param monitoring.requests.cpu The CPU that should be available on a node when scheduling this pod.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
cpu: 100m
## @param monitoring.requests.memory The Memory that should be available on a node when scheduling this pod.
## Depending on the Kubernetes cluster's configuration, exceeding this value may result in pod eviction from a node.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
memory: 64Mi
limits:
## @param monitoring.limits.cpu The maximum CPU that will be made available to the Monitoring Pod in a given period.
## If this limit is exceeded, execution of the Pod will be paused until the next period.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
cpu: 200m
## @param monitoring.limits.memory The maximum Memory that will be made available to the Monitoring Pod.
## If this limit is exceeded, processes within the pod that request additional memory may be stopped.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
memory: 512Mi
networkPolicy:
## @param monitoring.networkPolicy.enabled If enabled, will provide additional security be limiting network traffic into and out of the pod to only the required endpoints and ports.
## If enabled, the `db.networkPolicy` parameters need be configured.
## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
##
enabled: false
## @param server.affinity Affinity for Speckle server pods assignment
## @param monitoring.affinity Affinity for Speckle Monitoring pod scheduling
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
##
affinity: {}
## @param server.nodeSelector Node labels for Speckle server pods assignment
## @param monitoring.nodeSelector Node labels for Speckle Monitoring pods scheduling
## ref: https://kubernetes.io/docs/user-guide/node-selection/
##
nodeSelector: {}
## @param server.tolerations Tolerations for Speckle server pods assignment
## @param monitoring.tolerations Tolerations for Speckle Monitoring pods scheduling
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
##
tolerations: []
## @param server.topologySpreadConstraints Spread Constraints for Speckle server pod assignment
## @param monitoring.topologySpreadConstraints Spread Constraints for Speckle Monitoring pod scheduling
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
##
topologySpreadConstraints: []
serviceAccount:
## @param monitoring.serviceAccount.create If enabled, a Kubernetes Service Account will be created for this pod.
## This provides additional security by limiting this pod's access to the Kubernetes API and to Secrets on the Kubernetes cluster.
## If disabled, the default Service Account will be used which in most Kubernetes configurations will grant this pod
## access to most secrets on the cluster and access to the Kubernetes API.
##
create: true
## @section Testing
## @descriptionStart
## Defines parameters related to testing that the deployment of Speckle has been successful.
## @descriptionEnd
##
## @param helm_test_enabled If enabled, an additional pod is deployed which verifies some functionality of Speckle to determine if it is deployed correctly
##
helm_test_enabled: true
test:
requests:
## @param test.requests.cpu The CPU that should be available on a node when scheduling this pod.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
cpu: 100m
## @param test.requests.memory The Memory that should be available on a node when scheduling this pod.
## Depending on the Kubernetes cluster's configuration, exceeding this value may result in pod eviction from a node.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
memory: 64Mi
limits:
## @param test.limits.cpu The maximum CPU that will be made available to the Test Pod in a given period.
## If this limit is exceeded, execution of the Pod will be paused until the next period.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
cpu: 200m
## @param test.limits.memory The maximum Memory that will be made available to the Test Pod.
## If this limit is exceeded, processes within the pod that request additional memory may be stopped.
## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
memory: 512Mi
networkPolicy:
## @param test.networkPolicy.enabled If enabled, will provide additional security be limiting network traffic into and out of the pod to only the required endpoints and ports.
## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
##
enabled: false
serviceAccount:
## @param test.serviceAccount.create If enabled, a Kubernetes Service Account will be created for this pod.
## This provides additional security by limiting this pod's access to the Kubernetes API and to Secrets on the Kubernetes cluster.
## If disabled, the default Service Account will be used which in most Kubernetes configurations will grant this pod
## access to most secrets on the cluster and access to the Kubernetes API.
##
create: true
secretName: server-vars
enable_prometheus_monitoring: false
prometheusMonitoring:
namespace: ''
release: ''
cert_manager_issuer: letsencrypt-staging
helm_test_enabled: true
create_namespace: false
file_size_limit_mb: 100
imagePullPolicy: IfNotPresent
ingress:
namespace: ingress-nginx
controllerName: ingress-nginx
+71
View File
@@ -0,0 +1,71 @@
#!/usr/bin/env bash
set -euo pipefail
if ! command -v node &> /dev/null
then
echo "🛑 node could not be found. Please install node (and ensure it is in your PATH) before trying again."
exit 1
fi
if ! command -v git &> /dev/null
then
echo "🛑 git could not be found. Please install git (and ensure it is in your PATH) before trying again."
exit 1
fi
GIT_ROOT="$(git rev-parse --show-toplevel)"
README_GENERATOR_DIR="${GIT_ROOT}/../readme-generator-for-helm"
HELM_DIR="${GIT_ROOT}/../speckle-helm"
HELM_GIT_TARGET_BRANCH="gh-pages"
HELM_GIT_PR_BRANCH="${HELM_GIT_TARGET_BRANCH}-$(openssl rand -hex 6)"
JSON_SCHEMA_PATH="${GIT_ROOT}/utils/helm/speckle-server/values.schema.json"
if [ ! -d "${README_GENERATOR_DIR}" ]; then
echo "🔭 Could not find readme-generator-for-helm in a sibling directory to speckle-server"
echo "👩‍👩‍👧‍👧 Proceeding with cloning readme-generator-for-helm to a sibling directory, readme-generator-for-helm"
git clone git@github.com:bitnami-labs/readme-generator-for-helm.git "${README_GENERATOR_DIR}"
fi
pushd "${README_GENERATOR_DIR}"
echo "✨ Updating to the latest version of readme-generator-for-helm"
git switch main
git pull origin main
popd
if [ ! -d "${HELM_DIR}" ]; then
echo "🔭 Could not find Speckle Helm in a sibling directory (named speckle-helm) to speckle-server"
echo "👩‍👩‍👧‍👧 Proceeding with cloning Speckle's helm repository to a sibling directory, speckle-helm"
git clone git@github.com:specklesystems/helm.git "${HELM_DIR}"
fi
pushd "${HELM_DIR}"
echo "✨ Updating to the latest version of Speckle helm"
git switch main
git pull origin main
echo "🍽 Preparing forked branch for updates"
git switch "${HELM_GIT_TARGET_BRANCH}"
git pull origin "${HELM_GIT_TARGET_BRANCH}"
git switch -c "${HELM_GIT_PR_BRANCH}"
popd
pushd "${GIT_ROOT}"
echo "🏗 Generating the documentation"
node "${README_GENERATOR_DIR}/bin/index.js" \
--config "${GIT_ROOT}/utils/helm/.helm-readme-configuration.json" \
--values "${GIT_ROOT}/utils/helm/speckle-server/values.yaml" \
--readme "${HELM_DIR}/README.md" \
--schema "${JSON_SCHEMA_PATH}"
echo "🐛 Workaround for bug in generator for schema.json: https://github.com/bitnami-labs/readme-generator-for-helm/issues/34"
TMP_OUTPUT="$(mktemp -t speckle-server-json-schema)"
jq --arg replacement 'object' '(.. | .items? | select(.type == "")).type |= $replacement' "${JSON_SCHEMA_PATH}" > "${TMP_OUTPUT}" && mv "${TMP_OUTPUT}" "${JSON_SCHEMA_PATH}"
popd
pushd "${HELM_DIR}"
echo "🌳 Preparing Pull Request for Helm README..."
git add README.md
git commit -m "Updating README with revised parameters from values.yaml"
git push --set-upstream origin "${HELM_GIT_PR_BRANCH}"
echo "🙏 Please create a Pull Request, ❗️selecting gh-pages as the target branch❗️: https://github.com/specklesystems/helm/pull/new/${HELM_GIT_PR_BRANCH}"
popd