Will Hunt 082a61f802
Split cache config from queue config. (#902)
* Split out queue and cache config

* Update usages of cache config,

* Update default

* Cleanup

* Make queue optional.

* config updates.

* changelog

* update spec config

* Update tests

* tweak import

* Update default config.

* fixup test

* Update config.sample.yml

Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
Signed-off-by: Will Hunt <will@half-shot.uk>

* Update encryption.md

Signed-off-by: Will Hunt <will@half-shot.uk>

* Clear up worker config

Signed-off-by: Will Hunt <will@half-shot.uk>

* Update src/config/Config.ts

Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
Signed-off-by: Will Hunt <will@half-shot.uk>

* update helm config

* lint

* fix meta

* tidy tidy

* revert logging change

* lint rust

---------

Signed-off-by: Will Hunt <will@half-shot.uk>
Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
2024-03-19 16:45:52 +00:00
..
2023-10-11 13:32:15 +00:00

hookshot

Version: 0.1.13 Type: application AppVersion: 3.2.0 Deploy a Matrix Hookshot instance to Kubernetes

Status: Beta

About

This chart creates a basic Hookshot deployment inside Kubernetes.

Installation

You'll need to have the Helm repository added to your local environment:

helm repo add hookshot https://matrix-org.github.io/matrix-hookshot
helm repo update

Which should allow you to see the Hookshot chart in the repo:

helm search repo hookshot

NAME                            CHART VERSION   APP VERSION     DESCRIPTION               
matrix-org/hookshot             0.1.13          1.16.0          A Helm chart for Kubernetes

Before you can install, however, you'll need to make sure to configure Hookshot properly.

Configuration

You'll need to create a values.yaml for your deployment of this chart. You can use the included defaults as a starting point.

Helm Values

To configure Hookshot-specific parameters, the value .Values.hookshot.config accepts an arbitrary YAML map as configuration. This gets templated into the container by templates/configmap.yaml - thus anything you can set in the Example Configuration can be set here.

Existing configuration

If you have an existing configuration file for Hookshot, you can create a configmap like so:

kubectl create --namespace "your hookshot namespace" configmap hookshot-custom-config --from-file=config.yml --from-file=registration.yml --from-file=passkey.pem

Note that the filenames must remain as listed based on the templating done in templates/configmap.yaml

Once created, you can set .Values.hookshot.existingConfigMap to custom-hookshot-config (or whichever name you chose for your secret) and set .Values.hookshot.config to {} or null to prevent confusion with the default parameters.

Installation

Once you have your values.yaml file ready you can install the chart like this:

helm install hookshot --create-namespace --namespace hookshot matrix-org/hookshot -f values.yaml

And upgrades can be done via:

helm upgrade hookshot --namespace hookshot matrix-org/hookshot -f values.yaml

External access

You'll need to configure your Ingress connectivity according to your environment. This chart should be compatible with most Ingress controllers and has been tested successfully with ingress-nginx and EKS ALB. You should also ensure that you have a way to provision certificates i.e. cert-manager as HTTPS is required for appservice traffic.

Values

Key Type Default Description
affinity object {} Affinity settings for deployment
autoscaling.enabled bool false
fullnameOverride string "" Full name override for helm chart
hookshot.config object {"bridge":{"bindAddress":"0.0.0.0","domain":"example.com","port":9002,"url":"https://example.com"},"generic":{"allowJsTransformationFunctions":true,"enableHttpGet":false,"enabled":true,"urlPrefix":"https://example.com/","userIdPrefix":"_webhooks_","waitForComplete":false},"listeners":[{"bindAddress":"0.0.0.0","port":9000,"resources":["webhooks","widgets"]},{"bindAddress":"0.0.0.0","port":9001,"resources":["metrics"]}],"logging":{"colorize":false,"json":false,"level":"info","timestampFormat":"HH:mm:ss:SSS"},"metrics":{"enabled":true},"passFile":"/data/passkey.pem","widgets":{"addToAdminRooms":false,"branding":{"widgetTitle":"Hookshot Configuration"},"publicUrl":"https://webhook-hookshot.example.com/widgetapi/v1/static","roomSetupWidget":{"addOnInvite":false},"setRoomName":false}} Raw Hookshot configuration. Gets templated into a YAML file and then loaded unless an existingConfigMap is specified.
hookshot.existingConfigMap string nil Name of existing ConfigMap with valid Hookshot configuration
hookshot.passkey string ""
hookshot.registration.as_token string ""
hookshot.registration.hs_token string ""
hookshot.registration.id string "matrix-hookshot"
hookshot.registration.namespaces.rooms list []
hookshot.registration.namespaces.users list []
hookshot.registration.rate_limited bool false
hookshot.registration.sender_localpart string "hookshot"
hookshot.registration.url string "http://example.com"
image.pullPolicy string "IfNotPresent" Pull policy for Hookshot image
image.repository string "halfshot/matrix-hookshot" Repository to pull hookshot image from
image.tag string nil Image tag to pull. Defaults to chart's appVersion value as set in Chart.yaml
imagePullSecrets list [] List of names of k8s secrets to be used as ImagePullSecrets for the pod
ingress.appservice.annotations object {} Annotations for appservice ingress
ingress.appservice.className string "" Ingress class name for appservice ingress
ingress.appservice.enabled bool false Enable ingress for appservice
ingress.appservice.hosts list [] Host configuration for appservice ingress
ingress.appservice.tls list [] TLS configuration for appservice ingress
ingress.webhook.annotations object {} Annotations for webhook ingress
ingress.webhook.className string "" Ingress class name for webhook ingress
ingress.webhook.enabled bool false Enable ingress for webhook
ingress.webhook.hosts list [] Host configuration for webhook ingress
ingress.webhook.tls list [] TLS configuration for webhook ingress
nameOverride string "" Name override for helm chart
nodeSelector object {} Node selector parameters
podAnnotations object {} Extra annotations for Hookshot pod
podSecurityContext object {} Pod security context settings
replicaCount int 1 Number of replicas to deploy. Consequences of using multiple Hookshot replicas currently unknown.
resources object {} Pod resource requests / limits
securityContext object {} Security context settings
service.annotations object {} Extra annotations for service
service.appservice.port int 9002 Appservice port as configured in container
service.labels object {} Extra labels for service
service.metrics.port int 9001 Metrics port as configured in container
service.port int 80 Port for Hookshot service
service.type string "ClusterIP" Service type for Hookshot service
service.webhook.port int 9000 Webhook port as configured in container
serviceAccount.annotations object {} Annotations to add to the service account
serviceAccount.create bool true Specifies whether a service account should be created
serviceAccount.name string "" The name of the service account to use. If not set and create is true, a name is generated using the fullname template
tolerations list [] Tolerations for deployment

Autogenerated from chart metadata using helm-docs v1.11.0