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