diff --git a/docs/crds/index.mdx b/docs/crds/index.mdx
index 1c1cccc..db6aacf 100644
--- a/docs/crds/index.mdx
+++ b/docs/crds/index.mdx
@@ -18,39 +18,39 @@ Typesense Kubernetes Operator is controlling the lifecycle of multiple Typesense
### TypesenseClusterSpec
-| Name | Description | Optional | Default |
+| Name | Description | Required | Default |
| -------------------------------------- | ------------------------------------------------------------------------------ | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| image | Typesense image | | |
-| imagePullSecrets | reference to the private registry authentication `Secret` | 🟢 | |
-| adminApiKey | reference to the bootstrap `Secret` | 🟢 | |
-| replicas | size of the cluster (allowed 1, 3, 5 or 7) | 🟢 | 3 |
-| apiPort | REST/API port | 🟢 | 8108 |
-| peeringPort | peering port | 🟢 | 8107 |
-| resetPeersOnError | automatic reset of peers on error | 🟢 | true |
-| enableCors | enables CORS | 🟢 | false |
-| corsDomains | comma separated list of domains allowed for CORS | 🟢 | |
-| resources | resources (request & limit) | 🟢 | 1000m/100m
512Mi/256Mi |
-| healthProbeTimeoutInMilliseconds | timeout for waiting on the health endpoint response | 🟢 | 500 |
-| affinity | group of affinity scheduling rules | 🟢 | |
-| nodeSelector | node selection constraint | 🟢 | |
-| tolerations | schedule pods with matching taints | 🟢 | |
-| additionalServerConfiguration | a reference to a `ConfigMap` holding extra configuration | 🟢 | |
-| statefulSetAnnotations | user-defined annotations | 🟢 | |
-| podAnnotations | user-defined annotations | 🟢 | |
-| podsInheritStatefulSetAnnotations | propagate all `StatefulSet` annotations to `Pods` | 🟢 | false |
-| serviceAnnotations (deprecated) | user-defined annotations | 🟢 | |
-| service | check `ServiceSpec` [below](#servicespec-optional) | | |
-| storage | check `StorageSpec` [below](#storagespec-optional) | | |
-| ingress | check `IngressSpec` [below](#ingressspec-deprecated) | 🟢 | |
-| httpRoutes | array of `HttpRouteSpec`; check [below](#httproutespec-optional) | 🟢 | |
-| scrapers | array of `DocSearchScraperSpec`; check [below](#docsearchscraperspec-optional) | 🟢 | |
-| metrics | check `MetricsSpec` [below](#metricsspec-optional) | 🟢 | |
-| healthcheck | check `HealthCheckSpec` [below](#healthcheckspec-optional) | 🟢 | |
-| topologySpreadConstraints | how to spread a group of pods across topology domains | 🟢 | |
-| priorityClassName | reference to a pod priority and preemption class | 🟢 | |
-| securityContext | check `SecurityContextSpec` [below](#metricsspec-optional) | 🟢 | |
-| ignoreAnnotationsFromExternalMutations | annotations to ignore when calculating hash (e.g. cattle.io/) | 🟢 | |
-| incrementalQuorumRecovery | add nodes gradually to the `StatefulSet` while recovering | 🟢 | false |
+| image | Typesense image | 🔴 | |
+| imagePullSecrets | reference to the private registry authentication `Secret` | | |
+| adminApiKey | reference to the bootstrap `Secret` | | |
+| replicas | size of the cluster (allowed 1, 3, 5 or 7) | | 3 |
+| apiPort | REST/API port | | 8108 |
+| peeringPort | peering port | | 8107 |
+| resetPeersOnError | automatic reset of peers on error | | true |
+| enableCors | enables CORS | | false |
+| corsDomains | comma separated list of domains allowed for CORS | | |
+| resources | resources (request & limit) | | 1000m/100m
512Mi/256Mi |
+| healthProbeTimeoutInMilliseconds | timeout for waiting on the health endpoint response | | 500 |
+| affinity | group of affinity scheduling rules | | |
+| nodeSelector | node selection constraint | | |
+| tolerations | schedule pods with matching taints | | |
+| additionalServerConfiguration | a reference to a `ConfigMap` holding extra configuration | | |
+| statefulSetAnnotations | user-defined annotations | | |
+| podAnnotations | user-defined annotations | | |
+| podsInheritStatefulSetAnnotations | propagate all `StatefulSet` annotations to `Pods` | | false |
+| serviceAnnotations (deprecated) | user-defined annotations | | |
+| service | check `ServiceSpec` [below](#servicespec-optional) | 🔴 | |
+| storage | check `StorageSpec` [below](#storagespec-optional) | 🔴 | |
+| ingress | check `IngressSpec` [below](#ingressspec-deprecated) | | |
+| httpRoutes | array of `HttpRouteSpec`; check [below](#httproutespec-optional) | | |
+| scrapers | array of `DocSearchScraperSpec`; check [below](#docsearchscraperspec-optional) | | |
+| metrics | check `MetricsSpec` [below](#metricsspec-optional) | | |
+| healthcheck | check `HealthCheckSpec` [below](#healthcheckspec-optional) | | |
+| topologySpreadConstraints | how to spread a group of pods across topology domains | | |
+| priorityClassName | reference to a pod priority and preemption class | | |
+| securityContext | check `SecurityContextSpec` [below](#metricsspec-optional) | | |
+| ignoreAnnotationsFromExternalMutations | annotations to ignore when calculating hash (e.g. cattle.io/) | | |
+| incrementalQuorumRecovery | add nodes gradually to the `StatefulSet` while recovering | | false |
:::note
@@ -62,11 +62,11 @@ Typesense Kubernetes Operator is controlling the lifecycle of multiple Typesense
### ServiceSpec (optional)
-| Name | Description | Optional | Default |
+| Name | Description | Required | Default |
| --------------------- | ------------------------ | :------: | ----------- |
-| type | type of `Service` | 🟢 | `ClusterIP` |
-| externalTrafficPolicy | external traffic policy | 🟢 | `Cluster` |
-| annotations | user-defined annotations | 🟢 | |
+| type | type of `Service` | | `ClusterIP` |
+| externalTrafficPolicy | external traffic policy | | `Cluster` |
+| annotations | user-defined annotations | | |
:::important
As of **v0.4.1-rc.4**, `ServiceSpec` has been introduced:
@@ -86,12 +86,12 @@ which may obscure the client's source IP, or `Local`, which preserves the client
### StorageSpec (optional)
-| Name | Description | Optional | Default |
+| Name | Description | Required | Default |
| ---------------- | ------------------------------- | :------: | --------------- |
-| size | size of the underlying `PV` | 🟢 | 100Mi |
-| storageClassName | `StorageClass` to be used | | standard |
-| accessMode | access mode for underlying `PV` | | `ReadWriteOnce` |
-| annotations | user-defined annotations | 🟢 | |
+| size | size of the underlying `PV` | | 100Mi |
+| storageClassName | `StorageClass` to be used | 🔴 | standard |
+| accessMode | access mode for underlying `PV` | 🔴 | `ReadWriteOnce` |
+| annotations | user-defined annotations | | |
:::important
As of **v0.3.6**, storage `accessMode` is introduced that supports `ReadWriteOnce` and `ReadWriteMany`.
@@ -138,32 +138,32 @@ _-The Ingress API is no longer being developed, and will have no further changes
:::
-| Name | Description | Optional | Default |
+| Name | Description | Required | Default |
| ---------------------- | -------------------------------------------------------------------------------- | :------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| image | nginx image to use | 🟢 | [nginx:alpine](https://hub.docker.com/layers/library/nginx/alpine/images/sha256-e7e5b7fa7a0b1ab2f59d6066092a6d35984864cc8baf2cff7c088ee409657e57) |
-| referer | FQDN allowed to access reverse proxy | 🟢 | empty or the value of `spec.corsDomains` if set |
-| HttpDirectives | nginx proxy HttpDirectives | 🟢 | |
-| serverDirectives | nginx proxy ServerDirectives | 🟢 | |
-| locationDirectives | nginx proxy LocationDirectives | 🟢 | |
-| host | `Ingress` host | | |
-| path | HTTP `Ingress` path | 🟢 | / |
-| pathType | interpretation of the path matching | 🟢 | `ImplementationSpecific` |
-| clusterIssuer | cert-manager `ClusterIssuer` | 🟢 | |
-| tlsSecretName | TLS `Secret` name to use | 🟢 | |
-| ingressClassName | `Ingress` to be used | | |
-| serviceAnnotations | user-defined annotations | 🟢 | |
-| labels | user-defined labels | 🟢 | |
-| annotations | user-defined annotations | 🟢 | |
-| resources | resources (request & limit) | 🟢 | 150m/100m
64Mi/32Mi |
-| readOnlyRootFilesystem | check `ReadOnlyRootFilesystemSpec` [below](#readonlyrootfilesystemspec-optional) | 🟢 | |
+| image | nginx image to use | | [nginx:alpine](https://hub.docker.com/layers/library/nginx/alpine/images/sha256-e7e5b7fa7a0b1ab2f59d6066092a6d35984864cc8baf2cff7c088ee409657e57) |
+| referer | FQDN allowed to access reverse proxy | | empty or the value of `spec.corsDomains` if set |
+| HttpDirectives | nginx proxy HttpDirectives | | |
+| serverDirectives | nginx proxy ServerDirectives | | |
+| locationDirectives | nginx proxy LocationDirectives | | |
+| host | `Ingress` host | 🔴 | |
+| path | HTTP `Ingress` path | | / |
+| pathType | interpretation of the path matching | | `ImplementationSpecific` |
+| clusterIssuer | cert-manager `ClusterIssuer` | | |
+| tlsSecretName | TLS `Secret` name to use | | |
+| ingressClassName | `Ingress` to be used | 🔴 | |
+| serviceAnnotations | user-defined annotations | | |
+| labels | user-defined labels | | |
+| annotations | user-defined annotations | | |
+| resources | resources (request & limit) | | 150m/100m
64Mi/32Mi |
+| readOnlyRootFilesystem | check `ReadOnlyRootFilesystemSpec` [below](#readonlyrootfilesystemspec-optional) | | |
#### ReadOnlyRootFilesystemSpec (optional)
-| Name | Description | Optional | Default |
+| Name | Description | Required | Default |
| --------------- | ---------------------------------- | :------: | ----------------------------------------------- |
-| securityContext | security conf for the container | 🟢 | `SecurityContext{ReadOnlyRootFilesystem: true}` |
-| volumes | additional volumes | 🟢 | |
-| volumeMounts | additional mounts in the container | 🟢 | |
+| securityContext | security conf for the container | | `SecurityContext{ReadOnlyRootFilesystem: true}` |
+| volumes | additional volumes | | |
+| volumeMounts | additional mounts in the container | | |
:::note
1️⃣ This feature makes use of the existence of [cert-manager](https://cert-manager.io/) in the cluster, but **does not** actively enforce it with an error. If no clusterIssuer is specified a valid certificate must be stored in a secret and the secret name must be provided in the tlsSecretName config.
@@ -179,17 +179,17 @@ It is highly recommended, from this operator's perspective, to always expose Typ
### HttpRouteSpec (optional)
-| Name | Description | Optional | Default |
+| Name | Description | Required | Default |
| -------------- | -------------------------------------------------------------------------------------- | :------: | ------------------------ |
-| name | name of the route | | |
-| enabled | enable this route | 🟢 | true |
-| parentRef | reference to the parent `Gateway`; check `GatewayParentRef` [below](#gatewayparentref) | | |
-| hostnames | array of hostnames to match for this route | | |
-| path | path to match for this route | 🟢 | / |
-| pathType | interpretation of the path matching | 🟢 | `ImplementationSpecific` |
-| labels | user-defined labels | 🟢 | |
-| annotations | user-defined annotations | 🟢 | |
-| referenceGrant | enable cross-namespace reference to the parent `Gateway` | 🟢 | false |
+| name | name of the route | 🔴 | |
+| enabled | enable this route | | true |
+| parentRef | reference to the parent `Gateway`; check `GatewayParentRef` [below](#gatewayparentref) | 🔴 | |
+| hostnames | array of hostnames to match for this route | 🔴 | |
+| path | path to match for this route | | / |
+| pathType | interpretation of the path matching | | `ImplementationSpecific` |
+| labels | user-defined labels | | |
+| annotations | user-defined annotations | | |
+| referenceGrant | enable cross-namespace reference to the parent `Gateway` | | false |
:::warning
@@ -211,23 +211,23 @@ will not be automatically deleted. It can be safely deleted manually, if not nee
#### GatewayParentRef
-| Name | Description | Optional | Default |
+| Name | Description | Required | Default |
| ----------- | -------------------------------------------------------------- | :------: | ------- |
-| name | name of the parent `Gateway` | | |
-| namespace | namespace of the parent `Gateway` | | |
-| sectionName | section of the parent `Gateway` to route to (e.g. "websecure") | 🟢 | |
+| name | name of the parent `Gateway` | 🔴 | |
+| namespace | namespace of the parent `Gateway` | 🔴 | |
+| sectionName | section of the parent `Gateway` to route to (e.g. "websecure") | | |
### DocSearchScraperSpec (optional)
-| Name | Description | Optional | Default |
+| Name | Description | Required | Default |
| ----------------- | ---------------------------------------------------- | :------: | ----------------------------------------- |
-| name | name of the scraper | | |
-| image | container image to use | 🟢 | `typesense/docsearch-scraper:0.12.0.rc14` |
-| host | target | 🟢 | |
-| protocol | protocol to use (`http` or `https`) | 🟢 | `https` |
-| config | config to use (bypass the autogenerated one ) | 🟢 | |
-| schedule | cron expression; no timezone; no seconds | | |
-| authConfiguration | a reference to a `Secret` holding auth configuration | 🟢 | |
+| name | name of the scraper | 🔴 | |
+| image | container image to use | | `typesense/docsearch-scraper:0.12.0.rc14` |
+| host | target | | |
+| protocol | protocol to use (`http` or `https`) | | `https` |
+| config | config to use (bypass the autogenerated one ) | | |
+| schedule | cron expression; no timezone; no seconds | 🔴 | |
+| authConfiguration | a reference to a `Secret` holding auth configuration | | |
:::note
If you need to scrape a target that requires authentication, you can add the authentication configuration as environment variables via `authConfiguration`. In order to see which options are supported currently out of the box, consult the official documentation: https://typesense.org/docs/guide/docsearch.html#authentication
@@ -249,13 +249,13 @@ You can follow the related thread in the Typesense Slack channel [here](https://
### MetricsSpec (optional)
-| Name | Description | Optional | Default |
+| Name | Description | Required | Default |
| --------- | ---------------------------------------------------------- | :------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| image | container image to use | 🟢 | [quay.io/akyriako/typesense-prometheus-exporter:0.1.9](https://github.com/akyriako/typesense-prometheus-exporter) |
-| release | Prometheus release to become a target of | | |
-| interval | interval in _seconds_ between two scrapes | 🟢 | 15 |
-| resources | resources (request & limit) | 🟢 | 100m/100m
64Mi/32Mi |
-| logLevel | defines the log [Level](https://pkg.go.dev/log/slog#Level) | 🟢 | 0 |
+| image | container image to use | | [quay.io/akyriako/typesense-prometheus-exporter:0.1.9](https://github.com/akyriako/typesense-prometheus-exporter) |
+| release | Prometheus release to become a target of | 🔴 | |
+| interval | interval in _seconds_ between two scrapes | | 15 |
+| resources | resources (request & limit) | | 100m/100m
64Mi/32Mi |
+| logLevel | defines the log [Level](https://pkg.go.dev/log/slog#Level) | | 0 |
:::info
`logLevel` follows the `slog/Level` type and only accepts one the following values `[-4, 0, 4, 8]`. For more details, see https://pkg.go.dev/log/slog#Level
@@ -288,11 +288,11 @@ release=promstack
### HealthCheckSpec (optional)
-| Name | Description | Optional | Default |
+| Name | Description | Required | Default |
| --------- | ---------------------------------------------------------- | :------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| image | container image to use | 🟢 | [quay.io/akyriako/typesense-healthcheck:0.1.8](https://github.com/akyriako/typesense-healthcheck) |
-| resources | resources (request & limit) | 🟢 | 100m/100m
64Mi/32Mi |
-| logLevel | defines the log [Level](https://pkg.go.dev/log/slog#Level) | 🟢 | 0 |
+| image | container image to use | | [quay.io/akyriako/typesense-healthcheck:0.1.8](https://github.com/akyriako/typesense-healthcheck) |
+| resources | resources (request & limit) | | 100m/100m
64Mi/32Mi |
+| logLevel | defines the log [Level](https://pkg.go.dev/log/slog#Level) | | 0 |
:::info
`logLevel` follows the `slog/Level` type and only accepts one the following values `[-4, 0, 4, 8]`. For more details, see https://pkg.go.dev/log/slog#Level
@@ -300,12 +300,12 @@ release=promstack
### SecurityContextSpec (optional)
-| Name | Description | Optional | Default |
+| Name | Description | Required | Default |
| ----------- | --------------------------- | :------: | ------------- |
-| pod | pod security contenxt | 🟢 | _check specs_ |
-| typesense | container security contenxt | 🟢 | |
-| healthcheck | container security contenxt | 🟢 | |
-| metric | container security contenxt | 🟢 | |
+| pod | pod security contenxt | | _check specs_ |
+| typesense | container security contenxt | | |
+| healthcheck | container security contenxt | | |
+| metric | container security contenxt | | |
## TypesenseClusterStatus