From b715b7635db523c0e4ae3e2df45ee8129e43d1cb Mon Sep 17 00:00:00 2001 From: Peggie Date: Thu, 13 Aug 2026 13:23:37 +0200 Subject: [PATCH 1/4] chore(main): release 0.0.18 Signed-off-by: Peggie --- .release-please-manifest.json | 2 +- CHANGELOG.md | 42 ++++++++++++++++++++++ documentation/web/docs/user/helm_chart.mdx | 10 +++--- documentation/web/docs/user/klio_server.md | 4 +-- documentation/web/docs/user/walplayer.md | 4 +-- operator/dist/chart/Chart.yaml | 4 +-- operator/dist/chart/values.yaml | 4 +-- operator/internal/cnpgi/metadata.go | 2 +- 8 files changed, 57 insertions(+), 15 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index e4df6aab..233e87d2 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.17" + ".": "0.0.18" } diff --git a/CHANGELOG.md b/CHANGELOG.md index c0f59e16..61e226af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,47 @@ # Changelog +## [0.0.18](https://github.com/cloudnative-pg/klio/compare/v0.0.17...v0.0.18) (2026-08-13) + + +### Features + +* **core:** Export Kopia traces via OTLP/gRPC (EnterpriseDB/klio[#1679](https://github.com/cloudnative-pg/klio/issues/1679)) ([245da93](https://github.com/cloudnative-pg/klio/commit/245da93ebdc24d0f301ceaa26134d143ac1cc732)) +* **ip:** Contribute Klio to CloudNativePG under the Apache License 2.0 (EnterpriseDB/klio[#1841](https://github.com/cloudnative-pg/klio/issues/1841)) ([a3dcd13](https://github.com/cloudnative-pg/klio/commit/a3dcd1377934dbbe6f025347488aa8c5918c41bd)) +* **observability:** Fill Grafana dashboard gaps for WAL and backup metrics (EnterpriseDB/klio[#1793](https://github.com/cloudnative-pg/klio/issues/1793)) ([c88d2f8](https://github.com/cloudnative-pg/klio/commit/c88d2f8fe1ee3b59360c83da0900667907f09694)) +* **operator:** Add preflight check operator certification (EnterpriseDB/klio[#1767](https://github.com/cloudnative-pg/klio/issues/1767)) ([295ea20](https://github.com/cloudnative-pg/klio/commit/295ea203c1e3dd9e9f1dc9b942944a47ace91528)) +* Switch from UBI images to Debian based ones ([#90](https://github.com/cloudnative-pg/klio/issues/90)) ([af333a5](https://github.com/cloudnative-pg/klio/commit/af333a5ecde3a469df95560384fe67eb68f2fc5f)) + + +### Bug Fixes + +* **ci:** Upload openshift e2e logs from the correct path (EnterpriseDB/klio[#1808](https://github.com/cloudnative-pg/klio/issues/1808)) ([e2fb58e](https://github.com/cloudnative-pg/klio/commit/e2fb58ef0d4dcc7ed3c67ac8c972d9770366cc90)) +* **core:** Archive partial WAL segments to tier2 and restore from them (EnterpriseDB/klio[#1747](https://github.com/cloudnative-pg/klio/issues/1747)) ([924914e](https://github.com/cloudnative-pg/klio/commit/924914e2df1ac73650ad455da32bd7e1a605a887)) +* **deps:** Align semconv to v1.43.0 in core and operator ([cd74155](https://github.com/cloudnative-pg/klio/commit/cd74155fa65e1eca9a7428b33fe7ac8f67f0c0f0)) +* **deps:** Pin jsm.go to main for StreamPager cross-delivery fix (EnterpriseDB/klio[#1806](https://github.com/cloudnative-pg/klio/issues/1806)) ([ae18c70](https://github.com/cloudnative-pg/klio/commit/ae18c701ce755b5d07e9379e113ef3459af9c80b)) +* **deps:** Update all non-major go dependencies ([eea11e5](https://github.com/cloudnative-pg/klio/commit/eea11e5b1a32ee1852726ab9ad1a08c25f69e613)) +* **deps:** Update all non-major go dependencies ([b501f13](https://github.com/cloudnative-pg/klio/commit/b501f132c371abb63eb22ddd1ac48ea0c74566d8)) +* **deps:** Update all non-major go dependencies (EnterpriseDB/klio[#1780](https://github.com/cloudnative-pg/klio/issues/1780)) ([c76337c](https://github.com/cloudnative-pg/klio/commit/c76337c45833d14b743fa9967bfd9fbf72409bad)) +* **deps:** Update all non-major go dependencies (EnterpriseDB/klio[#1797](https://github.com/cloudnative-pg/klio/issues/1797)) ([21c34a4](https://github.com/cloudnative-pg/klio/commit/21c34a4727e29efc45ea901a0cc0c3ca4f331008)) +* **deps:** Update all non-major go dependencies (EnterpriseDB/klio[#1833](https://github.com/cloudnative-pg/klio/issues/1833)) ([8bbd83f](https://github.com/cloudnative-pg/klio/commit/8bbd83fbf5e1c29983902a0f04a91459458caceb)) +* **deps:** Update all non-major go dependencies (EnterpriseDB/klio[#1845](https://github.com/cloudnative-pg/klio/issues/1845)) ([762f70d](https://github.com/cloudnative-pg/klio/commit/762f70d20d2124db797e117003c31b66f21fcb8d)) +* **deps:** Update all non-major go dependencies (EnterpriseDB/klio[#1848](https://github.com/cloudnative-pg/klio/issues/1848)) ([ef9330e](https://github.com/cloudnative-pg/klio/commit/ef9330e8602c567b3feee4acc4f4551f57ee6e97)) +* **deps:** Update documentation dependencies to v3.10.2 (EnterpriseDB/klio[#1798](https://github.com/cloudnative-pg/klio/issues/1798)) ([14c4161](https://github.com/cloudnative-pg/klio/commit/14c4161aec7d10fe4585e8e5555e3928f0cc4fbf)) +* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 0552b9c (EnterpriseDB/klio[#1859](https://github.com/cloudnative-pg/klio/issues/1859)) ([e01f8d6](https://github.com/cloudnative-pg/klio/commit/e01f8d612dd2462055b05a38671db1304418955d)) +* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 0603a9c ([eeb3f8f](https://github.com/cloudnative-pg/klio/commit/eeb3f8f224df0a20b58390537f0a722145dbd9a5)) +* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 1a79065 (EnterpriseDB/klio[#1803](https://github.com/cloudnative-pg/klio/issues/1803)) ([42c7f9c](https://github.com/cloudnative-pg/klio/commit/42c7f9c8135ed3ff31fa9318347b06906229ed02)) +* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 2af6cc5 (EnterpriseDB/klio[#1842](https://github.com/cloudnative-pg/klio/issues/1842)) ([a8c97ed](https://github.com/cloudnative-pg/klio/commit/a8c97eda63eefe671bda9b74cb837c2e96044415)) +* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 308f3ea (EnterpriseDB/klio[#1794](https://github.com/cloudnative-pg/klio/issues/1794)) ([2d7ba7b](https://github.com/cloudnative-pg/klio/commit/2d7ba7b0a0be24ec7a58d7a82c05610228c498dc)) +* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 83bfc38 (EnterpriseDB/klio[#1865](https://github.com/cloudnative-pg/klio/issues/1865)) ([e418675](https://github.com/cloudnative-pg/klio/commit/e4186751dae758e45e898802da90ad28e5f76648)) +* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 91c9e02 (EnterpriseDB/klio[#1810](https://github.com/cloudnative-pg/klio/issues/1810)) ([a5c8de1](https://github.com/cloudnative-pg/klio/commit/a5c8de1dac06f2daefeac8416aa323e1b2904e9c)) +* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to e39ec6b (EnterpriseDB/klio[#1822](https://github.com/cloudnative-pg/klio/issues/1822)) ([9238238](https://github.com/cloudnative-pg/klio/commit/92382385048336e7de2578a1673fc4e964d5d124)) +* **deps:** Update kubernetes monorepo to v0.36.3 (EnterpriseDB/klio[#1854](https://github.com/cloudnative-pg/klio/issues/1854)) ([4189cfe](https://github.com/cloudnative-pg/klio/commit/4189cfeb9925a0ed3619d268c720132d5f96e5a5)) +* **deps:** Update module github.com/aws/aws-sdk-go-v2/service/s3 to v1.105.2 (EnterpriseDB/klio[#1816](https://github.com/cloudnative-pg/klio/issues/1816)) ([d66d8e1](https://github.com/cloudnative-pg/klio/commit/d66d8e1c60cce79d5394b688a93b5d80668d7ef3)) +* **deps:** Update module github.com/nats-io/nats-server/v2 to v2.14.5 ([#92](https://github.com/cloudnative-pg/klio/issues/92)) ([26d6449](https://github.com/cloudnative-pg/klio/commit/26d6449b7edd740fa2e1a8095804c31eed50cf1a)) +* **deps:** Update module go.yaml.in/yaml/v3 to v3.0.5 (EnterpriseDB/klio[#1874](https://github.com/cloudnative-pg/klio/issues/1874)) ([2415112](https://github.com/cloudnative-pg/klio/commit/241511233e75462bbcde935cd69d46701635903e)) +* **deps:** Update module google.golang.org/grpc to v1.82.1 (EnterpriseDB/klio[#1813](https://github.com/cloudnative-pg/klio/issues/1813)) ([7a8df3c](https://github.com/cloudnative-pg/klio/commit/7a8df3cc948d3a439115ba8d82aec9e734b20c3c)) +* **operator:** Drop stale klio-wal from container allowlist ([#86](https://github.com/cloudnative-pg/klio/issues/86)) ([f71c6af](https://github.com/cloudnative-pg/klio/commit/f71c6aff73fe7751bd4e71fef9fb318ed625a695)), closes [#68](https://github.com/cloudnative-pg/klio/issues/68) +* **wal:** Archive timeline history files to tier-2 (EnterpriseDB/klio[#1762](https://github.com/cloudnative-pg/klio/issues/1762)) ([20afc6f](https://github.com/cloudnative-pg/klio/commit/20afc6f09b34b7feb7aa17f9d96c91b0a8586076)) + ## [0.0.17](https://github.com/EnterpriseDB/klio/compare/v0.0.16...v0.0.17) (2026-07-10) diff --git a/documentation/web/docs/user/helm_chart.mdx b/documentation/web/docs/user/helm_chart.mdx index 9131b988..a6e758c6 100644 --- a/documentation/web/docs/user/helm_chart.mdx +++ b/documentation/web/docs/user/helm_chart.mdx @@ -64,7 +64,7 @@ Deploy the Klio Operator to your cluster: ```sh helm install klio-operator \ oci://ghcr.io/cloudnative-pg/klio-operator-chart \ - --version 0.0.17 \ + --version 0.0.18 \ --namespace cnpg-system \ -f values.yaml ``` @@ -104,7 +104,7 @@ default values, and understand what resources it will create: ```sh helm pull oci://ghcr.io/cloudnative-pg/klio-operator-chart \ - --version 0.0.17 \ + --version 0.0.18 \ --untar ``` @@ -158,7 +158,7 @@ manifests: ```sh helm pull oci://ghcr.io/cloudnative-pg/klio-operator-chart \ - --version 0.0.17 \ + --version 0.0.18 \ --untar ``` @@ -197,7 +197,7 @@ Helm upgrade command: ```sh helm upgrade klio-operator \ oci://ghcr.io/cloudnative-pg/klio-operator-chart \ - --version 0.0.17 \ + --version 0.0.18 \ --namespace cnpg-system \ -f values.yaml ``` @@ -228,7 +228,7 @@ released. Update the `spec.image` field with the new image reference: ```sh kubectl patch server -n \ --type merge \ - -p '{"spec":{"image":"ghcr.io/cloudnative-pg/klio:v0.0.17"}}' + -p '{"spec":{"image":"ghcr.io/cloudnative-pg/klio:v0.0.18"}}' ``` diff --git a/documentation/web/docs/user/klio_server.md b/documentation/web/docs/user/klio_server.md index 92a26bbe..3c8830bd 100644 --- a/documentation/web/docs/user/klio_server.md +++ b/documentation/web/docs/user/klio_server.md @@ -318,7 +318,7 @@ metadata: namespace: default spec: # Container image for the Klio server - image: ghcr.io/cloudnative-pg/klio:v0.0.17 + image: ghcr.io/cloudnative-pg/klio:v0.0.18 imagePullPolicy: IfNotPresent imagePullSecrets: [] # Add image pull secrets if needed @@ -497,7 +497,7 @@ spec: mode: read-only # Container image for the Klio server - image: ghcr.io/cloudnative-pg/klio:v0.0.17 + image: ghcr.io/cloudnative-pg/klio:v0.0.18 imagePullPolicy: IfNotPresent # TLS configuration diff --git a/documentation/web/docs/user/walplayer.md b/documentation/web/docs/user/walplayer.md index 8a75eab3..2e888e6e 100644 --- a/documentation/web/docs/user/walplayer.md +++ b/documentation/web/docs/user/walplayer.md @@ -215,7 +215,7 @@ spec: initContainers: # Generate synthetic WAL files - name: generate-wals - image: ghcr.io/cloudnative-pg/klio:v0.0.17 + image: ghcr.io/cloudnative-pg/klio:v0.0.18 imagePullPolicy: Always command: - /usr/bin/klio @@ -230,7 +230,7 @@ spec: containers: # Play WAL files to the Klio server - name: play-wals - image: ghcr.io/cloudnative-pg/klio:v0.0.17 + image: ghcr.io/cloudnative-pg/klio:v0.0.18 imagePullPolicy: Always command: - /usr/bin/klio diff --git a/operator/dist/chart/Chart.yaml b/operator/dist/chart/Chart.yaml index 877e5ff1..68f08c18 100644 --- a/operator/dist/chart/Chart.yaml +++ b/operator/dist/chart/Chart.yaml @@ -10,8 +10,8 @@ keywords: - backup - CloudNativePG type: application -version: 0.0.17 -appVersion: 0.0.17 +version: 0.0.18 +appVersion: 0.0.18 home: https://github.com/cloudnative-pg/klio maintainers: - name: fcanovai diff --git a/operator/dist/chart/values.yaml b/operator/dist/chart/values.yaml index e61d9e8a..3f4ad388 100644 --- a/operator/dist/chart/values.yaml +++ b/operator/dist/chart/values.yaml @@ -24,7 +24,7 @@ controllerManager: # -- The image to use for the controller manager container. repository: ghcr.io/cloudnative-pg/klio-operator # -- The tag to use for the controller manager container image. - tag: v0.0.17 # x-release-please-version + tag: v0.0.18 # x-release-please-version # -- The controller manager container imagePullPolicy. pullPolicy: Always # -- The list of imagePullSecrets. @@ -33,7 +33,7 @@ controllerManager: # Set OTEL_* variables here to enable OpenTelemetry export. # See the OpenTelemetry Observability page in the documentation. env: { - SIDECAR_IMAGE: "ghcr.io/cloudnative-pg/klio:v0.0.17" # x-release-please-version + SIDECAR_IMAGE: "ghcr.io/cloudnative-pg/klio:v0.0.18" # x-release-please-version } # -- Liveness probe configuration. livenessProbe: diff --git a/operator/internal/cnpgi/metadata.go b/operator/internal/cnpgi/metadata.go index d870dfdf..8a0baea2 100644 --- a/operator/internal/cnpgi/metadata.go +++ b/operator/internal/cnpgi/metadata.go @@ -28,7 +28,7 @@ import ( // data is the metadata of this plugin. var data = identity.GetPluginMetadataResponse{ //nolint: gochecknoglobals Name: klioconfig.PluginName, - Version: "0.0.17", // x-release-please-version + Version: "0.0.18", // x-release-please-version DisplayName: "Klio", ProjectUrl: "", RepositoryUrl: "", From ba438945df3b0b2add06a22e6c667aab50203e64 Mon Sep 17 00:00:00 2001 From: Francesco Canovai Date: Thu, 13 Aug 2026 13:50:19 +0200 Subject: [PATCH 2/4] docs: update default helm chart values Signed-off-by: Francesco Canovai --- documentation/web/docs/user/_helm_chart_values.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/web/docs/user/_helm_chart_values.md b/documentation/web/docs/user/_helm_chart_values.md index 4274cf15..67797466 100644 --- a/documentation/web/docs/user/_helm_chart_values.md +++ b/documentation/web/docs/user/_helm_chart_values.md @@ -10,11 +10,11 @@ | controllerManager.affinity | object | `{}` | Affinity rules for the operator deployment. | | controllerManager.manager.args | list | `["--metrics-bind-address=:8443","--leader-elect","--health-probe-bind-address=:8081","--plugin-server-cert=/pluginServer/tls.crt","--plugin-server-key=/pluginServer/tls.key","--plugin-client-cert=/pluginClient/tls.crt","--plugin-server-address=:9090"]` | List of command line arguments to pass to the controller manager. | | controllerManager.manager.containerSecurityContext | object | `{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]}}` | The security context for the controller manager container. | -| controllerManager.manager.env | object | `{"SIDECAR_IMAGE":"ghcr.io/cloudnative-pg/klio:v0.0.17"}` | The environment variables to set in the controller manager container. Set OTEL_* variables here to enable OpenTelemetry export. See the OpenTelemetry Observability page in the documentation. | +| controllerManager.manager.env | object | `{"SIDECAR_IMAGE":"ghcr.io/cloudnative-pg/klio:v0.0.18"}` | The environment variables to set in the controller manager container. Set OTEL_* variables here to enable OpenTelemetry export. See the OpenTelemetry Observability page in the documentation. | | controllerManager.manager.image.pullPolicy | string | `"Always"` | The controller manager container imagePullPolicy. | | controllerManager.manager.image.pullSecrets | list | `[]` | The list of imagePullSecrets. | | controllerManager.manager.image.repository | string | `"ghcr.io/cloudnative-pg/klio-operator"` | The image to use for the controller manager container. | -| controllerManager.manager.image.tag | string | `"v0.0.17"` | The tag to use for the controller manager container image. | +| controllerManager.manager.image.tag | string | `"v0.0.18"` | The tag to use for the controller manager container image. | | controllerManager.manager.livenessProbe | object | `{"httpGet":{"path":"/healthz","port":8081},"initialDelaySeconds":15,"periodSeconds":20}` | Liveness probe configuration. | | controllerManager.manager.readinessProbe | object | `{"httpGet":{"path":"/readyz","port":8081},"initialDelaySeconds":5,"periodSeconds":10}` | Readiness probe configuration. | | controllerManager.manager.resources | object | `{"limits":{"cpu":"500m","memory":"128Mi"},"requests":{"cpu":"10m","memory":"64Mi"}}` | The resources to allocate. | From 6f57e0cc68a1f9413f6a64ba5209dbe0c180d463 Mon Sep 17 00:00:00 2001 From: Francesco Canovai Date: Thu, 13 Aug 2026 13:50:48 +0200 Subject: [PATCH 3/4] docs: version 0.0.18 documentation Signed-off-by: Francesco Canovai --- .../version-0.0.18/developer/_protocol.md | 572 +++++++++++ .../version-0.0.18/developer/developers.mdx | 168 +++ .../developer/kopia_internals.md | 460 +++++++++ .../developer/openshift_testing.md | 279 +++++ .../version-0.0.18/developer/protocol.mdx | 9 + .../developer/running-e2e-tests.md | 333 ++++++ .../version-0.0.18/user/_helm_chart_values.md | 42 + .../version-0.0.18/user/api/_category_.json | 6 + .../version-0.0.18/user/api/_klio_api.md | 440 ++++++++ .../version-0.0.18/user/api/klio_api.mdx | 5 + .../version-0.0.18/user/architectures.md | 205 ++++ .../version-0.0.18/user/backup_and_restore.md | 303 ++++++ .../version-0.0.18/user/cli/_category_.json | 10 + .../version-0.0.18/user/cli/klio.md | 49 + .../version-0.0.18/user/cli/klio_admin.md | 39 + .../user/cli/klio_admin_delete-backup.md | 43 + .../user/cli/klio_admin_list-backups.md | 40 + .../user/cli/klio_admin_queue.md | 40 + .../user/cli/klio_admin_queue_backup.md | 38 + .../klio_admin_queue_backup_list-failed.md | 42 + .../user/cli/klio_admin_queue_status.md | 41 + .../user/cli/klio_admin_queue_wal.md | 38 + .../cli/klio_admin_queue_wal_list-failed.md | 42 + .../user/cli/klio_admin_refresh.md | 40 + .../version-0.0.18/user/cli/klio_backup.md | 40 + .../user/cli/klio_backup_delete.md | 40 + .../user/cli/klio_backup_get-metadata.md | 40 + .../user/cli/klio_backup_list.md | 39 + .../user/cli/klio_backup_run.md | 42 + .../user/cli/klio_backup_verify.md | 49 + .../user/cli/klio_get-metadata.md | 39 + .../version-0.0.18/user/cli/klio_get-wal.md | 41 + .../version-0.0.18/user/cli/klio_reset-lsn.md | 39 + .../version-0.0.18/user/cli/klio_restore.md | 42 + .../version-0.0.18/user/cli/klio_retention.md | 37 + .../user/cli/klio_retention_get.md | 39 + .../user/cli/klio_retention_set.md | 45 + .../version-0.0.18/user/cli/klio_send-wal.md | 40 + .../version-0.0.18/user/cli/klio_server.md | 36 + .../user/cli/klio_server_start.md | 42 + .../user/cli/klio_wal-player.md | 37 + .../user/cli/klio_wal-player_generate.md | 41 + .../user/cli/klio_wal-player_play.md | 41 + .../version-0.0.18/user/grafana-dashboards.md | 174 ++++ .../version-0.0.18/user/helm_chart.mdx | 306 ++++++ .../user/images/basebackups_walarchive.png | Bin 0 -> 17516 bytes .../images/klio_client_and_plugin_metrics.png | Bin 0 -> 104254 bytes .../user/images/klio_server_metrics.png | Bin 0 -> 253087 bytes .../klio_wal_replication_lag_metrics.png | Bin 0 -> 54983 bytes .../user/images/overview-multi-tiers.png | Bin 0 -> 83743 bytes .../user/images/tier1-namespace-multi.png | Bin 0 -> 95217 bytes .../user/images/tier1-namespace-single.png | Bin 0 -> 38665 bytes .../user/images/tier1-shared-multi.png | Bin 0 -> 75090 bytes .../user/images/tier1-shared-single.png | Bin 0 -> 40722 bytes .../user/images/wal-streaming.png | Bin 0 -> 34122 bytes .../version-0.0.18/user/index.mdx | 74 ++ .../version-0.0.18/user/klio_server.md | 968 ++++++++++++++++++ .../version-0.0.18/user/main_concepts.md | 131 +++ .../version-0.0.18/user/managing_storage.md | 291 ++++++ .../version-0.0.18/user/opentelemetry.md | 746 ++++++++++++++ .../user/plugin_configuration.md | 629 ++++++++++++ .../version-0.0.18/user/quickstart.md | 463 +++++++++ .../version-0.0.18/user/upgrade_notes.md | 9 + .../version-0.0.18/user/wal_streaming.md | 120 +++ .../version-0.0.18/user/walplayer.md | 335 ++++++ .../version-0.0.18-sidebars.json | 14 + documentation/web/versions.json | 3 + 67 files changed, 8316 insertions(+) create mode 100644 documentation/web/versioned_docs/version-0.0.18/developer/_protocol.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/developer/developers.mdx create mode 100644 documentation/web/versioned_docs/version-0.0.18/developer/kopia_internals.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/developer/openshift_testing.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/developer/protocol.mdx create mode 100644 documentation/web/versioned_docs/version-0.0.18/developer/running-e2e-tests.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/_helm_chart_values.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/api/_category_.json create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/api/_klio_api.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/api/klio_api.mdx create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/architectures.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/backup_and_restore.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/_category_.json create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_delete-backup.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_list-backups.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_backup.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_backup_list-failed.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_status.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_wal.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_wal_list-failed.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_refresh.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_delete.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_get-metadata.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_list.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_run.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_verify.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_get-metadata.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_get-wal.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_reset-lsn.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_restore.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_retention.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_retention_get.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_retention_set.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_send-wal.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_server.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_server_start.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_wal-player.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_wal-player_generate.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/cli/klio_wal-player_play.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/grafana-dashboards.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/helm_chart.mdx create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/images/basebackups_walarchive.png create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/images/klio_client_and_plugin_metrics.png create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/images/klio_server_metrics.png create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/images/klio_wal_replication_lag_metrics.png create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/images/overview-multi-tiers.png create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/images/tier1-namespace-multi.png create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/images/tier1-namespace-single.png create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/images/tier1-shared-multi.png create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/images/tier1-shared-single.png create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/images/wal-streaming.png create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/index.mdx create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/klio_server.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/main_concepts.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/managing_storage.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/opentelemetry.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/plugin_configuration.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/quickstart.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/upgrade_notes.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/wal_streaming.md create mode 100644 documentation/web/versioned_docs/version-0.0.18/user/walplayer.md create mode 100644 documentation/web/versioned_sidebars/version-0.0.18-sidebars.json create mode 100644 documentation/web/versions.json diff --git a/documentation/web/versioned_docs/version-0.0.18/developer/_protocol.md b/documentation/web/versioned_docs/version-0.0.18/developer/_protocol.md new file mode 100644 index 00000000..4a1665e2 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/developer/_protocol.md @@ -0,0 +1,572 @@ +# Protocol Documentation + + +## Table of Contents + +- [klio_admin.proto](#klio_admin-proto) + - [DeleteBackupRequest](#klio-wal-v1-DeleteBackupRequest) + - [DeleteBackupResponse](#klio-wal-v1-DeleteBackupResponse) + - [FailedBackup](#klio-wal-v1-FailedBackup) + - [FailedWAL](#klio-wal-v1-FailedWAL) + - [ListBackupsRequest](#klio-wal-v1-ListBackupsRequest) + - [ListBackupsResult](#klio-wal-v1-ListBackupsResult) + - [QueueListFailedBackupsRequest](#klio-wal-v1-QueueListFailedBackupsRequest) + - [QueueListFailedBackupsResponse](#klio-wal-v1-QueueListFailedBackupsResponse) + - [QueueListFailedWALsRequest](#klio-wal-v1-QueueListFailedWALsRequest) + - [QueueListFailedWALsResponse](#klio-wal-v1-QueueListFailedWALsResponse) + - [QueueStatusRequest](#klio-wal-v1-QueueStatusRequest) + - [QueueStatusResponse](#klio-wal-v1-QueueStatusResponse) + - [RefreshRequest](#klio-wal-v1-RefreshRequest) + - [RefreshResult](#klio-wal-v1-RefreshResult) + + - [Tier](#klio-wal-v1-Tier) + + - [Admin](#klio-wal-v1-Admin) + +- [klio_wal.proto](#klio_wal-proto) + - [CloseBackupRequest](#klio-wal-v1-CloseBackupRequest) + - [CloseBackupResult](#klio-wal-v1-CloseBackupResult) + - [ClusterMetadata](#klio-wal-v1-ClusterMetadata) + - [GetMetadataRequest](#klio-wal-v1-GetMetadataRequest) + - [GetRequest](#klio-wal-v1-GetRequest) + - [GetResult](#klio-wal-v1-GetResult) + - [PutRequest](#klio-wal-v1-PutRequest) + - [PutResult](#klio-wal-v1-PutResult) + - [RequestWALStartRequest](#klio-wal-v1-RequestWALStartRequest) + - [RequestWALStartResult](#klio-wal-v1-RequestWALStartResult) + - [ResetWALStreamRequest](#klio-wal-v1-ResetWALStreamRequest) + - [ResetWALStreamResult](#klio-wal-v1-ResetWALStreamResult) + - [StartWALFile](#klio-wal-v1-StartWALFile) + - [WALGap](#klio-wal-v1-WALGap) + + - [WAL](#klio-wal-v1-WAL) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## klio_admin.proto + + + + + +### DeleteBackupRequest +DeleteBackupRequest is the request to delete a backup from the server. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| backup_name | [string](#string) | | The name of the backup to delete. | +| tiers | [Tier](#klio-wal-v1-Tier) | repeated | The storage tiers from which to delete the backup. At least one tier must be specified. | +| cluster_name | [string](#string) | | The name of the cluster that owns the backup. | + + + + + + + + +### DeleteBackupResponse +DeleteBackupResponse is the response to a backup deletion request. + + + + + + + + +### FailedBackup + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cluster_name | [string](#string) | | | +| last_attempt_time | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | + + + + + + + + +### FailedWAL + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cluster_name | [string](#string) | | | +| wal_name | [string](#string) | | | +| sequence | [uint64](#uint64) | | | +| last_attempt_time | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | + + + + + + + + +### ListBackupsRequest + + + + + + + + + +### ListBackupsResult + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| backup_manifests | [bytes](#bytes) | | JSON-serialized array of backup manifests. Each manifest contains fields like: - id: string - cluster_name: string - timestamp: RFC3339 string - size_bytes: number See klioclient.BackupManifest for the canonical structure. We use JSON bytes here to avoid duplicating the internal type definition and conversion logic, as this is a local admin API. | + + + + + + + + +### QueueListFailedBackupsRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cluster_name | [string](#string) | optional | | + + + + + + + + +### QueueListFailedBackupsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| backups | [FailedBackup](#klio-wal-v1-FailedBackup) | repeated | | + + + + + + + + +### QueueListFailedWALsRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cluster_name | [string](#string) | optional | | + + + + + + + + +### QueueListFailedWALsResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| wals | [FailedWAL](#klio-wal-v1-FailedWAL) | repeated | | + + + + + + + + +### QueueStatusRequest + + + + + + + + + +### QueueStatusResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| pending_backups | [uint64](#uint64) | | Number of backup synchronization tasks pending in the queue | +| pending_wals | [uint64](#uint64) | | Number of WAL relay tasks pending in the queue | + + + + + + + + +### RefreshRequest + + + + + + + + + +### RefreshResult + + + + + + + + + + + +### Tier +Tier represents a storage tier in the backup system. + +| Name | Number | Description | +| ---- | ------ | ----------- | +| TIER_UNSPECIFIED | 0 | TIER_UNSPECIFIED is the default value and should not be used. | +| TIER_1 | 1 | TIER_1 represents the local cache storage. | +| TIER_2 | 2 | TIER_2 represents the object storage. | + + + + + + + + + +### Admin + + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| Refresh | [RefreshRequest](#klio-wal-v1-RefreshRequest) | [RefreshResult](#klio-wal-v1-RefreshResult) | Invoked to refresh the policies and the cache of the Kopia server | +| ListBackups | [ListBackupsRequest](#klio-wal-v1-ListBackupsRequest) | [ListBackupsResult](#klio-wal-v1-ListBackupsResult) | List every backup on the server | +| QueueListFailedBackups | [QueueListFailedBackupsRequest](#klio-wal-v1-QueueListFailedBackupsRequest) | [QueueListFailedBackupsResponse](#klio-wal-v1-QueueListFailedBackupsResponse) | List backups failed to be processed from the queue | +| QueueListFailedWALs | [QueueListFailedWALsRequest](#klio-wal-v1-QueueListFailedWALsRequest) | [QueueListFailedWALsResponse](#klio-wal-v1-QueueListFailedWALsResponse) | List WAL files failed to be processed from the queue | +| QueueStatus | [QueueStatusRequest](#klio-wal-v1-QueueStatusRequest) | [QueueStatusResponse](#klio-wal-v1-QueueStatusResponse) | Get the status of the task queue (pending backups and WALs) | +| DeleteBackup | [DeleteBackupRequest](#klio-wal-v1-DeleteBackupRequest) | [DeleteBackupResponse](#klio-wal-v1-DeleteBackupResponse) | Delete a backup from the server | + + + + + + +

Top

+ +## klio_wal.proto + + + + + +### CloseBackupRequest +This is sent to the WAL server every time a backup has +been completed. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cluster_name | [string](#string) | | The name of the cluster. | +| backup_name | [string](#string) | | The name of the backup. | +| timeline | [int32](#int32) | | The backup timeline | +| start_wal | [string](#string) | | the first WAL required to restore this backup. | +| end_wal | [string](#string) | | The last WAL required to restore this backup. | +| segment_size | [uint64](#uint64) | | The size of a WAL segment. Needed to generate the sequence of WAL files between the start and the end. | +| send_to_tier2 | [bool](#bool) | | Require this backup to be sent to tier2. | +| tier2_retention_policy | [string](#string) | | When present, set the tier2 retention policy to the specified JSON-serialized policy. | + + + + + + + + +### CloseBackupResult +This is sent by the WAL server in response to a CloseBackupRequest +message. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| tier2_schedule | [bool](#bool) | | True when the backup has been scheduled to be synchronized to tier2 storage | +| missing_wal_files | [string](#string) | repeated | List of WAL files needed by this backup but still not uploaded to tier1 | + + + + + + + + +### ClusterMetadata +The following messages are written in the cluster metadata +file + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| system_id | [string](#string) | | The system ID of the current cluster | +| gaps | [WALGap](#klio-wal-v1-WALGap) | repeated | The gaps we are aware of in the collected WALs. | + + + + + + + + +### GetMetadataRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cluster_name | [string](#string) | | | + + + + + + + + +### GetRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cluster_name | [string](#string) | | | +| wal_name | [string](#string) | | | + + + + + + + + +### GetResult + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| wal_block | [bytes](#bytes) | | | +| segment_size | [uint64](#uint64) | | | + + + + + + + + +### PutRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cluster_name | [string](#string) | | | +| wal_name | [string](#string) | | | +| wal_block | [bytes](#bytes) | | | +| segment_size | [uint64](#uint64) | | | +| send_to_tier2 | [bool](#bool) | | | + + + + + + + + +### PutResult + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| written_size | [uint64](#uint64) | | | + + + + + + + + +### RequestWALStartRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cluster_name | [string](#string) | | This is the cluster name | +| system_id | [string](#string) | | This is the system ID | +| current_wal_name | [string](#string) | | This is the current WAL name that is being written by PostgreSQL. If empty, the start WAL name will be found by looking at the stored WAL files. | + + + + + + + + +### RequestWALStartResult + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| wal_name | [string](#string) | | The WAL file where the client is expected to start streaming. | + + + + + + + + +### ResetWALStreamRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cluster_name | [string](#string) | | This is the cluster name | +| system_id | [string](#string) | | This is the system ID | +| current_wal_name | [string](#string) | | This is the current WAL name that is being written by PostgreSQL. If empty, the start WAL name will be found by looking at the stored WAL files. | + + + + + + + + +### ResetWALStreamResult + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| wal_name | [string](#string) | | The WAL file where the client is expected to start streaming. | + + + + + + + + +### StartWALFile +The following messages are used to write a WAL file +in the Klio WAL Storage area + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| klio_version | [uint64](#uint64) | | | +| file_length | [uint64](#uint64) | | | + + + + + + + + +### WALGap +WALGap is a know gap in the WAL collection process. +This is usually caused by an invocation of the reset-lsn Klio +feature. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ts | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | When this gap was detected and created. | +| start | [string](#string) | | When the gap started. | +| end | [string](#string) | | When the gap ends. | + + + + + + + + + + + + + + +### WAL + + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| Put | [PutRequest](#klio-wal-v1-PutRequest) stream | [PutResult](#klio-wal-v1-PutResult) | | +| Get | [GetRequest](#klio-wal-v1-GetRequest) | [GetResult](#klio-wal-v1-GetResult) stream | | +| GetMetadata | [GetMetadataRequest](#klio-wal-v1-GetMetadataRequest) | [ClusterMetadata](#klio-wal-v1-ClusterMetadata) | | +| RequestWALStart | [RequestWALStartRequest](#klio-wal-v1-RequestWALStartRequest) | [RequestWALStartResult](#klio-wal-v1-RequestWALStartResult) | | +| ResetWALStream | [ResetWALStreamRequest](#klio-wal-v1-ResetWALStreamRequest) | [ResetWALStreamResult](#klio-wal-v1-ResetWALStreamResult) | | +| CloseBackup | [CloseBackupRequest](#klio-wal-v1-CloseBackupRequest) | [CloseBackupResult](#klio-wal-v1-CloseBackupResult) | | + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/documentation/web/versioned_docs/version-0.0.18/developer/developers.mdx b/documentation/web/versioned_docs/version-0.0.18/developer/developers.mdx new file mode 100644 index 00000000..b086b6d4 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/developer/developers.mdx @@ -0,0 +1,168 @@ +--- +sidebar_position: 1 +--- + +# Developers guide + +## Development environment prerequisites + +* A [dagger](https://dagger.io/) installation + +## How to get an ephemeral development environment + +For a quick and convenient development experience, you can create an ephemeral +development environment using the `integration:devenv` task from the Taskfile: + +```sh +task integration:devenv +``` + +This command creates and connects you to an ephemeral development environment +with all the necessary components pre-configured, making it easier to test and +develop Klio features without affecting your local setup. + +Here are the instructions to deploy the Klio server and the CNPG cluster with +the Klio plugin, using manifests under `operator/config/samples`. +The following commands are executed inside the dagger container created from +the previous step: + +```sh +# Deploy the Klio server with the related resources +dagger /apps $ kubectl apply -f ../operator/config/samples/klio_v1alpha1_server.yaml + +# Deploy the CNPG Cluster with a patch for the plugin and the related PluginConfiguration CR +dagger /apps $ kubectl apply -f ../operator/config/samples/cluster-example-plugin.yaml +``` + +## How to test Klio in a kind cluster during development + +During the development phase, it is recommended to test any changes in a test +environment as soon as they are implemented. To perform such a test, a developer +can build and deploy the binaries and the images in a reusable Kubernetes environment. + +This section will guide you through the steps required to deploy the Klio operator and +its resources inside a kind cluster. + +1. Create a kind cluster using the `hack/setup-cluster.sh` script from the CNPG repository. +2. To build and deploy Klio images and operator, exec the command: `KIND_CLUSTER_NAME=$(kind get clusters) task integration:deploy-to-kind` +3. Once the operator is in `Ready` state, you can deploy the resources: + * Klio server: `kubectl apply -f operator/config/samples/klio_v1alpha1_server.yaml` + * CNPG Cluster with Klio plugin and related PluginConfiguration CR: `kubectl apply -f operator/config/samples/cluster-example-plugin.yaml` + The PluginConfiguration CR name should be equal to the value of `ref` parameter, + set inside the Cluster manifest `.spec.plugins` section. + + ```yaml + plugins: + - name: klio.cnpg.io + enabled: true + parameters: + pluginConfigurationRef: client-config-example-plugin + ``` + +Repeat step 2 to deploy the new changes applied to the code, and reset the operator. +Then rollout the new binary in both server and cluster pods: + +1. delete the Klio Server pod: `kubectl delete pod server-sample-klio-0` +2. delete the Cluster's pods: `kubectl delete pod -l cnpg.io/cluster=cluster-example` +3. delete the PluginConfiguration CR: `kubectl delete pluginconfiguration client-config-example-plugin` + +### How to get performance profiles with pprof + +1. Open a port forward connection to port 6061: `kubectl port-forward pod/server-sample-klio-0 6061` +2. run pprof tool, e.g.: `go tool pprof -http=:9999 http://localhost:6061/debug/pprof/profile\?seconds=30` + +## How to recreate the GRPC stub and skeleton + +```sh +dagger call protoc --source . -o internal/grpc +``` + +## How to setup manually a Klio server + +Given the following configuration file in `/home/klio/.klio.yaml`: + +```yaml +tier1: + encryption_key: thiskey + base: + repository: /home/klio/klio_data/base + cache: /home/klio/klio_data/base + listen_address: 0.0.0.0:52000 + wal: + listen_address: 0.0.0.0:52001 + path: /home/klio/klio_data/wals +tls: + client_ca_cert: /home/klio/ca-cert.pem + cert: /home/klio/server.crt + key: /home/klio/server.key +``` + +A new Klio repository for both WAL and base backups can be bootstrapped with: + +```sh +openssl genrsa -out ca-key.pem 2048 + +openssl req -new -key ca-key.pem -out ca-csr.pem -subj "/CN=KlioClientsCA" + +openssl x509 -req -in ca-csr.pem -signkey ca-key.pem -out ca-cert.pem -days 365 -extfile <(printf "basicConstraints=CA:TRUE,pathlen:0\nkeyUsage=critical,cRLSign,keyCertSign") + +openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 \ + -nodes -keyout server.key -out server.crt -subj "/CN=klio-server" \ + -addext "subjectAltName=DNS:klio-server,IP:127.0.0.1" + +~/klio server initialize +``` + +The Klio server hosts both the WAL streaming server and the base backup +server in a single process. Start them with: + +```sh +~/klio server start +``` + +## How to setup manually a Klio client + +Given the following configuration file in `/var/lib/postgresql/.klio.yaml`: + +```yaml +client: + cluster_name: pg-dev-1 + wal: + server_cert_path: /home/klio/server.crt + client_cert_path: /home/klio/client-cert.pem + client_key_path: /home/klio/client-key.pem + address: klio-server:52000 + + base: + url: https://klio-server:52001 + server_cert_path: /home/klio/server.crt + client_cert_path: /home/klio/client-cert.pem + client_key_path: /home/klio/client-key.pem + +source: + dsn: "user=postgres replication=yes" + standard_dsn: "dbname=postgres" + slot: klio +``` + +The client certificates can be created with: + +```sh +openssl genrsa -out client-key.pem 2048 + +openssl req -new -key client-key.pem -out client-csr.pem -subj "/CN=klio@cluster-example" + +cat < client-ext.cnf +[ req ] +distinguished_name = req_distinguished_name + +[ req_distinguished_name ] +CN = klio@cluster-example + +[ usr_cert ] +keyUsage = critical, digitalSignature +extendedKeyUsage = clientAuth +EOF + +openssl x509 -req -in client-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 365 -extfile client-ext.cnf -extensions usr_cert +``` diff --git a/documentation/web/versioned_docs/version-0.0.18/developer/kopia_internals.md b/documentation/web/versioned_docs/version-0.0.18/developer/kopia_internals.md new file mode 100644 index 00000000..462bdf20 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/developer/kopia_internals.md @@ -0,0 +1,460 @@ +# Kopia Internals + +This document explains Kopia's internal architecture, storage systems, and core mechanisms like sessions and checkpoints. + +## Table of Contents + +1. [Storage Architecture](#storage-architecture) +2. [Sessions: The Write Protection Mechanism](#sessions-the-write-protection-mechanism) +3. [Checkpoints: Periodic Data Protection](#checkpoints-periodic-data-protection) + +--- + +## Storage Architecture + +Kopia uses two complementary storage systems: + +1. **Content-Addressable Storage**: For backup data (files, directories) +2. **Label-Addressable Storage**: For metadata (snapshots, policies) + +### Content-Addressable Storage + +Backup data is stored using content-addressable storage: + +1. **Contents**: Fixed-size chunks of data, identified by their hash (content ID) +2. **Pack Blobs**: Multiple contents are grouped into pack blobs for efficient storage +3. **Index Blobs**: Map content IDs to their location within pack blobs +4. **Objects**: Higher-level structures (files, directories) composed of multiple contents + +### Pack Blob Types: Segregation by Content Type + +Pack blobs are segregated based on the type of content they contain. The content ID prefix determines which pack type is used: + +```go +// From content_manager.go +func packPrefixForContentID(contentID ID) blob.ID { + if contentID.HasPrefix() { + return PackBlobIDPrefixSpecial // "q" packs + } + return PackBlobIDPrefixRegular // "p" packs +} +``` + +| Pack Prefix | Blob Name Pattern | Content Type | Content ID Examples | +|-------------|-------------------|--------------|---------------------| +| `p` (regular) | `p7f8a9b0-session1` | File data chunks | `abc123def...` (no prefix) | +| `q` (special) | `q3c4d5e6-session2` | Metadata | `mabc123...` (manifests), `kabc123...` (other) | + +**Content ID prefixes**: +- No prefix: Raw file data (stored in `p` packs) +- `m`: Manifest contents (stored in `q` packs) +- `k`: Other metadata like policies (stored in `q` packs) +- `n`: Index blob contents (stored separately, not in pack blobs) + +**Why segregation matters**: +- Different caching strategies: Data (`p`) and metadata (`q`) can be cached separately +- Different access patterns: Metadata is accessed frequently, data less so +- GC behavior: System contents in `q` packs (manifests, indexes) are never garbage collected by Snapshot GC + +### Index Blobs: The Content Location Map + +Index blobs are critical for understanding how Kopia finds data and determines what's "referenced": + +**What an index entry contains**: + +```go +// From repo/content/index/info.go +type Info struct { + ContentID ID // Hash-based identifier (e.g., "abc123def...") + PackBlobID blob.ID // Which pack blob contains this content + PackOffset uint32 // Byte offset within the pack blob + PackedLength uint32 // Size in bytes (after compression/encryption) + OriginalLength uint32 // Original size before compression + Deleted bool // Soft-delete flag for GC + TimestampSeconds int64 // When this content was written + CompressionHeaderID // Compression algorithm used + // ... +} +``` + +**How index blobs are loaded and searched**: + +Kopia doesn't know which index blob contains a specific content ID. Instead, it loads **ALL index blobs** into memory and merges them into a single searchable structure: + +```go +// From repo/content/index/merged.go +type Merged []Index // Slice of all loaded index blobs + +// GetInfo searches ALL indexes for a content ID +func (m Merged) GetInfo(id ID, result *Info) (bool, error) { + for _, ndx := range m { + ok, err := ndx.GetInfo(id, &tmp) + if ok { + // Found! Keep the one with highest timestamp + // (handles updates/deletions across multiple indexes) + } + } +} +``` + +**How content lookup works**: + +``` +┌─────────────────────────────────────────────────────────────┐ +│ Content Lookup Process │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ 1. On repository open: Load ALL index blobs │ +│ Index blobs: n0a1b2c3, n4d5e6f7, n8g9h0i1, ... │ +│ Merge into single searchable structure │ +│ │ +│ 2. Application requests content by ContentID │ +│ ContentID = "abc123def456..." │ +│ │ +│ 3. Search merged index for ContentID │ +│ (searches across all loaded index blobs) │ +│ Found: PackBlobID="p7f8a9b0-session1" │ +│ PackOffset=1024 │ +│ PackedLength=4096 │ +│ │ +│ 4. Read from pack blob at specified location │ +│ Read 4096 bytes from "p7f8a9b0-session1" at offset 1024 │ +│ │ +│ 5. Decrypt and decompress to get original content │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +**Why are there multiple index blobs?** + +Each `Flush()` operation writes a new index blob containing entries for the contents written since the last flush. Over time, this creates many small index blobs. Index compaction (part of maintenance) merges these into larger blobs for efficiency. + +**Index blobs determine which packs are "referenced"**: + +A pack blob is considered **referenced** if ANY index entry points to it via `PackBlobID`. This is how Pack GC decides what to keep: + +```go +// Simplified from content_manager_iterate.go +func IterateUnreferencedPacks() { + // Step 1: Build set of all PackBlobIDs from all index entries + usedPacks := NewSet() + for each indexEntry in allIndexes: + usedPacks.Add(indexEntry.PackBlobID) + + // Step 2: Any pack blob NOT in usedPacks is "unreferenced" + for each packBlob in storage: + if not usedPacks.Contains(packBlob.ID): + // This pack can potentially be deleted + callback(packBlob) +} +``` + +**Key insight**: A pack blob becomes "referenced" when an index blob containing its ID is written. Before the index is written, the pack exists in storage but nothing points to it - it's "unreferenced" and vulnerable to Pack GC. This is precisely why sessions exist. + +### Label-Addressable Storage (Manifests) + +Metadata is stored in **manifests** - JSON documents identified by labels rather than content hash: + +1. **Snapshot Manifests**: Record what was backed up, when, and the root object ID +2. **Policy Manifests**: Define retention rules, compression settings, etc. +3. **Other Manifests**: Maintenance schedules, ACLs, etc. + +Each manifest has: +- A unique ID +- A set of labels (key-value pairs) including a required `type` label +- A modification timestamp +- The actual JSON payload + +``` +┌─────────────────────────────────────────────────────────────┐ +│ Storage Hierarchy │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ LABEL-ADDRESSABLE (Manifests) │ +│ ───────────────────────────── │ +│ Snapshot Manifest │ +│ ├─ Labels: {type: "snapshot", hostname: "...", ...} │ +│ ├─ RootObjectID: "Iabcdef123..." │ +│ └─ StartTime, EndTime, Stats, etc. │ +│ │ +│ │ │ +│ ▼ │ +│ │ +│ CONTENT-ADDRESSABLE (Data) │ +│ ───────────────────────── │ +│ Root Object (directory manifest) │ +│ └─ References child objects by Object ID │ +│ │ │ +│ ▼ │ +│ Child Objects (files, subdirectories) │ +│ └─ Files are composed of Content IDs │ +│ │ │ +│ ▼ │ +│ Contents (stored in Pack Blobs) │ +│ └─ Located via Index Blobs │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +### GC Roots: What Keeps Data Alive + +Kopia has **two levels of garbage collection**, each with different "roots": + +**Level 1 - Snapshot GC (Content-Level)**: +- **GC Roots**: Snapshot manifests +- **What's protected**: Contents reachable from any snapshot +- **What gets marked deleted**: Contents not reachable from any snapshot + +**Level 2 - Pack GC (Blob-Level)**: +- **GC Roots**: Index blobs (via PackBlobID references) +- **What's protected**: Pack blobs referenced by any index entry +- **What gets deleted**: Pack blobs with no index entries pointing to them + +**Snapshot GC process** (marks contents as deleted): + +1. **Enumerate all snapshot manifests** (from label-addressable storage) +2. **Walk the object tree** starting from each snapshot's root object ID +3. **Mark all reachable content IDs** as "in use" +4. **Any content not marked** is eligible for deletion + +```go +// From snapshotgc/gc.go - simplified +func findInUseContentIDs(ctx context.Context, rep repo.Repository, used *Set) error { + // Step 1: Get all snapshot manifests (GC roots) + manifests, _ := snapshot.LoadSnapshots(ctx, rep, ids) + + // Step 2: Walk each snapshot's object tree + for _, m := range manifests { + root := snapshotfs.SnapshotRoot(rep, m) + // Walk tree, marking all content IDs as used + walker.Process(ctx, root, "") + } +} +``` + +**Important implications**: +- Deleting a snapshot manifest makes its unique data eligible for GC +- Data shared between snapshots remains alive as long as ANY snapshot references it +- Manifests themselves are stored as contents with a special prefix (`m`) +- System contents (manifests, indexes) are never garbage collected + +### The Two-Phase Write Problem + +When writing data, there's a critical window between: +1. Writing pack blobs to storage +2. Writing the index that references those packs + +During this window, the pack blobs are **unreferenced** - they exist in storage but no index points to them. If garbage collection runs during this window, it might delete these packs, corrupting the in-progress backup. + +This is the fundamental problem that sessions solve. + +--- + +## Sessions: The Write Protection Mechanism + +### What is a Session? + +A session is Kopia's mechanism for protecting in-progress writes from garbage collection. When a write operation begins, Kopia: + +1. Generates a unique **Session ID** +2. Writes a **Session Marker Blob** to storage +3. Embeds the Session ID in all pack blob names created during the session + +### Session Lifecycle + +``` +┌─────────────────────────────────────────────────────────────┐ +│ Session Lifecycle │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ 1. SESSION START (on first write) │ +│ ├─ Generate unique Session ID │ +│ ├─ Write Session Marker blob ONCE (prefix: "s") │ +│ │ └─ CheckpointTime set to NOW │ +│ └─ Session Marker contains: │ +│ - ID │ +│ - StartTime │ +│ - CheckpointTime (= StartTime, never updated!) │ +│ - User, Host │ +│ │ +│ 2. DATA WRITING │ +│ ├─ Pack blobs created with Session ID in name │ +│ │ Format: {prefix}{randomID}-{sessionID} │ +│ ├─ Packs are UNREFERENCED (not in any index yet) │ +│ └─ Session Marker is NOT updated during this phase │ +│ │ +│ 3. SESSION COMMIT (during Flush) │ +│ ├─ Write Index Blobs (references all packs) │ +│ ├─ DELETE Session Marker blobs (not update - delete!) │ +│ └─ Packs are now REFERENCED (protected by index) │ +│ │ +│ Note: After commit, next write starts a NEW session │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +### Pack Blob Naming Convention + +Pack blobs include the session ID in their name: + +``` +p{random64bit}-{sessionID} # Regular pack blob +q{random64bit}-{sessionID} # Special pack blob (for indexes, etc.) +``` + +This allows garbage collection to identify which session created each pack and whether that session is still active. + +### Session Marker Structure + +Session markers are stored as blobs with the `s` prefix and contain JSON metadata: + +```json +{ + "id": "abc123-epoch5", + "startTime": "2024-01-15T10:00:00Z", + "checkpointTime": "2024-01-15T10:00:00Z", + "username": "backup-user", + "hostname": "backup-server" +} +``` + +The `checkpointTime` field is critical - it indicates when the session was last known to be active. + +### Critical: Session Markers Are Immutable + +**The session marker is written ONCE when the session starts and is NEVER updated during the session's lifetime.** + +From `sessions.go`: + +```go +func (bm *WriteManager) writeSessionMarkerLocked(ctx context.Context) error { + cp := bm.currentSessionInfo + cp.CheckpointTime = bm.timeNow() // Set at write time, never updated + // ... write to storage ... +} + +// TODO(jkowalski): write this periodically when sessions span the duration of an upload. +``` + +This means: +- `CheckpointTime` equals the session start time +- If a session runs for hours without committing, the CheckpointTime becomes stale +- After `SessionExpirationAge` (96 hours), the session appears "expired" to maintenance + +**This is why checkpoints are essential**: They don't update the session marker - they **commit the current session and start a new one** with a fresh CheckpointTime. + +### How Sessions Protect Blobs + +During garbage collection, when evaluating whether to delete an unreferenced pack: + +```go +// From pack_gc.go +sid := content.SessionIDFromBlobID(bm.BlobID) +if s, ok := activeSessions[sid]; ok { + if age := cutoffTime.Sub(s.CheckpointTime); age < safety.SessionExpirationAge { + // PRESERVE - pack belongs to an active session + return nil + } +} +// DELETE - pack is truly orphaned +``` + +The pack is preserved if: +1. Its session ID matches an active session marker, AND +2. The session's CheckpointTime is within `SessionExpirationAge` + +--- + +## Checkpoints: Periodic Data Protection + +### What Are Kopia Checkpoints? + +Kopia checkpoints are periodic save points during long-running backup operations. They serve two purposes: + +1. **Progress Saving**: Allow resuming interrupted backups +2. **Session Renewal**: Commit current session's data and start a fresh session + +**Important distinction**: Checkpoints do NOT update the existing session marker. Instead, they: +1. Write index blobs (making current packs referenced/protected) +2. Delete the current session marker (commit) +3. Let the next write operation create a NEW session with a fresh CheckpointTime + +This is why checkpoints protect long-running backups despite session markers being immutable. + +### The 45-Minute Checkpoint Interval + +By default, Kopia creates a checkpoint every 45 minutes during snapshot uploads: + +```go +// From upload.go +const DefaultCheckpointInterval = 45 * time.Minute +``` + +This interval is enforced as a maximum - you cannot set a longer interval: + +```go +if u.CheckpointInterval > DefaultCheckpointInterval { + return nil, errors.Errorf("checkpoint interval cannot be greater than %v", DefaultCheckpointInterval) +} +``` + +### What Happens During a Checkpoint + +When a checkpoint triggers, the following sequence occurs: + +``` +┌─────────────────────────────────────────────────────────────┐ +│ Checkpoint Sequence │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ 1. CHECKPOINT TRIGGERED (every 45 minutes) │ +│ │ +│ 2. Flush() CALLED │ +│ ├─ finishAllPacksLocked() │ +│ │ └─ Complete any pending pack writes │ +│ │ │ +│ └─ flushPackIndexesLocked() │ +│ ├─ Write Index Blobs │ +│ │ └─ All packs now REFERENCED (protected!) │ +│ └─ commitSession() │ +│ └─ DELETE Session Marker blobs │ +│ (session S1 is now finished) │ +│ │ +│ 3. NEW SESSION STARTS (on next write) │ +│ └─ getOrStartSessionLocked() creates NEW session S2 │ +│ └─ NEW Session Marker written │ +│ └─ CheckpointTime = NOW (fresh timestamp!) │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +**Key insight**: The old session marker is deleted, not updated. Protection for the old session's packs now comes from the index, not the session marker. + +### Checkpoints Protect Long-Running Backups + +For a 2-week database backup: + +``` +Hour 0.00: Session S1 starts (CheckpointTime = Hour 0) + Packs P1-P100 written (UNREFERENCED, protected by S1 marker) + +Hour 0.75: CHECKPOINT + ├─ Index I1 written → P1-P100 now REFERENCED by index + ├─ Session S1 marker DELETED (committed) + └─ P1-P100 no longer need session protection (index protects them) + +Hour 0.76: First write after checkpoint + └─ Session S2 starts (CheckpointTime = Hour 0.76) + Packs P101-P200 written (UNREFERENCED, protected by S2 marker) + +Hour 1.50: CHECKPOINT + ├─ Index I2 written → P101-P200 REFERENCED + ├─ Session S2 marker DELETED + └─ Session S3 will start on next write +... +Hour 336: Final flush, backup complete +``` + +**Key insight**: Even though the backup takes 2 weeks, at any given time only the most recent 45 minutes of data is unreferenced. All earlier data has been indexed and is protected by the index, not by session markers. + +**The 96-hour SessionExpirationAge is a safety margin**, not a limit on backup duration. It protects against scenarios where checkpoints fail repeatedly. diff --git a/documentation/web/versioned_docs/version-0.0.18/developer/openshift_testing.md b/documentation/web/versioned_docs/version-0.0.18/developer/openshift_testing.md new file mode 100644 index 00000000..99428031 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/developer/openshift_testing.md @@ -0,0 +1,279 @@ +--- +sidebar_position: 4 +--- + +# OpenShift + +## Security Context Constraints + +OpenShift enforces +[Security Context Constraints](https://docs.redhat.com/en/documentation/openshift_container_platform/latest/html/authentication_and_authorization/managing-pod-security-policies) +(SCCs) to control the actions that pods can perform and the resources +they can access. Under the default **restricted** SCC, containers are +not allowed to run as a fixed user ID. Instead, OpenShift assigns an +arbitrary UID from a range that is unique to each namespace. + +As described in the OpenShift +[image creation guidelines](https://docs.redhat.com/en/documentation/openshift_container_platform/latest/html/images/creating-images#use-uid_create-images): + +> By default, OpenShift Container Platform runs containers using an +> arbitrarily assigned user ID. This provides additional security +> against processes escaping the container due to a container engine +> vulnerability and thereby achieving escalated permissions on the +> host node. + +This means that specifying a fixed `runAsUser`, `runAsGroup`, or +`fsGroup` in a pod's security context is rejected by the restricted +SCC unless the value falls within the namespace's allocated range. + +### How Klio handles this + +The Klio Operator detects OpenShift at startup by querying the +Kubernetes discovery API for the `securitycontextconstraints` +resource in the `security.openshift.io/v1` API group. + +When running on OpenShift: + +- **Server pods**: The operator omits `runAsUser`, `runAsGroup`, + and `fsGroup` from the pod security context, allowing the + restricted SCC to assign a UID from the namespace's range. +- **Plugin sidecar containers**: The operator omits `runAsUser` + and `runAsGroup` from the container security context for the + same reason. + +On vanilla Kubernetes, the operator continues to set explicit +UIDs (1000 for server pods, 26 for plugin sidecars) as before. + +No user configuration is required. The detection is automatic and +logged at startup: + +``` +INFO setup Cluster capabilities detected {"haveSecurityContextConstraints": true} +``` + +## Testing on OpenShift with OLM + +This guide explains how to install a test build of the Klio operator +on an OpenShift cluster using OLM (Operator Lifecycle Manager). + +:::note +This procedure is for development and testing only. It requires +a catalog image built from the branch under test. +::: + +## Prerequisites + +- An OpenShift cluster with `oc` CLI configured +- Cluster admin privileges +- cert-manager installed in the cluster (for TLS certificate + creation) +- A catalog image built with `task olm:catalog ENVIRONMENT=testing` + +The Klio operator, bundle, catalog and operand images are public +on `ghcr.io`, so no pull secret is needed. + +## 1. Apply the CatalogSource + +A CI run creates a catalog image, tagged with the branch name or the PR number: + +Examples: +``` +ghcr.io/cloudnative-pg/klio-operator-testing:main-catalog +ghcr.io/cloudnative-pg/klio-operator-testing:pr-1325-catalog +``` + +Create an `openshift_catalogsource.yaml` file pointing to the +catalog image built from your branch: + +```yaml +apiVersion: operators.coreos.com/v1alpha1 +kind: CatalogSource +metadata: + name: klio-catalog + namespace: openshift-marketplace +spec: + sourceType: grpc + image: +``` + +Then apply it: + +```bash +oc apply -f openshift_catalogsource.yaml +``` + +Wait for the catalog pod to become ready: + +```bash +oc get pods -n openshift-marketplace -w | grep klio +``` + +## 2. Subscribe to the operator + +Create an `openshift_subscription.yaml` file: + +```yaml +apiVersion: operators.coreos.com/v1alpha1 +kind: Subscription +metadata: + name: klio-operator + namespace: openshift-operators +spec: + channel: stable-v0 + name: klio-operator + source: klio-catalog + sourceNamespace: openshift-marketplace + installPlanApproval: Automatic +``` + +Apply it: + +```bash +oc apply -f openshift_subscription.yaml +``` + +OLM will create an `InstallPlan` and deploy the operator into +the `openshift-operators` namespace. + +:::note +The Klio sidecar (operand) image is baked into the operator +Deployment by the bundle as the `SIDECAR_IMAGE` environment +variable. It uses the same registry and tag as the operator +image by default, with the `klio` repository instead of +`klio-operator`. The Subscription can override it. +::: + +## 3. Create TLS certificates + +The Klio plugin requires two TLS secrets to establish mutual +TLS with the CNPG operator: + +- `klio-plugin-server-tls` — presented by the plugin gRPC server +- `klio-plugin-client-tls` — used by CNPG to authenticate to + the plugin + +They can be created manually, but the recommended method is to use cert-manager to +automatically generate and manage the certificates. + +Create a file `openshift_certificates.yaml` with the following +content, adjusting the `namespace` if the operator was installed +outside of `openshift-operators`: + +```yaml +--- +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: klio-operator-selfsigned-issuer + namespace: openshift-operators +spec: + selfSigned: {} +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: klio-plugin-server + namespace: openshift-operators +spec: + secretName: klio-plugin-server-tls + dnsNames: + - klio-operator-plugin + usages: + - server auth + issuerRef: + name: klio-operator-selfsigned-issuer + kind: Issuer + group: cert-manager.io + duration: 2160h + renewBefore: 360h +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: klio-plugin-client + namespace: openshift-operators +spec: + secretName: klio-plugin-client-tls + commonName: klio-plugin-client + usages: + - client auth + issuerRef: + name: klio-operator-selfsigned-issuer + kind: Issuer + group: cert-manager.io + duration: 2160h + renewBefore: 360h +``` + +Apply it: + +```bash +oc apply -f openshift_certificates.yaml +``` + +Verify that the secrets have been created by cert-manager: + +```bash +oc get secrets -n openshift-operators \ + klio-plugin-server-tls klio-plugin-client-tls +``` + +## 4. Verify the installation + +The installation is complete when the CSV reaches the +`Succeeded` phase. You can check its status with: + +```bash +oc get csv -n openshift-operators -w +``` + +## Red Hat certification + +Klio's operator image and OLM bundle are validated against Red Hat's +[Preflight](https://github.com/redhat-openshift-ecosystem/openshift-preflight) +certification policies. Two checks cover the two artifacts: + +- **`check container`** — static policy checks on the operator image + (labels, layers, license, base image). It needs no cluster and runs + in the Dagger engine via `task olm:preflight-container`. +- **`check operator`** — installs the bundle through OLM into a live + OpenShift cluster and verifies it is deployable. Because it needs a + real OpenShift cluster (OLM and Security Context Constraints), it runs + via `task olm:preflight-operator`, against the CRC cluster the + OpenShift E2E job starts or against a local CRC. The bundle and + catalog images are multi-arch (`linux/amd64` and `linux/arm64`), so + the check runs natively on either architecture — including CRC on an + Apple Silicon Mac. + +:::note + +Both checks are currently **disabled in CI**. The operator and operand +images are built on Debian instead of Red Hat UBI, which the +`check container` base-image policy rejects, and `check operator` is +parked alongside it. The steps are commented out in +`.github/workflows/ci.yml` and `.github/workflows/openshift-e2e.yml`, +ready to be restored once a UBI-based image variant is built again — see +[issue #85](https://github.com/cloudnative-pg/klio/issues/85). Both +tasks still work when run manually, as described below. + +::: + +### Run `check operator` against CRC + +Point `EXTERNAL_KUBECONFIG` at an OpenShift (CRC) cluster and run the +task. The bundle and catalog (index) images must already be published +for the build under test — build them first with +`task olm:catalog ENVIRONMENT=testing` if needed; the certification runs +against the existing bundle rather than rebuilding it. + +```bash +export EXTERNAL_KUBECONFIG=/path/to/crc/kubeconfig +task olm:preflight-operator ENVIRONMENT=testing +``` + +preflight installs the operator through OLM, runs the operator policy, +and the Dagger `preflight` module evaluates the pass/fail verdict +in-engine. Raw artifacts are written to `operator/preflight-artifacts/`. + +The task never contacts Red Hat: the checks are always evaluated +locally. diff --git a/documentation/web/versioned_docs/version-0.0.18/developer/protocol.mdx b/documentation/web/versioned_docs/version-0.0.18/developer/protocol.mdx new file mode 100644 index 00000000..1e683f95 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/developer/protocol.mdx @@ -0,0 +1,9 @@ +--- +sidebar_position: 4 +title: Protocol Documentation +hide_title: true +--- + +import Protocol from './_protocol.md'; + + diff --git a/documentation/web/versioned_docs/version-0.0.18/developer/running-e2e-tests.md b/documentation/web/versioned_docs/version-0.0.18/developer/running-e2e-tests.md new file mode 100644 index 00000000..5c173203 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/developer/running-e2e-tests.md @@ -0,0 +1,333 @@ +--- +sidebar_position: 2 +--- + +# Running E2E tests + +This guide explains how to run the end-to-end (E2E) tests for the +Klio project. The E2E tests validate the integration between Klio +components and CloudNativePG in a real Kubernetes environment. + +## Prerequisites + +Before running E2E tests, ensure you have the following tools installed: + +- [Docker](https://docs.docker.com/get-docker/) - Container runtime +- [Kind](https://kind.sigs.k8s.io/docs/user/quick-start/) - Kubernetes in Docker +- [Task](https://taskfile.dev/installation/) - Task runner +- [Go](https://golang.org/doc/install) - Go programming language +- [kubectl](https://kubernetes.io/docs/tasks/tools/) - Kubernetes command-line tool + +## Required Setup + +:::info +Before running any E2E tests, you must first set up the CloudNativePG environment. +::: + +### 1. Clone CloudNativePG Repository + +```bash +git clone https://github.com/cloudnative-pg/cloudnative-pg.git +cd cloudnative-pg +``` + +### 2. Create Kind Cluster with CloudNativePG + +```bash +# Create, load, and deploy the CloudNativePG environment +hack/setup-cluster.sh create load deploy +cd .. +``` + +This script will: + +- Create a Kind cluster with the correct configuration +- Load the CloudNativePG operator images +- Deploy the CloudNativePG operator to the cluster + +## Test Environment Setup + +The E2E tests require a specific environment setup that includes: + +1. **Kind cluster** with CloudNativePG operator installed ✅ (completed above) +1. **Klio operator** deployed to the cluster +1. **cert-manager** for TLS certificate management + +### Automated Setup with Task + +After completing the required setup above, you can use the Task +runner to deploy Klio and run tests: + +```bash +# Set the Kind cluster name (must match the pattern used by CloudNativePG) +export KIND_CLUSTER_NAME=pg-operator-e2e-v1-33-1 + +# Run the complete E2E test suite +task integration:e2e +``` + +This command will: + +- Deploy cert-manager to the existing Kind cluster +- Build and deploy the Klio operator +- Run all E2E tests + +### Manual Setup + +If you prefer to set up the environment manually or need more +control, after completing the required CloudNativePG setup above: + +#### 1. Deploy Klio Operator + +```bash +# Set the cluster name (check with: kind get clusters) +export KIND_CLUSTER_NAME=pg-operator-e2e-v1-33-1 + +# Deploy the operator to the Kind cluster +task integration:deploy-to-kind +``` + +#### 2. Run E2E Tests + +```bash +# Run the tests +cd operator/test/e2e +go test -v ./... +``` + +## Test Structure + +The E2E tests are located in `operator/test/e2e/` and include: + +- **`main_test.go`** - Test setup, configuration, and feature + registration +- **`common_test.go`** - Shared test utilities and helpers +- **`backup_test.go`** - Backup functionality tests: + - `BackupFromPrimary`: backup from a single-instance cluster + - `BackupFromStandby`: backup from a standby in a multi-instance + cluster +- **`maintenance_test.go`** - Server-side post-backup maintenance on a + tier1-only deployment: verifies the backup queue consumer applies + tier1 WAL retention after a backup even when tier2 is not configured + (`Tier1ServerSideMaintenance`) +- **`recovery_test.go`** - Cluster recovery tests: + - `RecoverClusterFromBackupID`: recovery using a specific backup ID + - `RecoverClusterFromLatestBackup`: recovery from the latest backup + - `RecoverClusterFromPitr`: point-in-time recovery (tier1) + - `RecoverReplicaCluster`: replica cluster creation from backup +- **`tablespace_recovery_test.go`** - Recovery preserving PostgreSQL + tablespaces (`RecoverClusterWithTablespaces`) +- **`tier2_recovery_test.go`** - Recovery from tier2 S3 storage + (`RecoverClusterFromTier2`) +- **`tier2_pitr_test.go`** - Point-in-time recovery from tier2 storage + (`RecoverClusterFromTier2Pitr`) +- **`tier2_retention_test.go`** - Backup and WAL retention policy + enforcement in tier2 storage (`Tier2Retention`) +- **`wal_retention_test.go`** - WAL retention queue-awareness: verifies + server-side tier1 retention prunes old WALs only after they reach tier2, + driven by backup completion rather than a client command + (`WALRetentionQueueAwareness`) +- **`server_reconfig_test.go`** - Adding tier2 storage to an existing + tier1+queue server (`ServerTierReconfiguration`) +- **`pluginconfiguration_update_test.go`** - PluginConfiguration updates + and sidecar restart behavior (`PluginConfigurationUpdate`) +- **`pvc_resize_test.go`** - PVC resize for data, cache, and queue + volumes (`PVCResize`) +- **`otel_test.go`** - OpenTelemetry metrics and traces export: deploys + an OTEL Collector and verifies that backup lifecycle metrics and + traces are correctly exported via OTLP. After the success-path + assertions it deletes the Klio server and triggers a failing backup to + verify the `failure_category=repository_error` attribute on + `klio.plugin.backup.runs` (`OTELMetricsAndTraces`) +- **`operator_otel_test.go`** - Operator OpenTelemetry metrics: + patches the operator deployment with OTEL env vars and verifies + that controller-runtime metrics are bridged to an OTLP collector + (`OperatorOTELMetrics`, serial) + +## Test Configuration + +The e2e tests are configured through a YAML file located at +`operator/test/e2e/e2e-config.yaml`. The file is committed with +default values that match the local development environment. + +Available options: + +```yaml +# Klio server container image used in e2e tests. +serverImage: "registry.dev:5000/klio-testing:dev" + +# Directory where pod logs are streamed during the test run. +logDir: "e2e_cluster_logs" + +# Kubernetes storage class used for all PVC templates in the tests. +storageClass: "csi-hostpath-sc" + +# Namespace where the Klio operator runs. Defaults to cnpg-system (Helm/Kind); +# set to openshift-operators for the OLM-based OpenShift install. +operatorNamespace: "cnpg-system" + +# Label selector for identifying the Klio operator deployment. Must match +# the labels applied in the operator deployment manifest. +operatorAppLabel: "app.kubernetes.io/name=klio" + +# Name of the OLM Subscription managing the operator (in operatorNamespace). +# Set it on OpenShift so tests that change the operator environment patch the +# Subscription (which OLM propagates to the Deployment) rather than the +# Deployment, which OLM reverts. Leave empty for the Helm/Kind install. +operatorSubscription: "" +``` + +To use a custom configuration, either edit `e2e-config.yaml` directly +or point the `E2E_CONFIG_FILE` environment variable at an alternative +file: + +```bash +E2E_CONFIG_FILE=/path/to/my-config.yaml go test -v ./... +``` + +Configuration is resolved in two layers: built-in defaults, then the +config file. Pointing `E2E_CONFIG_FILE` at a personal file outside the +repository is the recommended way to keep local overrides (including +credentials) out of version control. + +## Log Collection + +During a test run, the test suite streams logs from all relevant pods in +the cluster using stern. Logs are written to a directory on the local +filesystem. The following components are covered: + +- Klio operator +- CNPG operator +- PostgreSQL instances +- RustFS server and init-job pods +- Klio server pods + +The log directory is controlled by the `logDir` key in the config file +(default: `e2e_cluster_logs/` relative to the test working directory). + +When running via `task integration:e2e`, logs are exported to +`e2e_cluster_logs/` in the repository root after the test run +completes. In CI, that directory is uploaded as a workflow artifact +named `e2e_cluster_logs` and is available for download from the +GitHub Actions run page. + +### Namespace object dumps on failure + +When a feature fails, its teardown writes a JSON snapshot of the +objects in the test namespace under `//`, one +`.json` file per resource kind (for example `PodList.json` and +`ClusterList.json`), before the namespace is deleted. It covers the Klio +and CloudNativePG custom resources together with the core workload +objects (Pods, PVCs, Jobs, Events, ServiceAccounts, EndpointSlices, +StatefulSets and Deployments), giving a point-in-time view of the +cluster state at the moment of failure. + +## Running on OpenShift + +The project includes an OpenShift-based e2e pipeline that validates +Klio on a single-node OpenShift (SNO) cluster. The cluster is +provisioned with [CRC](https://github.com/crc-org/crc-github-action) +(CodeReady Containers) using the `openshift` preset, which already +ships OLM, the operator catalogs, and a default StorageClass. The +pipeline then installs cert-manager, community CNPG, and the Klio +operator via OLM subscriptions and runs the same Go e2e suite as the +Kind path. + +### OpenShift prerequisites + +CRC runs the cluster inside a KVM virtual machine, so the runner must +expose `/dev/kvm` (nested virtualization). In addition to Go and Task, +the pipeline requires: + +- A pre-built Klio OLM catalog artifact + (`operator/klio-operator-catalog-source.yaml`) +- A Red Hat pull secret (`REDHAT_PULL`) used to start the CRC cluster. + This is the same secret, under the same name, that `cloudnative-pg` + uses to install its own OpenShift test clusters. + +The Klio operator, bundle, catalog and operand images are public on +`ghcr.io`, so no registry credentials are needed. + +:::note +The Red Hat pull secret is not available to forks, so the +`openshift-e2e` CI job is gated on the `OPENSHIFT_ENABLED` repository +variable and is skipped unless a repository opts in. To run it on a +fork, set the `OPENSHIFT_ENABLED` variable to `true` and add your own +`REDHAT_PULL` secret. Running the suite locally against your own CRC +cluster needs neither. +::: + +### Running locally + +Start a CRC `openshift` cluster yourself, then point the tasks at its +kubeconfig (CRC writes it to `~/.kube/config`): + +```bash +export EXTERNAL_KUBECONFIG="$HOME/.kube/config" + +# Generate the Klio OLM CatalogSource the deploy step requires (or +# download the klio-olm artifact from the ci.yml olm job instead). +task olm:catalog-source + +task integration:e2e-openshift +``` + +This command will: + +- Deploy cert-manager, CNPG, and Klio via OLM subscriptions +- Run the full e2e suite + +> **Storage note:** CRC's default StorageClass is hostPath-backed and +> cannot expand volumes, so `task integration:e2e-openshift` deploys +> the upstream `csi-driver-host-path` (the same driver the Kind path +> uses) via its `integration:setup-crc-storage` dependency and points +> `storageClass` at `csi-hostpath-sc`, which has `allowVolumeExpansion` +> enabled for the `PVCResize` feature. This runs the same way in CI and +> locally; override `STORAGE_CLASS` to use another expandable class. + +### CI + +The OpenShift e2e job does not run on regular pull requests. It runs +on pushes to `main`, on the `release-please--branches--main` release +PR, and on demand via the CI workflow's `workflow_dispatch` +(`run-openshift` input). When it runs, the `core` and `operator` jobs +are forced to build so their images are published to GHCR before the +suite pulls them; the deploy step also consumes the `klio-olm` +CatalogSource artifact produced by the always-on `olm` job. It is +defined in `.github/workflows/openshift-e2e.yml` and provisions the +cluster with the `crc-org/crc-github-action` action. + +## Environment Variables + +The following environment variables can be used to customize the +tasks execution: + +- `KIND_CLUSTER_NAME` - Name of the Kind cluster to use (required + for the Kind path) +- `E2E_CONFIG_FILE` - Path to a custom test configuration file + (default: `operator/test/e2e/e2e-config.yaml`) + +## Writing New Tests + +When adding new E2E tests: + +1. Follow the existing patterns in `backup_test.go` or + `recovery_test.go` +1. Use the machinery framework for test setup + 1. Add new feature types if needed. Everything in the framework must be + plugin-agnostic, and can be tested only through CloudNativePG APIs. +1. Register new features in `main_test.go` +1. Ensure proper cleanup of test resources + +## CI Integration + +The E2E tests are automatically run in CI when: + +- Changes are made to core components +- Changes are made to operator components +- Pull requests are submitted + +The CI environment automatically handles cluster setup and cleanup. +After the run, cluster logs are uploaded as a workflow artifact named +`e2e_cluster_logs` and can be downloaded from the GitHub Actions run +page regardless of whether the tests passed or failed. diff --git a/documentation/web/versioned_docs/version-0.0.18/user/_helm_chart_values.md b/documentation/web/versioned_docs/version-0.0.18/user/_helm_chart_values.md new file mode 100644 index 00000000..67797466 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/_helm_chart_values.md @@ -0,0 +1,42 @@ +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| certmanager.clusterDomain | string | `"cluster.local"` | The DNS domain of the cluster | +| certmanager.createMetricsCertificate | bool | `true` | Create certificates for the metrics service. | +| certmanager.createPluginClientCertificate | bool | `true` | Create certificates for the plugin client. | +| certmanager.createPluginServerCertificate | bool | `true` | Create certificates for the plugin server. | +| certmanager.duration | string | `"2160h"` | The duration of the certificates. | +| certmanager.enable | bool | `true` | Enable cert-manager integration for certificate creation. | +| certmanager.renewBefore | string | `"360h"` | The renew before time for the certificates. | +| controllerManager.affinity | object | `{}` | Affinity rules for the operator deployment. | +| controllerManager.manager.args | list | `["--metrics-bind-address=:8443","--leader-elect","--health-probe-bind-address=:8081","--plugin-server-cert=/pluginServer/tls.crt","--plugin-server-key=/pluginServer/tls.key","--plugin-client-cert=/pluginClient/tls.crt","--plugin-server-address=:9090"]` | List of command line arguments to pass to the controller manager. | +| controllerManager.manager.containerSecurityContext | object | `{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]}}` | The security context for the controller manager container. | +| controllerManager.manager.env | object | `{"SIDECAR_IMAGE":"ghcr.io/cloudnative-pg/klio:v0.0.18"}` | The environment variables to set in the controller manager container. Set OTEL_* variables here to enable OpenTelemetry export. See the OpenTelemetry Observability page in the documentation. | +| controllerManager.manager.image.pullPolicy | string | `"Always"` | The controller manager container imagePullPolicy. | +| controllerManager.manager.image.pullSecrets | list | `[]` | The list of imagePullSecrets. | +| controllerManager.manager.image.repository | string | `"ghcr.io/cloudnative-pg/klio-operator"` | The image to use for the controller manager container. | +| controllerManager.manager.image.tag | string | `"v0.0.18"` | The tag to use for the controller manager container image. | +| controllerManager.manager.livenessProbe | object | `{"httpGet":{"path":"/healthz","port":8081},"initialDelaySeconds":15,"periodSeconds":20}` | Liveness probe configuration. | +| controllerManager.manager.readinessProbe | object | `{"httpGet":{"path":"/readyz","port":8081},"initialDelaySeconds":5,"periodSeconds":10}` | Readiness probe configuration. | +| controllerManager.manager.resources | object | `{"limits":{"cpu":"500m","memory":"128Mi"},"requests":{"cpu":"10m","memory":"64Mi"}}` | The resources to allocate. | +| controllerManager.nodeSelector | object | `{}` | NodeSelector for the operator deployment. | +| controllerManager.podSecurityContext | object | `{"runAsNonRoot":true,"seccompProfile":{"type":"RuntimeDefault"}}` | The security context for the controller manager pod. | +| controllerManager.priorityClassName | string | `""` | Priority class name for the controller manager pod. | +| controllerManager.serviceAccount.annotations | object | `{}` | The annotations to add to the service account. | +| controllerManager.tolerations | list | `[]` | Tolerations for the operator deployment. | +| controllerManager.topologySpreadConstraints | list | `[]` | Topology Spread Constraints for the operator deployment. | +| fullnameOverride | string | `""` | Override the fully qualified name of the Helm Chart. | +| kubernetesClusterDomain | string | `"cluster.local"` | The domain for the Kubernetes cluster. | +| metricsService.enable | bool | `true` | Enable the metrics service for the controller manager. | +| metricsService.metricsServiceSecret | string | `"klio-metrics-server-cert"` | The name of the secret containing the TLS certificate for the metrics service. | +| metricsService.ports | list | `[{"name":"https","port":8443,"protocol":"TCP","targetPort":8443}]` | The port the metrics service will listen on. | +| metricsService.type | string | `"ClusterIP"` | Service type for the metrics service. | +| nameOverride | string | `"klio"` | Override the name of the Helm Chart. | +| plugin.clientSecret | string | `"klio-plugin-client-tls"` | The Client TLS certificate. | +| plugin.name | string | `"klio.cnpg.io"` | The name the plugin will use to register itself with the CNPG Operator. | +| plugin.port | int | `9090` | The port the plugin will listen on. It must match the "--plugin-server-address" argument. | +| plugin.serverSecret | string | `"klio-plugin-server-tls"` | The Server TLS certificate. | +| prometheus.enable | bool | `true` | To enable a ServiceMonitor to export metrics to Prometheus set true. | +| serviceAccount.annotations | object | `{}` | The annotations to add to the service account. | +| serviceAccount.automount | bool | `true` | Automount service account token. | +| serviceAccount.create | bool | `true` | Specifies whether a service account should be created. | +| serviceAccount.name | string | `""` | The name of the service account | diff --git a/documentation/web/versioned_docs/version-0.0.18/user/api/_category_.json b/documentation/web/versioned_docs/version-0.0.18/user/api/_category_.json new file mode 100644 index 00000000..c257999a --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/api/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "API Reference", + "position": 99, + "collapsed": true, + "collapsible": true +} diff --git a/documentation/web/versioned_docs/version-0.0.18/user/api/_klio_api.md b/documentation/web/versioned_docs/version-0.0.18/user/api/_klio_api.md new file mode 100644 index 00000000..d666a314 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/api/_klio_api.md @@ -0,0 +1,440 @@ +## Packages +- [klio.cnpg.io/v1alpha1](#kliocnpgiov1alpha1) + + +## klio.cnpg.io/v1alpha1 + +Package v1alpha1 contains API Schema definitions for the klio v1alpha1 API group. + +### Resource Types +- [PluginConfiguration](#pluginconfiguration) +- [Server](#server) + + + +#### Cache + + + +Cache defines the configuration for the cache directory. + + + +_Appears in:_ +- [Tier1Configuration](#tier1configuration) +- [Tier2Configuration](#tier2configuration) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `pvcTemplate` _[PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.36/#persistentvolumeclaimspec-v1-core)_ | | True | | | + + +#### Data + + + +Data defines the configuration for the data directory. + + + +_Appears in:_ +- [Tier1Configuration](#tier1configuration) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `pvcTemplate` _[PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.36/#persistentvolumeclaimspec-v1-core)_ | Template to be used to generate the Persistent Volume Claim needed for the data folder,
containing base backups and WAL files. | True | | | + + +#### EmbeddedObjectMeta + + + +EmbeddedObjectMeta contains metadata for embedded objects. + + + +_Appears in:_ +- [PodTemplateSpec](#podtemplatespec) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `labels` _object (keys:string, values:string)_ | | | | Optional: \{\}
| +| `annotations` _object (keys:string, values:string)_ | | | | Optional: \{\}
| + + +#### FileReference + + + +FileReference specifies a file from a volume source. + + + +_Appears in:_ +- [FileSource](#filesource) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `volume` _[VolumeSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.36/#volumesource-v1-core)_ | Volume is the volume source to mount. | True | | | +| `path` _string_ | Path is the file path within the mounted volume. | True | | | + + +#### FileSource + + + +FileSource specifies a source for a file. This wrapper allows future +alternatives to be added without breaking the API. + +_Validation:_ +- ExactlyOneOf: [fileReference] + +_Appears in:_ +- [Tier1Configuration](#tier1configuration) +- [Tier2Configuration](#tier2configuration) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `fileReference` _[FileReference](#filereference)_ | FileReference specifies a file from a volume source. | | | Optional: \{\}
| + + +#### ImageConfiguration + + + +ImageConfiguration contains the information needed to download +the Klio image. + + + +_Appears in:_ +- [ServerSpec](#serverspec) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `image` _string_ | Image is the image to be used for the Klio server | True | | | +| `imagePullPolicy` _[PullPolicy](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.36/#pullpolicy-v1-core)_ | ImagePullPolicy defines the policy for pulling the image | | IfNotPresent | Optional: \{\}
| +| `imagePullSecrets` _[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.36/#localobjectreference-v1-core) array_ | ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the
images | | | Optional: \{\}
| + + +#### PluginConfiguration + + + +PluginConfiguration is the Schema for the client configuration API. + + + + + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `apiVersion` _string_ | `klio.cnpg.io/v1alpha1` | True | | | +| `kind` _string_ | `PluginConfiguration` | True | | | +| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.36/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | True | | | +| `spec` _[PluginConfigurationSpec](#pluginconfigurationspec)_ | | True | | | +| `status` _[PluginConfigurationStatus](#pluginconfigurationstatus)_ | | | | Optional: \{\}
| + + +#### PluginConfigurationSpec + + + +PluginConfigurationSpec defines the desired state of client configuration. + + + +_Appears in:_ +- [PluginConfiguration](#pluginconfiguration) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `serverAddress` _string_ | ServerAddress is the address of the Klio server | True | | MinLength: 1
Required: \{\}
| +| `tier1` _[Tier1PluginConfiguration](#tier1pluginconfiguration)_ | Tier1 is the Tier 1 configuration | | | Optional: \{\}
| +| `tier2` _[Tier2PluginConfiguration](#tier2pluginconfiguration)_ | Tier2 is the Tier 2 configuration | | | Optional: \{\}
| +| `walPrefetch` _[WALPrefetchConfiguration](#walprefetchconfiguration)_ | WALPrefetch configures WAL prefetching behavior during recovery operations. | | | Optional: \{\}
| +| `clientSecretName` _string_ | ClientSecretName is the name of the secret containing the client credentials | True | | MinLength: 1
Required: \{\}
| +| `serverSecretName` _string_ | ServerSecretName is the name of the secret containing the server TLS certificate | True | | MinLength: 1
Required: \{\}
| +| `clusterName` _string_ | ClusterName is the name of the PostgreSQL cluster we are connecting to | True | | MinLength: 1
Required: \{\}
| +| `pprof` _boolean_ | Pprof enables the pprof endpoint for performance profiling | | | Optional: \{\}
| +| `mode` _[ServerMode](#servermode)_ | Mode selects the operation mode of the plugin. | True | standard | Enum: [standard read-only]
| +| `containers` _[Container](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.36/#container-v1-core) array_ | Containers allows defining a list of containers that will be merged with the Klio sidecar containers.
This enables users to customize the sidecars with additional environment variables, volume mounts,
resource limits, and other container settings without polluting the PostgreSQL container environment.
Merge behavior:
- Containers are matched by name (klio-plugin, klio-restore)
- User customizations serve as the base
- Klio required values (name, args, CONTAINER_NAME env var) always override user values
- User-defined environment variables and volume mounts are preserved
- Template defaults are applied only for fields not set by the user or Klio | | | MaxItems: 2
Optional: \{\}
| + + +#### PluginConfigurationStatus + + + +PluginConfigurationStatus defines the observed state of ClientConfig. + + + +_Appears in:_ +- [PluginConfiguration](#pluginconfiguration) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `conditions` _[Condition](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.36/#condition-v1-meta) array_ | Conditions represent the latest available observations of the
PluginConfiguration's state. | | | Optional: \{\}
| + + +#### PodTemplateSpec + + + +PodTemplateSpec describes the data a pod should have when created from a template. + + + +_Appears in:_ +- [ServerSpec](#serverspec) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `metadata` _[EmbeddedObjectMeta](#embeddedobjectmeta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | | | Optional: \{\}
| +| `spec` _[PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.36/#podspec-v1-core)_ | | | | Optional: \{\}
| + + +#### Queue + + + +Queue defines the configuration for the directory hosting the +task queue. + + + +_Appears in:_ +- [ServerSpec](#serverspec) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `pvcTemplate` _[PersistentVolumeClaimSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.36/#persistentvolumeclaimspec-v1-core)_ | PersistentVolumeClaimTemplate is used to generate the configuration for
the PVC hosting the work queue. | True | | | + + +#### RetentionPolicy + + + +RetentionPolicy defines how many backups we should keep. + + + +_Appears in:_ +- [Tier1PluginConfiguration](#tier1pluginconfiguration) +- [Tier2PluginConfiguration](#tier2pluginconfiguration) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `keepLatest` _integer_ | KeepLatest is the number of latest backups to keep
optional | True | | | +| `keepAnnual` _integer_ | KeepAnnual is the number of annual backups to keep
optional | True | | | +| `keepMonthly` _integer_ | KeepMonthly is the number of monthly backups to keep
optional | True | | | +| `keepWeekly` _integer_ | KeepWeekly is the number of weekly backups to keep
optional | True | | | +| `keepDaily` _integer_ | KeepDaily is the number of daily backups to keep
optional | True | | | +| `keepHourly` _integer_ | KeepHourly is the number of hourly backups to keep
optional | True | | | + + +#### S3Configuration + + + +S3Configuration is the configuration to a S3 defined tier 2. + + + +_Appears in:_ +- [Tier2Configuration](#tier2configuration) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `bucketName` _string_ | BucketName is the name of the bucket | True | | | +| `prefix` _string_ | Prefix is the path within the bucket under which all Klio objects
are stored, allowing a single bucket to be shared across multiple deployments. | | | Optional: \{\}
| +| `endpoint` _string_ | Endpoint is the endpoint to be used | | | Optional: \{\}
| +| `region` _string_ | Region is the region to be used | | | Optional: \{\}
| +| `accessKeyId` _[SecretKeySelector](https://pkg.go.dev/github.com/cloudnative-pg/machinery/pkg/api#SecretKeySelector)_ | The S3 access key ID | | | Optional: \{\}
| +| `secretAccessKey` _[SecretKeySelector](https://pkg.go.dev/github.com/cloudnative-pg/machinery/pkg/api#SecretKeySelector)_ | The S3 access key | | | Optional: \{\}
| +| `sessionToken` _[SecretKeySelector](https://pkg.go.dev/github.com/cloudnative-pg/machinery/pkg/api#SecretKeySelector)_ | The S3 session token | | | Optional: \{\}
| +| `customCaBundle` _[SecretKeySelector](https://pkg.go.dev/github.com/cloudnative-pg/machinery/pkg/api#SecretKeySelector)_ | A pointer to a custom CA bundle | | | Optional: \{\}
| + + +#### Server + + + +Server is the Schema for the servers API. + + + + + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `apiVersion` _string_ | `klio.cnpg.io/v1alpha1` | True | | | +| `kind` _string_ | `Server` | True | | | +| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.36/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | True | | | +| `spec` _[ServerSpec](#serverspec)_ | | True | | | +| `status` _[ServerStatus](#serverstatus)_ | | | | Optional: \{\}
| + + +#### ServerMode + +_Underlying type:_ _string_ + +ServerMode defines the operation mode of the Server. + + + +_Appears in:_ +- [PluginConfigurationSpec](#pluginconfigurationspec) +- [ServerSpec](#serverspec) + +| Field | Description | +| --- | --- | +| `standard` | ModeStandard corresponds to server with standard read/write permissions.
| +| `read-only` | ModeReadOnly corresponds to a server with read-only permissions.
| + + +#### ServerSpec + + + +ServerSpec defines the desired state of Server. + + + +_Appears in:_ +- [Server](#server) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `image` _string_ | Image is the image to be used for the Klio server | True | | | +| `imagePullPolicy` _[PullPolicy](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.36/#pullpolicy-v1-core)_ | ImagePullPolicy defines the policy for pulling the image | | IfNotPresent | Optional: \{\}
| +| `imagePullSecrets` _[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.36/#localobjectreference-v1-core) array_ | ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the
images | | | Optional: \{\}
| +| `tlsSecretName` _string_ | TLSSecretName is the name of the Kubernetes secret containing the server-side certificate
to be used for the Klio server. | True | | | +| `caSecretName` _string_ | ClientCASecretName is the name of the Kubernetes secret containing the CA certificate
to be used by the Klio server to validate the users. | True | | | +| `mode` _[ServerMode](#servermode)_ | Mode selects the operation mode of the server. | True | standard | Enum: [standard read-only]
| +| `tier1` _[Tier1Configuration](#tier1configuration)_ | Tier1 is the Tier 1 configuration | True | | | +| `tier2` _[Tier2Configuration](#tier2configuration)_ | Tier2 is the Tier 2 configuration | True | | | +| `queue` _[Queue](#queue)_ | Queue is the configuration of the PVC that should host
the task queue. | | | Optional: \{\}
| +| `template` _[PodTemplateSpec](#podtemplatespec)_ | Template to override the default StatefulSet of the Klio server.
WARNING: Modifying this template may break the server functionality if not done carefully.
This field is primarily intended for advanced configuration such as telemetry setup.
Use at your own risk and ensure thorough testing before applying changes. | | | Optional: \{\}
| + + +#### ServerStatus + + + +ServerStatus defines the observed state of Server. + + + +_Appears in:_ +- [Server](#server) + + + +#### TLSConfiguration + + + +TLSConfiguration contains the information needed to configure +the PKI infrastructure of the Klio server. + + + +_Appears in:_ +- [ServerSpec](#serverspec) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `tlsSecretName` _string_ | TLSSecretName is the name of the Kubernetes secret containing the server-side certificate
to be used for the Klio server. | True | | | +| `caSecretName` _string_ | ClientCASecretName is the name of the Kubernetes secret containing the CA certificate
to be used by the Klio server to validate the users. | True | | | + + +#### Tier1Configuration + + + +Tier1Configuration is the tier 1 configuration. + + + +_Appears in:_ +- [ServerSpec](#serverspec) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `cache` _[Cache](#cache)_ | Cache is the configuration of the PVC that should be
used for the cache. | True | | | +| `data` _[Data](#data)_ | Data is the configuration of the PVC that should be used
for the base backups. | True | | | +| `encryptionKeyFile` _[FileSource](#filesource)_ | EncryptionKeyFile specifies the Age-encrypted encryption key file. | True | | ExactlyOneOf: [fileReference]
| +| `identityFile` _[FileSource](#filesource)_ | IdentityFile specifies the Age identity (private key) file used to
decrypt the encryption key. | True | | ExactlyOneOf: [fileReference]
| + + +#### Tier1PluginConfiguration + + + +Tier1PluginConfiguration configures tier1 backup and recovery settings. + + + +_Appears in:_ +- [PluginConfigurationSpec](#pluginconfigurationspec) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `retention` _[RetentionPolicy](#retentionpolicy)_ | RetentionPolicy defines how many backups we should keep | | | Optional: \{\}
| + + +#### Tier2Configuration + + + +Tier2Configuration is the tier 2 configuration. + + + +_Appears in:_ +- [ServerSpec](#serverspec) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `cache` _[Cache](#cache)_ | Cache is the configuration of the PVC that should be
used for the cache. | True | | | +| `s3` _[S3Configuration](#s3configuration)_ | S3 contains the configuration parameters for an S3-based tier 2. | True | | | +| `encryptionKeyFile` _[FileSource](#filesource)_ | EncryptionKeyFile specifies the Age-encrypted encryption key file. | True | | ExactlyOneOf: [fileReference]
| +| `identityFile` _[FileSource](#filesource)_ | IdentityFile specifies the Age identity (private key) file used to
decrypt the encryption key. | True | | ExactlyOneOf: [fileReference]
| + + +#### Tier2PluginConfiguration + + + +Tier2PluginConfiguration configures tier2 backup and recovery settings. + + + +_Appears in:_ +- [PluginConfigurationSpec](#pluginconfigurationspec) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `enableBackup` _boolean_ | EnableBackup controls whether WAL and base backups should be stored in tier2 | | | Optional: \{\}
| +| `enableRecovery` _boolean_ | EnableRecovery controls whether tier2 should be included in the recovery source list | | | Optional: \{\}
| +| `retention` _[RetentionPolicy](#retentionpolicy)_ | RetentionPolicy defines how many backups we should keep | | | Optional: \{\}
| + + +#### WALPrefetchConfiguration + + + +WALPrefetchConfiguration configures WAL prefetching during recovery. + + + +_Appears in:_ +- [PluginConfigurationSpec](#pluginconfigurationspec) + +| Field | Description | Required | Default | Validation | +| --- | --- | --- | --- | --- | +| `count` _integer_ | Count is the number of WAL files to prefetch ahead during recovery.
A value of 0 disables prefetching. | True | 2 | Maximum: 64
Minimum: 0
| +| `maxConcurrentDownloads` _integer_ | MaxConcurrentDownloads is the maximum number of concurrent WAL downloads. | True | 4 | Maximum: 64
Minimum: 1
| + + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/api/klio_api.mdx b/documentation/web/versioned_docs/version-0.0.18/user/api/klio_api.mdx new file mode 100644 index 00000000..c2cbf689 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/api/klio_api.mdx @@ -0,0 +1,5 @@ +import KlioAPI from './_klio_api.md'; + +# Klio API reference + + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/architectures.md b/documentation/web/versioned_docs/version-0.0.18/user/architectures.md new file mode 100644 index 00000000..c95b3fc9 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/architectures.md @@ -0,0 +1,205 @@ +--- +sidebar_position: 3 +--- + +# Architectures & Tiers + +Klio employs a multi-tiered architecture designed to balance performance, +resilience, and cost. This approach separates immediate, high-speed backup and +recovery operations from long-term archival and disaster recovery (DR) needs. +The architecture is built around two distinct storage tiers, each serving a +specific purpose in the data lifecycle. + +![Multi-tiered architecture overview](images/overview-multi-tiers.png) + +--- + +## Tier 1: Primary Storage (The Klio Server) + +**Tier 1** is the core operational tier, also referred to as the **Main Tier** +or **Klio Server**. It's designed for speed and provides immediate access to +all necessary backup artifacts for most recovery scenarios. + +This tier consists of a **local Persistent Volume (PV)** deployed by the +Klio Server. It can be located in the same namespace as the PostgreSQL cluster +or in a different one within the same Kubernetes cluster +(see the ["Tier 1 Architectures" section below](#tier-1-architectures)). + +Its purpose is to store the **WAL archive** and the **catalog of physical base +backups**. Its high-throughput, low-latency nature is optimized for several key +tasks: + +- Receiving a continuous stream of WAL files directly from the PostgreSQL + primary. +- Storing base backups created from the primary. +- Serving as the source for asynchronously replicating data to Tier 2. +- Managing retention policies for all tiers. + +### Tier 1 Architectures + +Klio supports several flexible deployment architectures for its Tier 1 storage. + +On the physical layer, it is recommended that both compute and, most +importantly, storage are separate from the PostgreSQL clusters. + +:::warning +Placing Tier 1 on the same nodes and storage as the PostgreSQL clusters +severely impacts the business continuity objectives of your organization. +::: + +On the logical layer, a **Klio Server** can reside in the same namespace as the +PostgreSQL cluster(s) it manages or in a separate, dedicated namespace. + +When choosing an architecture, it's important to consider +**security and tenancy**. +PostgreSQL clusters managed by a single Klio Server share the same master +encryption key. For this reason, it's recommended to use separate Klio Servers +for clusters that serve different tenants or have distinct security +requirements. + +#### Clusters and Klio Server in the Same Namespace + +The simplest deployment places the Klio Server in the same namespace as the +PostgreSQL cluster(s). + +This can be a **dedicated 1:1 mapping** (one Klio Server per cluster): + +![Cluster and Klio server in the same namespace](images/tier1-namespace-single.png) + +Or a **shared N:1 mapping** where one server manages all clusters in the +namespace. + +![Multiple clusters share a Klio server in the same namespace](images/tier1-namespace-multi.png) + +#### Clusters and Klio Server in Different Namespaces + +For greater isolation or centralized management, the Klio Server can be +deployed in a namespace separate from the PostgreSQL clusters it protects. + +The following diagram shows a PostgreSQL cluster being backed up by a Klio +Server in another namespace: + +![Cluster and Klio server in a different namespace](images/tier1-shared-single.png) + +This model also allows a central Klio Server to manage clusters that reside in +different namespaces, as shown below: + +![Multiple clusters share a Klio server in the same namespace](images/tier1-shared-multi.png) + +### Reserving Nodes for Klio Workloads + +For dedicated performance and resource isolation, you can reserve specific +worker nodes for Klio pods using Kubernetes taints and tolerations. + +1. **Taint the Node**: Apply a taint to the desired node. This prevents most + pods from being scheduled on it. + + ```sh + kubectl taint node node-role.kubernetes.io/klio=:NoSchedule + ``` + +1. **Add Toleration to Klio Server**: Add the corresponding toleration to your + Klio `Server` resource, adding it to `.spec.template`. + This allows the Klio Server to be scheduled on the tainted node. + + ```yaml + # In your Server resource definition + spec: + template: + spec: + containers: [] + tolerations: + - key: "node-role.kubernetes.io/klio" + operator: "Exists" + effect: "NoSchedule" + ``` + +--- + +## Tier 2: Secondary Storage (Object Storage) + +**Tier 2** provides durable, long-term storage for robust disaster recovery +(DR) strategies. It's physically and logically separate from the primary +Kubernetes cluster and typically consists of an external object storage system, +such as Amazon S3, Google Cloud Storage, or Azure Blob Storage. +Storing backups off-site ensures **geographical redundancy**, protecting data +against a full cluster or site failure. + +Klio asynchronously relays both base backups and WAL files from Tier 1 to +Tier 2. This decoupling ensures that primary backup and recovery operations in +Tier 1 are not directly affected by the latency or availability of the remote +object storage. + +Additionally, Tier 2 can serve as a read-only fallback source. In a distributed +CloudNativePG topology, this allows a Klio server at a secondary site to use +the shared Tier 2 storage to bootstrap a new cluster, enhancing DR +capabilities. + +### Snapshot Pinning + +When Tier 2 is enabled, Klio automatically pins snapshots in Tier 1 with a +`klio.io/tier2` pin. This mechanism prevents retention policies from +automatically deleting snapshots before they have been successfully migrated +to Tier 2. + +The pinning workflow operates as follows: + +1. When a backup is created with Tier 2 enabled, all snapshot components + (tablespaces, PGDATA, control file, and metadata) are tagged with the + `klio.io/tier2` pin. +1. The pin protects the snapshot from being removed by retention policy + enforcement, even if it would otherwise be eligible for deletion. +1. After the snapshot is successfully migrated to Tier 2, Klio removes the + pin, allowing normal retention policy management to resume. + +This ensures data integrity during the asynchronous migration process and +guarantees that no backup is lost due to retention policies running before +migration completes. + +### Restoring from Tier 2 + +Tier 2 is only used as a restore source, for both base backups and WAL files, +when `enableRecovery` is set to `true`. Enabling Tier 2 for backup alone +(`enableBackup: true`) does not opt a cluster into restoring from Tier 2. + +When `enableRecovery` is `true`, a backup requested for restore is first +looked up in Tier 1. If it is not found in Tier 1, Klio automatically checks +Tier 2. This fallback mechanism ensures that backups that have been migrated +to Tier 2 are still accessible for restore operations. + +When Tier 2 recovery is enabled and a backup exists in both tiers, Tier 1 +takes precedence as restore from it will be faster. + +### Read-Only Server Mode + +The Klio server supports **read-only mode** (`mode: read-only`), which serves +backups and WAL files from Tier 2 object storage without accepting write +operations. This mode is designed for disaster recovery scenarios where you +need restore capabilities without the cost of local storage or the risk of +accepting new backups. + +Read-only servers are particularly useful for CloudNativePG +[Replica Clusters](https://cloudnative-pg.io/docs/current/replica_cluster/) in +secondary regions or datacenters. Multiple read-only servers can restore from +a single S3 bucket populated by one primary server. + +In read-only mode, all read and restore operations from Tier 2 function +normally, while write operations (backup creation, WAL streaming, retention +policies) are rejected. + +See the [Configuring Read-Only Mode](klio_server.md#read-only-mode) +section for configuration examples. + +--- + +## Planning Your Backup Strategy + +When planning your backup strategy with Klio, **Tier 1 is the most critical +layer** to define architecturally. You have several options, ranging from +running Klio servers on any worker node using your cluster's primary storage +solution, to dedicating a single worker node with local storage for a +centralized Klio server. + +**Tier 2** is often determined by your organization's infrastructure teams, who +have likely already selected one or more standard object storage solutions for +long-term archival. diff --git a/documentation/web/versioned_docs/version-0.0.18/user/backup_and_restore.md b/documentation/web/versioned_docs/version-0.0.18/user/backup_and_restore.md new file mode 100644 index 00000000..8943ce33 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/backup_and_restore.md @@ -0,0 +1,303 @@ +--- +sidebar_position: 7 +--- + +# Backup and Restore + +This guide explains how to take backups of PostgreSQL clusters managed by +CloudNativePG and restore them using Klio. + +## Overview + +Klio follows PostgreSQL's native physical backup and recovery mechanisms, +leveraging CloudNativePG's backup and restore capabilities through its +[`Backup` resource](https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-Backup) +and +[`ScheduledBackup` resource](https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-ScheduledBackup). + +A working **online backup** is composed of: + +- A **physical base backup**: A filesystem copy of the PostgreSQL data directory. +- A set of **WAL (Write-Ahead Log) files**: Continuous logs of all changes made + to the database during the entire period of the base backup. + +:::tip +It is recommended to periodically test backup restores to ensure correct +recovery procedures. +::: + +## Prerequisites + +Before performing backup and restore operations, ensure you have: + +- A running [Klio server](./klio_server.md) with proper configuration +- A PostgreSQL cluster configured with the [Klio plugin](./plugin_configuration.md) + +## Taking a Backup + +With the Klio plugin configured, you can take on-demand backups using +CloudNativePG's [`Backup` resource](https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-Backup) +or the [Kubectl plugin](https://cloudnative-pg.io/documentation/current/kubectl-plugin/#requesting-a-new-physical-backup) +for CNPG. + +### Create a Backup + +You can trigger a new backup by creating a `Backup` resource. + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Backup +metadata: + name: my-cluster-backup-20251027 + namespace: default +spec: + method: plugin + target: primary + cluster: + name: my-cluster + pluginConfiguration: + name: klio.cnpg.io +``` + +Apply the manifest: + +```bash +kubectl apply -f backup.yaml +``` + +Alternatively, you can request a backup directly using the + [`kubectl cnpg` plugin](https://cloudnative-pg.io/documentation/current/kubectl-plugin/#requesting-a-new-physical-backup): + +```bash +kubectl cnpg backup my-cluster \ + --method plugin \ + --plugin-name klio.cnpg.io \ + --backup-target primary +``` + +If you don’t specify the `--backup-name` option, the `cnpg backup` command +automatically generates one using the format `-`, +which is suitable in most cases. + +For a complete list of available options, run: + +```bash +kubectl cnpg backup --help +``` + +### Monitor Backup Progress + +Check the backup status: + +```bash +# Watch the backup status +kubectl get backup my-cluster-backup-20251027 -w + +# Get detailed backup information +kubectl describe backup my-cluster-backup-20251027 +``` + +A successful backup will show: + +``` +NAME AGE CLUSTER METHOD PHASE ERROR +my-cluster-backup-20251027 2m my-cluster plugin Completed +``` + +### Scheduled Backups + +You can schedule automatic backups using CloudNativePG's +[`ScheduledBackup` resource](https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-ScheduledBackup). + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: ScheduledBackup +metadata: + name: my-cluster-daily-backup + namespace: default +spec: + # Cron schedule: daily at 2:00 AM + schedule: "0 0 2 * * *" + method: plugin + target: primary + cluster: + name: my-cluster + pluginConfiguration: + name: klio.cnpg.io +``` + +Apply the scheduled backup: + +```bash +kubectl apply -f scheduled-backup.yaml +``` + +## Backup Retention and Maintenance + +Klio automatically manages backup retention based on the +[retention policies](plugin_configuration.md#retention-policies) defined in the +`PluginConfiguration` referred by the `Cluster`. + +:::warning +Deleting a `Backup` resource through `kubectl` only removes the Kubernetes +object. The actual backup data in the Klio server will be retained according to +the retention policy. +::: + +## Finding Your backupID for Recovery + +To restore a specific backup, you need its backupID, otherwise Klio will +choose the latest one autonomously. +You can list all available, completed Backup resources using kubectl: + +```bash +kubectl get backups -n +``` + +Once you identify the backup you want to use, you can identify its backupID + +```bash +kubectl get backup -n -o jsonpath='{.status.backupId}' +``` + +## Restoring from a Backup + +Klio supports restoring PostgreSQL clusters from backups using CloudNativePG's +recovery mechanism. Unlike traditional in-place recovery, Klio follows +CloudNativePG's approach of **bootstrapping a new cluster** from a backup, +which ensures data integrity and allows for flexible recovery scenarios. + +### How Recovery Works + +Klio integrates with CloudNativePG's recovery process by performing the +following actions during a restore: + +1. **Restores the base backup**: Copies the physical backup data to the new + cluster's data directory. Uses `klio restore` command under the hood. +1. **Restores WAL files**: Klio is configured to retrieve the WAL files + required for PostgreSQL recovery as needed. + Uses `klio get-wal` command under the hood. + +The execution of these commands is driven by CloudNativePG's recovery +mechanism, which ensures that the PostgreSQL server starts correctly after +the restore. + +A restored cluster operates independently of the original cluster. By default, +it will **not** perform backups unless you explicitly configure the Klio plugin +for backup operations in the new cluster's specification. + +### Full Restore + +To restore from a backup, create a new `Cluster` resource with a +`bootstrap.recovery` section that references the Klio plugin: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: my-restored-cluster + namespace: default +spec: + instances: 3 + + # Bootstrap from a Klio backup + bootstrap: + recovery: + source: source + # OPTIONAL: Specify the backup to restore from + recoveryTarget: + backupID: my-cluster-backup-YYYYMMDDHHMMSS + + # Reference the Klio plugin configuration + externalClusters: + - name: source + plugin: + name: klio.cnpg.io + parameters: + pluginConfigurationRef: my-restore-config + + storage: + size: 10Gi +``` + +:::note +Klio will choose the latest backup available in case the `backupID` field is +omitted. +::: + +Create a corresponding `PluginConfiguration` that specifies which backup to +restore: + +```yaml +apiVersion: klio.cnpg.io/v1alpha1 +kind: PluginConfiguration +metadata: + name: my-restore-config + namespace: default +spec: + # Connection details + serverAddress: klio-server.default + clientSecretName: my-client-credentials + serverSecretName: klio-server-tls + + # Required: the name of the original cluster that was backed up + clusterName: my-cluster +``` + +The client credentials secret (`my-client-credentials`) should contain the +necessary authentication information to access the Klio server, as described +in the [Klio plugin configuration guide](./plugin_configuration.md#client-credentials-secret). + +:::note +The `clusterName` field in the `PluginConfiguration` and the `commonName` +of the certificate should match the name of the **original cluster** that +was backed up, not the name of the new restored cluster. +::: + +Apply both resources: + +```bash +kubectl apply -f restore-config.yaml +kubectl apply -f restored-cluster.yaml +``` + +### Point-in-Time Recovery (PITR) + +Klio supports Point-in-Time Recovery, allowing you to restore your database +to a specific moment in time rather than the latest available state. This is +useful for recovering from accidental data deletion or corruption. + +The process involves specifying a recovery target in the `Cluster` resource. +The available recovery targets are described in the +[CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/recovery/#recovery-targets). + +#### Example: recover to a `targetTime` + +Restore to a specific timestamp: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: my-pitr-cluster +spec: + bootstrap: + recovery: + source: source + # Recover to a specific point in time + recoveryTarget: + targetTime: "2025-11-06 15:00:00.0000+00" + # other cluster spec fields... +``` + +:::info +The target of a point in time recovery must fall between the time the base +backup was completed and the time of the latest transaction recorded in the +available WAL files. +::: + +:::note +During the Point in Time Recovery, if `targetTime` or `targetLSN` are specified, +Klio will automatically choose the closest backup for the PITR, if not defined +with the `backupID` field. +::: diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/_category_.json b/documentation/web/versioned_docs/version-0.0.18/user/cli/_category_.json new file mode 100644 index 00000000..4686f208 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/_category_.json @@ -0,0 +1,10 @@ +{ + "label": "CLI Reference", + "position": 150, + "collapsed": true, + "collapsible": true, + "link": { + "type": "generated-index", + "description": "This CLI is primarily invoked internally by the Klio Operator, running inside Klio Server pods and as sidecar containers in PostgreSQL instance pods managed by CloudNativePG. Most of its commands are not generally meant to be run directly by end users." + } +} diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio.md new file mode 100644 index 00000000..73d82172 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio.md @@ -0,0 +1,49 @@ +--- +title: klio +--- + +## klio + +PostgreSQL Backup & Recovery for CloudNativePG + +### Synopsis + +Klio is a backup and recovery engine for PostgreSQL clusters managed by CloudNativePG. + +This CLI is primarily invoked internally by the Klio Operator: it runs inside +Klio Server pods and as sidecar containers in the PostgreSQL instance pods +managed by CloudNativePG. Most of its commands are not generally meant to be +run directly by end users. + +### Options + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + -h, --help help for klio + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + -t, --toggle Help message for toggle + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio admin](klio_admin.md) - Server administration commands +* [klio backup](klio_backup.md) - Manage physical backups +* [klio get-metadata](klio_get-metadata.md) - Get the metadata of a cluster from the target Klio server +* [klio get-wal](klio_get-wal.md) - Get a WAL from the target Klio server +* [klio reset-lsn](klio_reset-lsn.md) - Reset the replication status to the latest flush LSN +* [klio restore](klio_restore.md) - Restore a PostgreSQL cluster from a Klio server +* [klio retention](klio_retention.md) - Manage the retention policy +* [klio send-wal](klio_send-wal.md) - Upload the cluster's WALs to the target Klio server +* [klio server](klio_server.md) - Starts and manage a Klio server +* [klio wal-player](klio_wal-player.md) - WAL Player Commands + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin.md new file mode 100644 index 00000000..f3e1d229 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin.md @@ -0,0 +1,39 @@ +--- +title: klio admin +--- + +## klio admin + +Server administration commands + +### Options + +``` + -h, --help help for admin +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio](klio.md) - PostgreSQL Backup & Recovery for CloudNativePG +* [klio admin delete-backup](klio_admin_delete-backup.md) - Delete a backup from the Klio server +* [klio admin list-backups](klio_admin_list-backups.md) - List the backups available in the Klio server +* [klio admin queue](klio_admin_queue.md) - Manage the queue tasks +* [klio admin refresh](klio_admin_refresh.md) - Refresh the Kopia cache and policies + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_delete-backup.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_delete-backup.md new file mode 100644 index 00000000..de0bcef8 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_delete-backup.md @@ -0,0 +1,43 @@ +--- +title: klio admin delete-backup +--- + +## klio admin delete-backup + +Delete a backup from the Klio server + +``` +klio admin delete-backup [backupName] [flags] +``` + +### Options + +``` + --cluster string The name of the cluster that owns the backup + -h, --help help for delete-backup + --socket-path string Unix socket used by the administration server (default "/tmp/.klio-admin") + --tier1 Delete the backup from tier1 (local cache) + --tier2 Delete the backup from tier2 (object storage) +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio admin](klio_admin.md) - Server administration commands + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_list-backups.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_list-backups.md new file mode 100644 index 00000000..0bf1453c --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_list-backups.md @@ -0,0 +1,40 @@ +--- +title: klio admin list-backups +--- + +## klio admin list-backups + +List the backups available in the Klio server + +``` +klio admin list-backups [flags] +``` + +### Options + +``` + -h, --help help for list-backups + --socket-path string Unix socket used by the administration server (default "/tmp/.klio-admin") +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio admin](klio_admin.md) - Server administration commands + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue.md new file mode 100644 index 00000000..79bf776d --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue.md @@ -0,0 +1,40 @@ +--- +title: klio admin queue +--- + +## klio admin queue + +Manage the queue tasks + +### Options + +``` + -h, --help help for queue + --json Output in JSON format + --socket-path string Unix socket used by the administration server (default "/tmp/.klio-admin") +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio admin](klio_admin.md) - Server administration commands +* [klio admin queue backup](klio_admin_queue_backup.md) - Manage the queue backup tasks +* [klio admin queue status](klio_admin_queue_status.md) - Show the status of the task queue (pending backups and pending WALs) +* [klio admin queue wal](klio_admin_queue_wal.md) - Manage the queue WAL tasks + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_backup.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_backup.md new file mode 100644 index 00000000..a1937143 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_backup.md @@ -0,0 +1,38 @@ +--- +title: klio admin queue backup +--- + +## klio admin queue backup + +Manage the queue backup tasks + +### Options + +``` + -h, --help help for backup +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --json Output in JSON format + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --socket-path string Unix socket used by the administration server (default "/tmp/.klio-admin") + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio admin queue](klio_admin_queue.md) - Manage the queue tasks +* [klio admin queue backup list-failed](klio_admin_queue_backup_list-failed.md) - List failed backup tasks in the queue + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_backup_list-failed.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_backup_list-failed.md new file mode 100644 index 00000000..bb203d1e --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_backup_list-failed.md @@ -0,0 +1,42 @@ +--- +title: klio admin queue backup list-failed +--- + +## klio admin queue backup list-failed + +List failed backup tasks in the queue + +``` +klio admin queue backup list-failed [flags] +``` + +### Options + +``` + --cluster-name string Cluster name to filter failed backup tasks (optional) + -h, --help help for list-failed +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --json Output in JSON format + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --socket-path string Unix socket used by the administration server (default "/tmp/.klio-admin") + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio admin queue backup](klio_admin_queue_backup.md) - Manage the queue backup tasks + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_status.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_status.md new file mode 100644 index 00000000..6d9e8d0c --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_status.md @@ -0,0 +1,41 @@ +--- +title: klio admin queue status +--- + +## klio admin queue status + +Show the status of the task queue (pending backups and pending WALs) + +``` +klio admin queue status [flags] +``` + +### Options + +``` + -h, --help help for status +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --json Output in JSON format + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --socket-path string Unix socket used by the administration server (default "/tmp/.klio-admin") + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio admin queue](klio_admin_queue.md) - Manage the queue tasks + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_wal.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_wal.md new file mode 100644 index 00000000..562a303b --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_wal.md @@ -0,0 +1,38 @@ +--- +title: klio admin queue wal +--- + +## klio admin queue wal + +Manage the queue WAL tasks + +### Options + +``` + -h, --help help for wal +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --json Output in JSON format + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --socket-path string Unix socket used by the administration server (default "/tmp/.klio-admin") + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio admin queue](klio_admin_queue.md) - Manage the queue tasks +* [klio admin queue wal list-failed](klio_admin_queue_wal_list-failed.md) - List failed WAL tasks in the queue + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_wal_list-failed.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_wal_list-failed.md new file mode 100644 index 00000000..a2f0c235 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_queue_wal_list-failed.md @@ -0,0 +1,42 @@ +--- +title: klio admin queue wal list-failed +--- + +## klio admin queue wal list-failed + +List failed WAL tasks in the queue + +``` +klio admin queue wal list-failed [flags] +``` + +### Options + +``` + --cluster-name string Cluster name to filter failed WAL tasks (optional) + -h, --help help for list-failed +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --json Output in JSON format + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --socket-path string Unix socket used by the administration server (default "/tmp/.klio-admin") + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio admin queue wal](klio_admin_queue_wal.md) - Manage the queue WAL tasks + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_refresh.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_refresh.md new file mode 100644 index 00000000..ddc9a57c --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_admin_refresh.md @@ -0,0 +1,40 @@ +--- +title: klio admin refresh +--- + +## klio admin refresh + +Refresh the Kopia cache and policies + +``` +klio admin refresh [flags] +``` + +### Options + +``` + -h, --help help for refresh + --socket-path string Unix socket used by the administration server (default "/tmp/.klio-admin") +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio admin](klio_admin.md) - Server administration commands + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup.md new file mode 100644 index 00000000..5872da43 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup.md @@ -0,0 +1,40 @@ +--- +title: klio backup +--- + +## klio backup + +Manage physical backups + +### Options + +``` + -h, --help help for backup +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio](klio.md) - PostgreSQL Backup & Recovery for CloudNativePG +* [klio backup delete](klio_backup_delete.md) - Deletes the metadata with the provided name +* [klio backup get-metadata](klio_backup_get-metadata.md) - Gets the metadata of the backup with the provided name +* [klio backup list](klio_backup_list.md) - Gets the metadata of all backups +* [klio backup run](klio_backup_run.md) - Backup the PostgreSQL cluster to the opened Klio server +* [klio backup verify](klio_backup_verify.md) - Verify the integrity of backups + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_delete.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_delete.md new file mode 100644 index 00000000..478a65d5 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_delete.md @@ -0,0 +1,40 @@ +--- +title: klio backup delete +--- + +## klio backup delete + +Deletes the metadata with the provided name + +``` +klio backup delete [backupName] [flags] +``` + +### Options + +``` + -h, --help help for delete + -n, --name string The backup name +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio backup](klio_backup.md) - Manage physical backups + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_get-metadata.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_get-metadata.md new file mode 100644 index 00000000..a89d4667 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_get-metadata.md @@ -0,0 +1,40 @@ +--- +title: klio backup get-metadata +--- + +## klio backup get-metadata + +Gets the metadata of the backup with the provided name + +``` +klio backup get-metadata [backupName] [flags] +``` + +### Options + +``` + -h, --help help for get-metadata + -n, --name string The backup name +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio backup](klio_backup.md) - Manage physical backups + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_list.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_list.md new file mode 100644 index 00000000..0e768aa0 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_list.md @@ -0,0 +1,39 @@ +--- +title: klio backup list +--- + +## klio backup list + +Gets the metadata of all backups + +``` +klio backup list [flags] +``` + +### Options + +``` + -h, --help help for list +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio backup](klio_backup.md) - Manage physical backups + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_run.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_run.md new file mode 100644 index 00000000..86896030 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_run.md @@ -0,0 +1,42 @@ +--- +title: klio backup run +--- + +## klio backup run + +Backup the PostgreSQL cluster to the opened Klio server + +``` +klio backup run [flags] +``` + +### Options + +``` + --enable-tier2-backup When enabled, require the backup to be sent to tier2 + -h, --help help for run + -n, --name string The backup name + --wait-for-wals When enabled, wait until all the required WAL files have been archived in tier1 before declaring the backup completed. (default true) +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio backup](klio_backup.md) - Manage physical backups + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_verify.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_verify.md new file mode 100644 index 00000000..b40eda9f --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_backup_verify.md @@ -0,0 +1,49 @@ +--- +title: klio backup verify +--- + +## klio backup verify + +Verify the integrity of backups + +### Synopsis + +Verify the integrity of backups in the repository. + +By default, verifies only the backup names passed as arguments. +Use --all to verify all backups in the repository. +Use --tiers to select which tiers to verify (default: both). + +``` +klio backup verify [backup-names...] [flags] +``` + +### Options + +``` + --all Verify all backups instead of specific names + -h, --help help for verify + --tiers string Tiers to verify (tier1, tier2, or tier1,tier2) (default "tier1,tier2") +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio backup](klio_backup.md) - Manage physical backups + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_get-metadata.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_get-metadata.md new file mode 100644 index 00000000..9e1187cb --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_get-metadata.md @@ -0,0 +1,39 @@ +--- +title: klio get-metadata +--- + +## klio get-metadata + +Get the metadata of a cluster from the target Klio server + +``` +klio get-metadata [flags] +``` + +### Options + +``` + -h, --help help for get-metadata +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio](klio.md) - PostgreSQL Backup & Recovery for CloudNativePG + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_get-wal.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_get-wal.md new file mode 100644 index 00000000..14839bd8 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_get-wal.md @@ -0,0 +1,41 @@ +--- +title: klio get-wal +--- + +## klio get-wal + +Get a WAL from the target Klio server + +``` +klio get-wal [wal-name] [target-file] [flags] +``` + +### Options + +``` + -h, --help help for get-wal + --partial Use a partial WAL file if a the completed WAL file is not present. Defaults to false + --tier string The tier where we should look for WAL. Accepted values: 'tier1' and 'tier2' (default "tier1") +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio](klio.md) - PostgreSQL Backup & Recovery for CloudNativePG + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_reset-lsn.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_reset-lsn.md new file mode 100644 index 00000000..652d6ae4 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_reset-lsn.md @@ -0,0 +1,39 @@ +--- +title: klio reset-lsn +--- + +## klio reset-lsn + +Reset the replication status to the latest flush LSN + +``` +klio reset-lsn [flags] +``` + +### Options + +``` + -h, --help help for reset-lsn +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio](klio.md) - PostgreSQL Backup & Recovery for CloudNativePG + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_restore.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_restore.md new file mode 100644 index 00000000..abed4cd1 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_restore.md @@ -0,0 +1,42 @@ +--- +title: klio restore +--- + +## klio restore + +Restore a PostgreSQL cluster from a Klio server + +``` +klio restore [destination] [flags] +``` + +### Options + +``` + --backup-id string The ID of the backup to be restored. Defaults to the latest backup found for the cluster + -h, --help help for restore + --tablespaces strings A comma-separated list of tablespace_name:tablespace_path to customize the restore location of a tablespace. + --target-time string If specified, Klio will recover from the most recent backup that was taken before the time specified. This allows to configure PostgreSQL to do a point-in-time recovery with the specified target time. +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio](klio.md) - PostgreSQL Backup & Recovery for CloudNativePG + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_retention.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_retention.md new file mode 100644 index 00000000..d0116087 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_retention.md @@ -0,0 +1,37 @@ +--- +title: klio retention +--- + +## klio retention + +Manage the retention policy + +### Options + +``` + -h, --help help for retention +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio](klio.md) - PostgreSQL Backup & Recovery for CloudNativePG +* [klio retention get](klio_retention_get.md) - Gets the currently applied retention policy +* [klio retention set](klio_retention_set.md) - Sets the currently applied retention policy + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_retention_get.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_retention_get.md new file mode 100644 index 00000000..4cbba32c --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_retention_get.md @@ -0,0 +1,39 @@ +--- +title: klio retention get +--- + +## klio retention get + +Gets the currently applied retention policy + +``` +klio retention get [flags] +``` + +### Options + +``` + -h, --help help for get +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio retention](klio_retention.md) - Manage the retention policy + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_retention_set.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_retention_set.md new file mode 100644 index 00000000..8aa84a24 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_retention_set.md @@ -0,0 +1,45 @@ +--- +title: klio retention set +--- + +## klio retention set + +Sets the currently applied retention policy + +``` +klio retention set [flags] +``` + +### Options + +``` + -h, --help help for set + --keep-annual int Number of most recent annual backup kept + --keep-daily int Number of most recent daily backup kept + --keep-hourly int Number of most recent hourly backup kept + --keep-latest int Number of most recent latest backup kept + --keep-monthly int Number of most recent monthly backup kept + --keep-weekly int Number of most recent weekly backup kept +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio retention](klio_retention.md) - Manage the retention policy + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_send-wal.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_send-wal.md new file mode 100644 index 00000000..ca964f67 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_send-wal.md @@ -0,0 +1,40 @@ +--- +title: klio send-wal +--- + +## klio send-wal + +Upload the cluster's WALs to the target Klio server + +``` +klio send-wal [flags] +``` + +### Options + +``` + -h, --help help for send-wal + --primary Wait for the current instance to become a primary (default true) +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio](klio.md) - PostgreSQL Backup & Recovery for CloudNativePG + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_server.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_server.md new file mode 100644 index 00000000..3e7d9aea --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_server.md @@ -0,0 +1,36 @@ +--- +title: klio server +--- + +## klio server + +Starts and manage a Klio server + +### Options + +``` + -h, --help help for server +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio](klio.md) - PostgreSQL Backup & Recovery for CloudNativePG +* [klio server start](klio_server_start.md) - Starts a Klio server + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_server_start.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_server_start.md new file mode 100644 index 00000000..e371942d --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_server_start.md @@ -0,0 +1,42 @@ +--- +title: klio server start +--- + +## klio server start + +Starts a Klio server + +``` +klio server start [flags] +``` + +### Options + +``` + -h, --help help for start + --socket-path string Unix socket used by the administration server (default "/tmp/.klio-admin") + --tier1 Enables Tier1 server components (default true) + --tier2 Enables Tier2 server components +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio server](klio_server.md) - Starts and manage a Klio server + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_wal-player.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_wal-player.md new file mode 100644 index 00000000..0462e9d5 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_wal-player.md @@ -0,0 +1,37 @@ +--- +title: klio wal-player +--- + +## klio wal-player + +WAL Player Commands + +### Options + +``` + -h, --help help for wal-player +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio](klio.md) - PostgreSQL Backup & Recovery for CloudNativePG +* [klio wal-player generate](klio_wal-player_generate.md) - Generate a directory of WAL files +* [klio wal-player play](klio_wal-player_play.md) - Send to Klio a directory of WAL files + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_wal-player_generate.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_wal-player_generate.md new file mode 100644 index 00000000..dee705c2 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_wal-player_generate.md @@ -0,0 +1,41 @@ +--- +title: klio wal-player generate +--- + +## klio wal-player generate + +Generate a directory of WAL files + +``` +klio wal-player generate [output-directory] [flags] +``` + +### Options + +``` + -h, --help help for generate + --length int How many WAL files should be generated. Required. + --wal-size int The WAL file size in MBs. Defaults to 16 MB (default 16) +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio wal-player](klio_wal-player.md) - WAL Player Commands + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_wal-player_play.md b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_wal-player_play.md new file mode 100644 index 00000000..c48fb5b4 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/cli/klio_wal-player_play.md @@ -0,0 +1,41 @@ +--- +title: klio wal-player play +--- + +## klio wal-player play + +Send to Klio a directory of WAL files + +``` +klio wal-player play [directory] [flags] +``` + +### Options + +``` + --block-size int Block size in KiB. Max 8192 (8 MiB). Defaults to 2048. (default 2048) + -h, --help help for play + -j, --jobs int Number of parallel jobs to use when sending WALs (default 1) +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $HOME/.klio.yaml) + --debug enable debug logging + --log-destination string where the log stream will be written + --log-field-level string JSON log field to report severity in (default: level) + --log-field-timestamp string JSON log field to report timestamp in (default: ts) + --log-level string the desired log level, one of error, info, debug and trace (default "info") + --pprof-server string enable the PPROF server using the specified address + --zap-devel Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) + --zap-encoder encoder Zap log encoding (one of 'json' or 'console') + --zap-log-level level Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', 'panic' or any integer value > 0 which corresponds to custom debug levels of increasing verbosity + --zap-stacktrace-level level Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic'). + --zap-time-encoding time-encoding Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'. +``` + +### SEE ALSO + +* [klio wal-player](klio_wal-player.md) - WAL Player Commands + diff --git a/documentation/web/versioned_docs/version-0.0.18/user/grafana-dashboards.md b/documentation/web/versioned_docs/version-0.0.18/user/grafana-dashboards.md new file mode 100644 index 00000000..4a02de38 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/grafana-dashboards.md @@ -0,0 +1,174 @@ +--- +sidebar_position: 9 +--- + +# Grafana Dashboards + +Klio ships a Grafana dashboard template that visualizes the metrics it +exposes. The dashboard is generated from code with the +[Grafana Foundation SDK](https://github.com/grafana/grafana-foundation-sdk) +and committed to the repository at +`observability/grafana/klio-dashboard.json`. + +The dashboard queries the Prometheus export of Klio's OpenTelemetry metrics, +so it complements the [OpenTelemetry](opentelemetry.md) setup rather than +replacing it. + +## What the dashboard shows + +The dashboard is a single dashboard split into row sections: + +- **Client / Plugin** — the backup lifecycle as seen by the plugin sidecar + running in each PostgreSQL pod: backups in progress, time since the last + backup started, succeeded and failed, the latest backup duration, the + p50/p95/p99 backup duration distribution, backup run and failure rates, + and the backup success ratio. Also the WAL + streaming client the sidecar supervises as a child process: the PostgreSQL + timeline it is currently streaming and the p50/p95/p99 latency of sending + a WAL block to the server. + +![Klio client and plugin metrics](images/klio_client_and_plugin_metrics.png) + +- **Server** — the state of the Klio server StatefulSet: uptime, WAL ingest + throughput and freshness per tier, the latest written LSN, backup + verification outcomes, the base snapshot inventory (including file and + directory counts), p50/p95/p99 WAL block/get/upload duration by path, + stage and tier, tier-2 relay and maintenance run rates, the retention + window of the + physical PostgreSQL backups (counts by tier, latest/oldest backup age, + start/end LSN and PostgreSQL timeline per cluster), and the embedded NATS + JetStream queue. + +![Klio server metrics](images/klio_server_metrics.png) + +- **WAL Replication Lag** — how far Klio's WAL streaming client trails the + PostgreSQL primary, using CloudNativePG's replication metrics: the replay + lag in bytes and the flush lag in seconds. These panels read the + `cnpg_pg_stat_replication_*` metrics, so they require CloudNativePG + monitoring to be scraped into the same Prometheus (see the prerequisites + below). + +![Klio WAL replication lag metrics](images/klio_wal_replication_lag_metrics.png) + +Some panels need extra context to interpret correctly. Two are derived +from the alerting guidance in [OpenTelemetry](opentelemetry.md): + +- **Time since last WAL written by tier** surfaces the staleness signal + described under *Alerting on stalled WAL processing*: a stale tier-1 value + means PostgreSQL is no longer shipping WALs, while a stale tier-2 value + means the remote backend is no longer receiving them. +- **Tier-2 archival backlog (LSN gap)** plots the LSN difference between + tier 1 (local disk) and tier 2 (remote storage). Read together with the + staleness panel, it tells a slow pipeline (timestamps advancing, gap + growing) apart from a stalled one (timestamps and LSN both frozen). + +Two more are a statistical caveat rather than an alerting signal. Both are +histogram percentiles that need enough recent samples to be reliable: + +- **WAL block send duration (p50/p95/p99) by cluster** is most meaningful + under active write load. On an idle or low-write cluster, WAL blocks are + sent too infrequently for the underlying `histogram_quantile` to produce + a reliable percentile, so the line can look sparse or noisy rather than + simply absent. +- **Backup duration (p50/p95/p99)** has the same limitation, more acutely: + backups are infrequent, so this panel is computed over the whole selected + range (rather than a short rate window) to stay populated between runs. + Widen the dashboard range to span several backups for a stable reading; if + the selected range contains no backup, the panel is empty. Use it to spot + backup runtime trending up over time rather than to read an instantaneous + value. + +## Prerequisites + +The dashboard reads the Prometheus names of Klio's metrics (for example +`klio_plugin_backup_runs_total` and `klio_server_wal_written_total`). You +therefore need Prometheus scraping those metrics. Any of the export paths +described in [OpenTelemetry](opentelemetry.md) works: + +- An OpenTelemetry Collector with a Prometheus exporter that Prometheus + scrapes. +- The Klio Prometheus exporter (`OTEL_METRICS_EXPORTER=prometheus`), + scraped directly. + +The **WAL Replication Lag** row additionally reads CloudNativePG's +`cnpg_pg_stat_replication_*` metrics. To populate it, scrape the +CloudNativePG cluster monitoring (its `PodMonitor`) into the same +Prometheus. The rest of the dashboard works without it. + +:::note +When you route metrics through an OpenTelemetry Collector, enable +`resource_to_telemetry_conversion` on the Prometheus exporter so that +resource attributes such as the pod and namespace become Prometheus labels. +The sample collector under +`operator/config/samples/opentelemetry/otel_collector.yaml` already does +this. +::: + +## Importing the dashboard + +1. In Grafana, go to **Dashboards → New → Import**. +1. Upload `observability/grafana/klio-dashboard.json` or paste its contents. +1. When prompted, select your Prometheus data source for the `datasource` + variable. + +The dashboard declares a `datasource` template variable, so it is portable +across Grafana installations and is not tied to a specific data source UID. +The `namespace` and `cluster` template variables at the top filter the panels +by Kubernetes namespace and PostgreSQL cluster. + +### Example: kube-prometheus-stack + +This example follows the same flow as the +[CloudNativePG quickstart](https://cloudnative-pg.io/docs/current/quickstart/#grafana-dashboard), +using the +[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) +chart. Adapt it to your own Prometheus/Grafana if you run a different setup — +only the metric prerequisites described above are required. + +Install Prometheus and Grafana: + +```sh +helm repo add prometheus-community \ + https://prometheus-community.github.io/helm-charts +helm upgrade --install \ + -f https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/main/docs/src/samples/monitoring/kube-stack-config.yaml \ + prometheus-community prometheus-community/kube-prometheus-stack +``` + +Ensure Prometheus scrapes Klio's metrics by deploying a `ServiceMonitor` (or a +`PodMonitor`, if the collector's `Service` has no labels) for the +OpenTelemetry collector's Prometheus exporter — see +`operator/config/samples/opentelemetry/otel_collector_svc_monitor.yaml`. + +Port-forward Grafana and log in with `admin` / `prom-operator`: + +```sh +kubectl port-forward svc/prometheus-community-grafana 3000:80 +``` + +Open `http://localhost:3000/` and import +`observability/grafana/klio-dashboard.json` via **Dashboards → New → Import**, +selecting your Prometheus data source. + +Alternatively, load it automatically through the Grafana dashboard sidecar +with a labeled `ConfigMap`: + +```sh +kubectl create configmap klio-grafana-dashboard \ + --from-file=klio-dashboard.json=observability/grafana/klio-dashboard.json +kubectl label configmap klio-grafana-dashboard grafana_dashboard=1 +``` + +## Regenerating the dashboard + +The committed JSON is generated from the Go program under +`observability/grafana/`. To regenerate it after changing the generator (or +after a `grafana-foundation-sdk` bump), run from the repository root: + +```sh +task grafana:gen +``` + +CI runs `task grafana:uncommitted`, which regenerates the dashboard and +fails if the committed JSON has drifted from the generator output. Commit +the regenerated file whenever it changes. diff --git a/documentation/web/versioned_docs/version-0.0.18/user/helm_chart.mdx b/documentation/web/versioned_docs/version-0.0.18/user/helm_chart.mdx new file mode 100644 index 00000000..a6e758c6 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/helm_chart.mdx @@ -0,0 +1,306 @@ +--- +title: Klio Operator Helm Chart +sidebar_position: 90 +--- + + +import PartialValues from './_helm_chart_values.md'; + + + +The Klio Operator Helm chart allows you to deploy the Klio +Operator in your Kubernetes cluster. It is distributed as a private +OCI image. + +:::info Namespace Selection +We have used the `cnpg-system` namespace for all examples on this page. + +If you have deployed CloudNativePG in a different namespace, ensure you replace +`cnpg-system` with your specific namespace in all commands. +The Klio Operator must reside in the same namespace as the CloudNativePG +operator. +::: + +## Prerequisites + +Before installing the Klio Operator, ensure you have: + +- **Helm** – see the [Helm installation guide](https://helm.sh/docs/intro/install/) +- **Kubernetes** cluster with appropriate permissions +- **CloudNativePG Operator** already installed in your Kubernetes cluster. + See the [CloudNativePG installation guide](https://cloudnative-pg.io/documentation/current/installation_upgrade/). +- **cert-manager** (optional, but strongly recommended for managing TLS certificates). + See the [cert-manager installation guide](https://cert-manager.io/docs/installation/). +- **Prometheus Operator** (optional, for operator monitoring). + See the [Prometheus Operator installation guide](https://prometheus-operator.dev/docs/getting-started/installation/). + +## Installation + +### Step 1: Create a values file + +Create a `values.yaml` file with your configuration, if you need to +override some default values. If you have not +installed cert-manager or the Prometheus Operator, disable them to +avoid errors during installation: + +```yaml +# Uncomment if cert-manager is not installed +# certmanager: +# enable: false + +# Uncomment if the Prometheus Operator is not installed +# prometheus: +# enable: false +``` + +See the [Configuration](#configuration) section for the full list of +available parameters. You will reuse this file for future upgrades. + +### Step 2: Install the Helm Chart + +Deploy the Klio Operator to your cluster: + + +```sh +helm install klio-operator \ + oci://ghcr.io/cloudnative-pg/klio-operator-chart \ + --version 0.0.18 \ + --namespace cnpg-system \ + -f values.yaml +``` + + +### Step 3: Verify Installation + +After installation, verify that the Klio Operator is running: + +```sh +kubectl get pods -n cnpg-system -l app.kubernetes.io/name=klio +``` + +You should see the operator pod in a `Running` state. Check the logs to ensure +there are no errors: + +```sh +kubectl logs -n cnpg-system -l app.kubernetes.io/name=klio -f +``` + +Verify that the Custom Resource Definitions (CRDs) were created: + +```sh +kubectl get crds | grep klio.cnpg.io +``` + +You should see CRDs like `servers.klio.cnpg.io` and +`pluginconfigurations.klio.cnpg.io`. + +## Configuration + +### Inspecting the Chart + +You can download the Helm chart to inspect its contents, review the +default values, and understand what resources it will create: + + +```sh +helm pull oci://ghcr.io/cloudnative-pg/klio-operator-chart \ + --version 0.0.18 \ + --untar +``` + + +This downloads the chart and extracts it into the +`klio-operator-chart` folder, where you can review the templates, +the default `values.yaml`, and other chart files. + +### Configuration Reference + + + +### CNPG API Group Detection + +Klio works with both [CloudNativePG](https://cloudnative-pg.io/) (API group +`postgresql.cnpg.io`) and CNPG-based operators that use a different API group. +The operator detects the CNPG API group and version automatically from each +`Cluster` resource at runtime — no configuration is required. + +## Upgrades + +A complete upgrade consists of three steps that must be performed in +order: + +1. [Upgrade the CRDs](#upgrade-the-crds) — apply updated CRD manifests +2. [Upgrade the Operator](#upgrade-the-operator) — run `helm upgrade` +3. [Upgrade the Klio Server and client](#upgrade-the-klio-server-and-client) — upgrade operand images + +### Upgrade the CRDs + +:::warning Upgrading CRDs +Helm does not upgrade CRDs after initial installation +([details](https://helm.sh/docs/topics/charts/#custom-resource-definitions-crds)). +When upgrading to a version that includes CRD changes, apply them +manually before running `helm upgrade` (as explained below). +::: + +:::warning CRD breaking changes +If the CRDs contain breaking changes, old resource definitions may +not work. In this case, resources should be edited when +[upgrading the Klio Server and client](#upgrade-the-klio-server-and-client). +Check the [Upgrade Notes](upgrade_notes.md) for version-specific +instructions. +::: + +#### Step 1: Download the new chart + +Download the new version of the Helm chart to access the updated CRD +manifests: + + +```sh +helm pull oci://ghcr.io/cloudnative-pg/klio-operator-chart \ + --version 0.0.18 \ + --untar +``` + + +#### Step 2: Review CRD changes + +Before applying, review the CRD changes to understand what is being +modified: + +```sh +kubectl diff -f klio-operator-chart/crds/ +``` + +#### Step 3: Apply the updated CRDs + +Apply the CRD manifests to your cluster: + +```sh +kubectl apply --server-side --force-conflicts -f klio-operator-chart/crds/ +``` + +#### Step 4: Clean up + +Remove the extracted chart directory: + +```sh +rm -rf klio-operator-chart +``` + +### Upgrade the Operator + +To upgrade the Klio Operator to a newer version, run the following +Helm upgrade command: + + +```sh +helm upgrade klio-operator \ + oci://ghcr.io/cloudnative-pg/klio-operator-chart \ + --version 0.0.18 \ + --namespace cnpg-system \ + -f values.yaml +``` + + +See the +[Helm upgrade documentation](https://helm.sh/docs/helm/helm_upgrade/#options) +for more details on this and other upgrade options. + +### Upgrade the Klio Server and client + +After upgrading the operator and the CRDs, Klio images in `Server` +resources and the ones used as sidecars in `Cluster` resources should +be upgraded as well. We recommend using the same version for the +operator and the operand. + +:::info Future improvement +We plan to reduce the amount of manual work required during upgrades in +future versions of the operator. +::: + +#### Upgrade Klio servers + +Klio servers are not automatically updated when a new operand image is +released. Update the `spec.image` field with the new image reference: + + +```sh +kubectl patch server -n \ + --type merge \ + -p '{"spec":{"image":"ghcr.io/cloudnative-pg/klio:v0.0.18"}}' +``` + + +Verify that the Klio Server pods are running the latest version: + +```sh +kubectl get pods -l klio.cnpg.io/klio-server -A \ + -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,IMAGE:.spec.containers[0].image' +``` + +:::warning +If the Klio Pod gets into a broken state before the image upgrade, a new Pod +with the image upgrade +[will not be rolled out](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#forced-rollback). +In this case you should delete the Klio Pod. The StatefulSet managing it +will recreate it with the chosen image. +::: + +:::warning +Not all parameters can be updated in a StatefulSet. In case a new version of +the operator requires such a change, delete the StatefulSet managing the Klio +Server. The operator will automatically recreate the StatefulSet. +StatefulSets [retain their PVCs by default](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#persistentvolumeclaim-retention), +make sure your data is safe before proceeding. + +```sh +kubectl delete statefulset -l klio.cnpg.io/klio-server= -n +``` +::: + +#### Upgrade Klio client sidecars + +The Pods of the CNPG instances need to be recreated to run the new Klio image. +You can use the CNPG `kubectl` plugin to trigger a rolling update: + +```sh +kubectl cnpg restart +``` + +Refer to the +[CloudNativePG documentation](https://cloudnative-pg.io/documentation/current/rolling_update/) +for guidance on performing rolling updates. + +Verify that the sidecar containers are running the latest version: + +```sh +kubectl get pods -l cnpg.io/cluster -A \ + -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{range .spec.initContainers[?(@.name=="klio-plugin")]}{.image}{end}{"\n"}{end}' +``` + +## Uninstalling + +To uninstall the Klio Operator: + +```sh +helm uninstall klio-operator --namespace cnpg-system +``` + +:::warning Data Preservation +Uninstalling the operator does not automatically remove: + +- Custom Resource Definitions (CRDs) +- Existing Klio resources (Servers, PluginConfigurations) +- Persistent volumes containing backup data + +To completely remove Klio from your cluster, you must manually delete these +resources. +::: + +To remove the CRDs after uninstalling: + +```sh +kubectl delete crd servers.klio.cnpg.io +kubectl delete crd pluginconfigurations.klio.cnpg.io +``` diff --git a/documentation/web/versioned_docs/version-0.0.18/user/images/basebackups_walarchive.png b/documentation/web/versioned_docs/version-0.0.18/user/images/basebackups_walarchive.png new file mode 100644 index 0000000000000000000000000000000000000000..868cef2ea8249681c726fbee767ec60a55378e76 GIT binary patch literal 17516 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
+!#b9#>w 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�@iESTvmr`a-RKUuXZK#_r>mH;q|Co6uD$#G}j~% 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⪼P}0(-k)R6&^);xr~zL`Py4aeFAI&$Cj{&(u0iNu)y$I-24Ljj0Du(9ZZTM zO_{OJtV-K6f$BaRI@x{l8zV8)n0NfHgwEb}%2KPu9nKoDtpMD%MdRvH5PDH|v+3zN zLorDM>?TX$X|t#^Q(tcwY^4a+ZF&<}BZ~}c<87r^U^Ff~agBZ}g+M4xOe0ibd1!^~ z?(=I17FwALtExSZyhCU$1B+@DZ-Bz2(+Q7p?b}Uet=7 z9iOFFby>XX%3rVNK=KF@GJJY50k@99U_g5fL2TC(w}7*zzzkC=Djd}vuwb}R^Mr-V z$p`Y7qEoT%pW=~NyIoR#fbGt9j*fxyu5wb z*x8lfd$%B9`Q;AD*C|*0~Y>1{!Q)!?_orNB!q-LZ-2hc?F9D$Jk8NKp|{E%>oxN~SWLlT z|3Y>LjSBFwaF@4lLNjqb7)SG^MJ(D^E_IZ9ttZ*zEefY?2Ra%CTJN9PcCIzy-K4&( zdkS>%ik47F%i)^F;Dzqt$t`04&8$|oU z#Qy5lpry8GQxHwW24ViP90|!h{0^1(I8DM9rOD;-WSXItBe zKHeRCM%<;Ftl>BuiX_W2p5Q~5QE}?`x3>D6&f*QmcpH|SY}Xzh6t%`Y;s*wL0SxrP z+$h0)+5X+e3(=;rfQ_u{AZq$@<9lO6gkF84k6Xn(f{FFbgHo+_#|rF?uv>Wo32hdE zfwu5xyrlM)mO2GlTj~D1O$bm3&*sm+1ImqMd#7i5R3`N!SU{hqVePcW# z>^PeHyw^&_S65dVbhxbREPVV9^Y)#Ne){aqXMWij-f#z9)p!9k2BO(pl%S5xuFk&= zM@LV0?HV2xuMv;)9Aa!O5Q9PX`5f*g!W1r8Kqtg4hJDie0-iNY6AM*By|)ltpFJa zylsD*FRXaN(oGq5wHq*u!DEMTyo)*nO!QK`7?S-2Xm zsWFr+KG$#Rd%z56>2)Sa*uFOy@QpukEWL55>7LHS45kbT{hFFwTVHRvbWJINb7Nr6J!I$iQ<+8N@+q z{vh9QuvgB9Na0RwY9Ygx6o#q&fpf%*;%xs4Do@6%AFM46YeVWHu?2Gzg+0$dX683_!47nZ?c z(SAtj`kiNsh_yl3Vry(XeZY!Le55hmJL-u>XgN(c2)=6H8?x>t zUY|0Wo&5tFXY5LPz{VDp`q;Loju=(t{Oo*d-!@vr^^8m{rf`W}`4$Pu6MlY^$IhPR z<}&QS6OH{*^7Y4N6p$+=Jenv~DcUzvJ6}7Rm=*VxkICWCtM2~B*c7-ozYx2S-R38f z8PHgFaAjsp;7$KK@N$z6c8)4670dLi^Rw(jkEXt+r0|$jeg}cmr)0_AWW>)r&z|dt zYx4B;_G5+TU6&#Nbf5pJ@ddJF`m~dCi3$)D;q;p-Uw&MiQ%?O$D2aObHDzE+;*?Sa zUK?*E_E=+|BIHm3AiZEzeKzL6?sJoL9aJnnv+YEH_CWn+fxDM~6tr?ho{p1l&$0W; z$?D!imyL~`H>(EUIGQ;boAbX(a_;@>H*edgPIR%g=D9o6?E)Jv0utN2Iu$L0GDJBC z=Z9+Wi_;xU-v(U#;`UR2^!BBQOIHp!wKTZXufv zT91Ks{ucy-4(HSMsrNg20Yn$k43baYuD=CCeIV}vV&j#salm5F0G-noC@vx-8*0$38P~KwiXTb61Sv1b)pqp{+ zY`Bos1OIUrz$sd60hIKV;(p6ty@{wuz*}#^6V{&m`*FC?YfoLW>*!_AxFgg;vs_q2 z1leLE$&Of|?tS6cgPT=bp+R@^H4CV4qI1A}KrY}fyJ%-uZTCmh)-V?9?^~dqr8gHu z&10+>$Oc#-mASvs!l#zdVpIA#iAD)Cq|0F@i(Dufd8_|Gjz%`<6BA9tUus>KT!OqO zX#T4#Qtz^I0gZyGZb;yK1*vz8uCri9&J?*#mBd%z)G~ODYx-7t#_4XKn?R#cg0{mnU zGaujQ{8mcI>4%#c22KB8v$UPfG)`42uy`i{4x}&T$qpz}&ThIF2wWXtQ5xqm)8hCM z<>j+KR!>(|Qi~1hn*j31ErC%aqWHnNX#6t&rOo;f;K;00 zQr$5*hp7x=xWwz%uhT|ELs`jUw+^1S-@ApMb;aOIc=mHLg0l4_8KqTTeXp&}(A(^D zJyQhu&zCozd+BA(JI=DPkW!r8zF$Ccy8~JkkPbatF9+o5@$N+PRM+8Z$rP=y<9@!O zjO_#$BqTIc24yNvBUBuCQ9TEiD;>@RwUU(GT_-@Z^z3Niefbc3^}{uAMUd)#{#-&j zC@Jn|r+tcm-BXW)vHH_pUq%FZamyp}fDXzSK4s_7? z*ADLAYIsEe*`w;$VIV^V=y}f{YtaAm%gV@i4#W^YVK$e4WGBy?Wd6MiNrdcwkN!Ib zSFZeb4E`^SfmO;B`#Z!!>yUlYwZ0h={~r|nj7?%B&8 z1GxvWp}rax+Ipi;L}F?GFnllr&tF!6V~iPN^=J+dIX4*Zt`$kPzKG6Mx%tCnVDC;^jNxEd#0L)}kU`?XA=) z_JbQH#I*vLy$6t&*TW-*jCy-^hJK~qy-WUWD(}j&L1p9>mS{=QhV5-$g~#QV*5BDA9*fTJ1!FFDchQCW!q>ZRS=H#NyZ?lSv&*)GciH!fiFmAb6d;{3 z=N|F4td5Fn!#Ye;@~>7bMNKxR$>%bN&*acrC7Sj6Nd(a(!<&^-9~z-JY6|+trTY~8 zRR*Q$YzI{Wl9^Y$rx=j*DqU5NUTbk8)bPEy<9KOLN2!Eli0a?es6ZlrJMVvbC-&a+ z&MSFM#l_EX$qYZgM?>7uS*-mCY;IZ7q*zHTGDcorflO+e5P7_^yAYqM0_D*c=rKh! zJ9UeR3ceuc#n@Wd+Gp{7RQ^CFC8qS@(g(FZK+NVvT@+_A7VH2CN=QlzaMkQJ_1``> zm{LR;q!_Z=#*@rW9k%_kl=@(wnG_@Obi6@o%UE1x+1?CA%ie^Icn@Aav!8U`ReslVKiVy*R4-G`P9M2g+wHjGO}NASGxj>JTY~znAwi~QLA{rI zJ%j5xu;dM4-$b(VlLJNDS}T`~fU59G!^sWz0zGLSocrQM$d`~GHT}eTy2ND{mMQc} z-%OY+%OWT^g$l7}6`m`hWLGt?hpN3kcaNVcq*fknzc-sR%H$KhcE_0}Bf#_oIW?6N zdO9t6`Mt9(F;`cL0N8qU!Yr<(DEw$p6^V4+xx51Ttob>FOy`^UYNe5Ww%5+I1pU0q z6XEiQmPWD!E|Lem3pX#^F5KUZ-A&%hx|tZ9V6mG{7~9s*bM1CqR&&Ak!%8a20QD7% z%uX-1ZzchON=s4G-wHoDJ^nR1sQUL=8zXcW=gw%!6F!nHR^k*2>=U+K_d>s~UxB=Q zO|+$;lBWb#^_PUHn(-;B2!tz{)XSFei~~vRjWRNW=cL7ATdHRzzIUJ@WVv=jy$mKp z4d|u|xhZESh5nYCGB=G0#FVaooHoxAI?u6-QBA0CSaoriLZEg_mtsgHy|LrHouygX zzC{r`T~qZmlUT#{l}0F3!smpE50drW;1_df1Uj*B?st_Vny`9>Lj&pXv_RG+L!j(r zdfH$!wxM!}#@kiSJL!H&fa}Bgv$f-6YP`PCws3#_m3W@?8M8yh{b;Z)lkeEQvz}l3 zQXi_4^hP-sjM^_LZ|K8va_Is=ua4$m$deZXA2q6VJ^z#_3Gs|IIBkTLi6*>${sot~ zwS@|s3rIgJu5_%8P<5i`f+nUw!^G75JojeP>+e7r#C^$9>6WznCtz>)(UvL096DyR zR$a%(sbwVzf8ByyN@G)qN`Z(Yb<^g+_qTETyptG`>uyXzlyu~kQ_dGlYccOFt}T7G z*eRw{oJe%qnC$JBkIHXZt4Ce>i>yo8ILIs7DY|TZ-tE<)NwPPctS*j2jC=b|Mdgh# zFE;B)S(^RKtZ*CQVVEIS>7-4igP-p95?!^HvXK6)d6)i{XaWMdGmj1OQ(~#7_q6B? za*-mK`+O`n!id|Oz@#B?b@ZMroKFfH{I5GFrR;DvI$N2iFVw$bxmSj7CWc*qtM2~l zc_q>v0{r-#8?OIPT}WKx9!aJN{yhzZc5{$KGq*A~v14qG%4DE3qVn?fh+2+&LU&I= zgq#Md>lbyU=nl@wc_<^%y{)8VPzrufGAQ==SLtWlG#5d4!#?U-b5136q(QUt<% zv+V(X8$P|i*B+*m(c^eC*{Vz1Wb^lsBz>T}zA1Sc1!WqAhwyLbwH;)W6Cd}@HTH-P zq!}LWcG`=F-$a>aO++)f*5)_0Dt43E^UObIjTsw0>9>AKbs7b>B>>(T!=VAjnPsuL zEX)`@;%QA-d`b7MH~Z@0jN4{@R!x^{nD%FZpIiDC2x`WE#2`b zqu0VGb2EaO9hHk4caAUeH(z*>5o}F$rbE{PpGZg&UOgGdb5WYmcrt8$?$Qp3Ka6qdN%66BHCu2Q{h9 zI!;oJO2dp5;rk8o@MYbUkDWP{js~?X%5S7vS}LlKX-N__G z3*%&go5~JscCcPi2h%Hg@)5JdcHR$1v1&>>&RY=ox?y5HJs4vK2$Om#*Qh%tip)bzzTKjVOB5_fIcK*vA*{_uVzRAC za~V>Ytjip@cN8bTBxck$9iEs0i|p7l%=(<(_e`X#yQRVNqi6}2Xa2IbfgvLUWA*xx znypZ;>|+LBFZo_mN-pCDjR`B_P5}C8xrv|+UdTh z2Gp&PnY*1bnT%O%_m3&SAyi%K9S=NpPe`tt9z7+ATC-3`#hw1a$_|wc8mY6 zzSkJQGA2bKD5kl%K@?<6iWlc@Ze{FROlH1yOq?!L)M3Qn{dT@PK3+^;o;P)bpl8Vjh z_CL1Cg^+diV$jm5*ON)E7`p`Q57m%CUb<}EmEQ8x=xurr(v?cbM9AaA0!A>!8DGv$ zd0Besq0*C^E`r;k%c4ET)C45Z8IKlioD`r!To52xWF^0o_Y7DHfS z@RlW^>2x?2MG9xniv3VK4UH!8g?FU1Jx{()yVr^F?{eTQ4%M(sA>%uU>=(&wgNji? z-q;St90xt%M!}_-*Aj$`4XSol*&rMS7Xm{~0vO%gOB)eBO1_zLe1fvXqI@?y0@>`%0GeUiuFJpoPcPe*xm~5{E&m`}P3D z8#DXtSq^@(a|b$&6B4{uV+2l<#qFzw|sMmN_Tdr`9yY0N8 zTLOimX5&-+GXj2VEgMxv#yWS1^B*Cjj*|;jRwTk)+jMGgCYA(MCiQnYcBD0gkmYv-eEc3?H=Q#69yhnX(fFI1py@}Esu6=3 z_pW)Z2|OHniJ4=c>_m=BDt(BR(+h14lVAFwJe<4X>#d(mnQv4WROxrpQ9vhBp1We0 zn=E$sJXuJGE99ZWYwo^G_{QXN|M+$WqGta21gGDHj4tzE;$ zQ5ouO$2M)5rzTmRoeZTObi#R|wx*d?^41Q`AGw}6r%Z4AazuxaSiPH$Ekr;_-!!@LmHVUhqk{)(n`H>Ts?B-q3rcHJ z7B~$HGSei)PYLV)M?PIUV8g)t&17RY@vf!g`C_^#=YDd7>&{BTD%)zXpImb4SEcwj z3cnYn^i1^+3dYt3$@Ala?@4{NrmT2Km-mrUs%5=Ls*sm$Lnf@~yLYCZ{|CzN4`qm` zmEgHQLaSf}2?A=04w|2i=;+RcV_i=u2PG$-6D;f+>!e7oD0~Tw{-*zAYf;3NZuv=6 zm*5-}ItFl(0>?+N5ZyNke4oj^lC{2S%-T#0;t_dz*~<(`zN2;_h4wBIrUbKDjjf_} zeU71_XoZL-@_=Vdladcb=Y84}a*{Cins6b!F6Uji;SG)U*TWU>tG>8PLI02&yw^c%2SLNA zN~Y82YJ+SFl7EVHHalhb)<+-Y^}PuiP|LY~%6vcMV_JfAoRo~Tg>|c*Mh6Lra5f3JaTCFGz%bp_T3CdRwA`XMB3!nOaaeG^`ysm0Zl_Li{U*cuLJ^Oho z{dIpx7e;Kk@d#No^g+eP%zynp zpEM*%$;Z2`Q*1~bvx}xDUEymu+UAvw=1}`YcJ9ig@ZwO)VEYJy3{A6a&6am4*@k^_ zdFkhsf}bebjA+lNX*Ydb?do{Ce9p45zXuqBX_9(K39pmM?|S_x5WsP(l-xFs6*$|IF^sch}wd)R@=m1_h|31*xFNxjk%9RFsRtLqZqG1g~Q_o%M5>HtWMjsnwKqLMiL#D;7vDZjrRi5R2T>eBHJ?~SxAEw@;*MGycO zm6rTH#v@J@mj2jdxlAD9gZb@LmESLfxe@T1H+^398qs;k<6!|uHQ$U#V?h7$lRUIFe)6s%Vln(Q?N?R4lEOOGmk3nh;mo zk7a~c;ynY!FAB(@X^sPrN!1Ag+2o@dHONbSoM%>b11tKVu>p6qg zuU|TbUiZ9to7*fpbPT;4gCL>ZW@0VunCU^aC8?_JvEXe!;qqAayOW+4@mQ_%H!C}4 z6q813&TqWPyzgmT53hvFSCM6u#J~SIT__ui{9Y7%zvN$}hD;h+bI3{T16YY^Wiqf^B0RpDYBX8^DHi%oyC;cM5J?`enJJ5rmYPak&!r3QVw3S7WsS-7{6 z_0Lqk5IuAKLJP=(YkdB#1%O?SPekdB<(%s_(0fXAA~+N38jaX7Nuo7@55Ywc&lXoGB0jI@ z1Q7S&?*Y2d!@uONE*^WmR zNwZ>parE-CyNOWm^@SA`Ez_*eW5fgJW;=(z@28-L=^h*dF#t+y1gnD4Pc|Ik9nv?% zu4L4{cF8HB`L`Lh)@(98vsz5X+ zytS^4dFz!(R(pB*8}Ia_Tk^aa;E$E#9#e9L zTc3D(UoUmThfZ3bISI=mJntN&dnSk~uIzb^N7c4j%bOhonjftE{D5-RG?ZZ7%)QSJ z*keaqpI?AkoTIzP3q3v##M*5BDg)eB2$@h~^>L>_=bnm1yhVVxIKmNjDjwlQ1lg52 z(}5O@)R~9J6nX+a3@bpyFU1`B6_1OzNUw0g7Dv8zO_c~DWMWjmf<`ZnvIb}2Eo-|| zTE_rXzPu@N%~@y3wFj(U&kmP!RM)K-Fs&n*n%?0N3odG9z%w~%7kA&fT_&s>m?R3@ zbgrwD-Msc=r#06Ef%sQuf>2ReA%9-|i9zZkQs=7`zW|?oQ%7Rf-LWLoY|Uqk&g ztc^oEnC=VD(B2fsp5;6svWxR02a1(rupsgIvjDp1szh_3n2-vA3(L{w{7$2BvC;$B zgB!AvV9Ut;hl`l`iADjqnJ~wg9~fF1$Ah#zBM`6@X*75myKaLpx2=yMCHd==;Up|0 zxvN%v0MHCi6b1-W&NOheHujc!zjK%0O*X@!0uSRA^Xt4%Q=qQ7WQ(IiTP)ZyWQ|8h z&X<>mREHMCN&b=NC{VUQjA&g+x@=6Qxlhf zI5P8#9_~Dh8sHEJVu=2daf((TUS$}$=s+%mKrMU>qv;a~7?c~h5xCtQURtHpsn^1c zl7SC_!rc63nfZv>8eX^TV^NB?g<6F{0_V*jqm)>|tu-)E^3LGb&A8Ljrfz@aX~o5r zSPu{bo<5~`dpUe@D43*60O`G%E`r?o6zTD?{p>?al7Hh)@wVjgW?Vp9Q&m{E=z+>- zp$*`{Ys8x!A33UMvmI!qs|@Gj*^vr=$ujY?3IJFUK;cgNinIAU4V*q8S;d*)qa0i| zrM=CBNiJ0Kzk96TYdXR`^45H4!-{RS7W)1<&piX@Zy@#^JOFP>9O?Nd;G$ z{6Zy_v#AN3|Mbo&;#;FDv{bZUBkDV>pgYfuiEVyFU7H2tE-q(PbH+nN$~)0vxvWr)X2n=3^Fy(1p@u;Odsf_-`Qii zWTRdTO#U=~RBu!4UJ@Nw0;`DcNM{u$R@9=x^&1uCWT%DrdyDs~5)$aKo}M-ahR>6n zfNew%(-b59L2#gz;&0a95c`*#J7wP8u4(k>OQY93>74C+Z5YW2aPtw=c4e|ut%v$1 zVHB~*l4BLP$-OAkdoUh#aBobp zuqyV12Q*`+DfI$GH8AVm(1_*vkrlV2pPftEQX}xzccYZg{<7#IXTKXiJX_iB^rbA) zX!PRV@FZw=9_BpGM=zCyn$GSZnsMjZ?I9oDTV0Q&;L$B}&t_Xm$*Vn#^P()0C_3)z z>ch}bkl#zAFsW46h{+n6toKmFeY(p;t2~m6=O3mfewL6)447W)>h!?P{c>s2lh77? z8FtwT!wE_R&qT2lSH@iretNO|GTZaS6?$XD%($2EG|GDsepd)KomS*oIL+GgDW~Fw zWy(|PM-|vkM&S4JLpsa9#}@?~Z7I@oiqxTy_3X_ihPBnaZ=4#tP-P&Ds#zYVNIS8e z*0NpJ13=@C-P&lm)5eW(M!Fh0Kga{Nhdd&qz(dH$odVa=B&_bL zWW(%@VzNv@u5O2KsrT~idz;9kCx^I>!g%gsXZf-0Ao%^CbP~L% zzqiC9S52wCPLEg?q%1eM*S>iHMR>EcnuRog-*z5`{8h;y`vdM3_@VX!a_InRfJ-!k z`BWMrM{3BtPF(lSw=(s1O6VFQbjnsWhh_>Q;=;6Srz(gWDf)+g5K9Bdj;Ea-uKi4(b z`;VgPz^*U%>a50#7r(-?f}cOfzJ5sd;o35z_RYVYQy}<&&bIM*MIcS^PtUdQHvevg z@!z8>SN=N&|1XR|ZQ@VOq7lOqA;c`bmwlySiJ{};eggbua@lJ^51&iC@c7$UhD-`1 z@%V~>g0Bic5!8^$W_Of8Z_d(0$y$J|%+__TT|Ezpd(Lz#R!#jsGP>?UJZaY_L6%tq zIm@H8nV*@HEXvU6`7ba z9^WN+dG&y>5bqzkpXZ%e1CLkorK~?d`GsK0mzI{CY0<0m-15rG$_fhQm6ZaOSA*VN z{`6uZyWUQkPjcl26X*prDf67_?|mF{ga`?Zg1y9Qy{`RCrMiFK-P$^NCIqB_4a#`n zLDS{_^Pm;F^lu&tlk0OPbdHX)F*7q$_g(dJ13w)c9YLYyeh(NPM*~72fAppuxe9s? zJtufkPtfk_5t})!{E86L-P2Q2Tnsj@-gxk_;lYz9PaZxT2fY`kr^UFY$O+oxO*#HL z5rzLa5wIa^@R7F2acpm%TJyKGvdZO2Y-igf%0$aEO zejd}xyr;Q(K`~5AyF^VdCvHjrz`;M6Tb_krEPu4+{F|L~cIU0Cog4wtW2jUG7TP zu6pZJ{d37jTmL+a_axT{f$j3@gIzGsK$}Eu)%GGfy6p^c-_oItPtLMTOwL`3|GE&u zvizS5m38?<#hN;?{Q%1Cot+)mef)RAJ+reCoSgs5!ogGVa{Y6O^XF9dAxEy6vP_!{>X$nI;3o?C4)x-psQCHeUnoj4^?*_T%LiR~=l9zyTV9>z%JZf;+o;$~ zW2INH+}xC}{nGcmGr%3&*%khOoIUM#3-XU)#&Z0-x0|}ae~uUqgP_e|Hy)?C6JMZA zR)leax{#I5-IdP7j-B{xvqIOdwsXH^yuu`>o_S^B#OcA06UL{NpdbQlX;Zjvm`)a9x~eO1j%1$74|z9(!g?8c(FnA(M#1vTE4<% zL)YO1L7~9*WcFC+9MxEv(V8G>LOs}$ZM1X>?3thed3nbg6z_mO0ik3)se&8mjW$_{ zg@*9w?KiGLcx{IpJk-^HR2pYWodfCk?F&iYQ+nz@1FcstYsFt=d)>@`_x;@sO7#ts zU)MZk$Ua_|ktvU4&a(OOnpdCPLimJ7m*N*ywk(;0zPiPW=bKk=Wqp}CjZxWc?6>F- zUOL6>wSf(Ew!3G0dS{wC|l@=fu3uY|2101QC%%nxnZDYKm^Nng@_410#QGm8@^-P*O7AwX`y= zb6*)wc5`v*qvjzfW?j2a4|e&Ki?zut8p_jCOSDA2Y;%~c!}O#I(~g!VdcX>=ldADD zFE-({jRdnk|M`A;RoiGJ@MZpT8$`Sj=-ET(D$G~(kuF1ONC$81SyM5WX0D`@90?=P zk&Ow_+H)EFANJllD$8zb7sn1jL_rAw0YRh`DQScUkVd+ZZcw^G5hN6(ySt?uRJyxM zx+^gmT9 z+FKfOtO=JHT>@{Zev^Iuv5h1R5)kvAfU1E-+e4lOi{3$-gvDguxON6LY40 zW_B$VZJX1@Amh;YdeHF;2E+PoQyJ2)WXJ(kVRSrwg;z6Q-QlDrEnS->_F(OEiAOIr&@?nuM=|PVN4X|A4y^SY>(o_?{^~a8a#F6e;^mUFHjnVp ztQRkPw~Rp>r9A|T;PhE`XRJx`Ssaq;foJKYfv`hM^-xabx( z)4^Uu@nLD1(%^7MDC4{_4@ro;ghYw2{hncDDAm;)7M@#jcvZv}1NTXsQt* zA#!=L#=~K>YK1zf^Asn$I;MB;wAgMH>+6qz z7>mny=6;A-$7#oIn;sLSk|OI~KR*4~+*GWA(2-;vAu#S~qOIq!Q@o4_Jo-KD)n{n8 zV_sT(rza}tHfefk&1U(I3(xZh+lcdp!MonZ-&~hETE}ZX(yi(3UORRD1jpl+`de70x`RH})}}epi)OK+ zJz!taAEl>NQW(g6>N0*!LQ1*@Gj66KE{{@nC9mm;?*1|4!A$T-4T}5S{Ht(#f~RpPe)%T!A5(k{_{;R3%`ZWIM*GNF`giB>)^-9u<5{Kk?3aQ@ZvXJVBsSo`uWmv zO10BnnBsvmfzl+<@v1g2DC5g;u@W9bOvf|VPhY@}n;i3`On0Jd`mwS~q+E_XCD!%i z{r1MzW|H{Wq!yyudaZ)(Jk4I|5@-KN(*v#hnMH3@Ax z7@{S?o!!g;RL!zdlK# zI`1r5%G=b6RO|Q4-W#zxZZ3rG5>=+-wOr8bx5fOFClnl(=f!rr*@S4HMicU?9PP2) zw^QFP@zlsIiLAeuq2+d;LKt-m6$T8N<=D4z6+4Mq}->PnKDCuXG-v7<^n}AqhNwAuU^1#XS?Xu(G#4kg2R=tp9ty zMJ}O16kNQNE8d!n6uEDK19kN~sWf}!j6oSVMVdclJlCw?FMF{^8V`?&ZbkI!%$Nc9 z*OUlCx82>$mZ#$r_Pu+j&)#z9I<_22C>o%%S$&J5H@u4324*}zMp>kH8PD`b^94D3 zz!zZt6lddPkH+~_J7dOUlx?ytVjsnsi}%tA>^^x$+TXM?wjZj7UC8x+7KQFJI%~<*`OL*lvZ5w@kT~BmFzznL&KIFKi9{IN(sW1(>)T)k;56n$W z)`mJ!6WBks-Pm|cLWSxLDGoL^_MI;10O5{~+nNMnaZLNyFF1fYX#H*4gzr@S7m6h# zBQzzb*4Kw_>4?CXmu0aKG=tN zzM{aQRxF!>?IrR-`RCtwT^YL8mFr4(UYA=L6WDLtZZfpD_Rc^%HpofroyW!#-%Vej zMY_%5;VmI*r!g@-y=(8Lh_p1fbJ}iy_4k+5_NijfgANq$V<%x39PJV|ULV+9XbQMT zW052UE@@>PW@wf6Wi&s zJ|ZqBaN~YN;y&3HR{o5RPEdUPDBV%>8T;G-ffAfs7e}o7OF_H0XIyW6B;?tJ`r4X) zH@Jia>5Cohu9jd-xnDgzQ65W3Sl?Y5s?;iC%m_AQHm#?LVSR^qsFzBOb*BqV*K^LC z0z5=Mf4Pi~e+QG9*yGhBR%_0c`5nWOs)@GT47aS4(k*p(A=p$bTwKlryKO?~c-yOE zRF5C;jUIfvV(z>$k}~jtPnfskQz0V*1qH?D5{o)x7u1-Jkn!KJ0j`genGSy|ija~c z={6d+m|OWi;%9AS+#KnbC{I@NlT@gZ+p)EU4c|^ZG3A=|Eo0-%D7#(o@>*bs5kyGK z%a<4lf+JvfRMr>A5R<3}D-BC5dK7#BC|tCh*ap=u>n0 z;Qay>8JXFTFUuvfe8O@#U@~8!j*hvr*caeowa)g?wnTC`@y7U?$)#p4;kE*XG%xSWh?sw>+-uqsesujY@g2`*SR1nF=-VT={oXr8SQ(?Itr(vEs1bl^ z={%O}X75DL$hgy5x;6R|!fs}2YKis0Zv7Yh((=+gYWr=QS1xDUb~{U5T-Sa#qj>~< zyl^E}sMiGrX?E~py$iwv#}|96)#3@~v2y3_62bY7kAYjhevlOPrb!9hAz1HAz%PEg zkEDj%{OYyE=UogIh=EK`pir|W}`_3RCC@84GV>TzMV5X zp7)9{Bw(=8n#)(sci&5T6=2;bnjroO;@e|iX*NOII&_8 z;ZrD$^Y55=BTUaPRI5>d*7ZRCD#agFF7@Bn&zdt_dNd(XG z03pM!J(##}TU1!tKDr51IBnI#N1FJkw114=+l#O|Sn3<~C4&8%s%RRT4lebk^(1Yn zb>v&D&%H3Wdb2%NK709_*ORl0v%Q6=#ls@PE!@?jt(Erv1o+I7WF*+y#F&C>?=s|y zO~xD8Dfj;D-s$;xbR@5+GBnh>HBhUs;?!`mdJAWr958Tz!(6?a%D;0D`J#TwTK1aJ3 zb0HYt++$&VQoz4DbHS!5g1qEcG0d3z^Hu(}b~{z1B!%Rn?J+loAi}OTvbD%wH66~Q zVc)i>wA(Q<&ZLdzs?;2ahGvsuq0h6*1E$57UDMF~y#xn}9=P%GSqe*A!s9fEMHUnm z<>lr+r(@dOjFu4deq?55j?XB0au7l@7FE_CbQn#VCfG!YjdjoLN?z{45Ba~f0NZDx zXX%wPd~yOuaA>>x2_K&u;%r~MZh0W5+#=0}iLCTJWE9+m<)o>p6z1!;P(LZ*XFz_R zqgp;*Y@GvbTa!{!M&y;k!@{i0&6M*TlC(l79W-B^2}!f8PidSM(qwtid-JN&%J&rwcViB<6%^Fq*qXq zf6b@3_diy`&O&cgja%;s1(OdgtI5n&e(9iYd@IYx>HmQE7LEqwN(ng4|BtBexUjJ(h2(#|L?k{raeslRbgHJPFlL zSpf)yI-$f+YOTRnP|*2=_xoTY1s9jv^B?1N9>Vy}!{_nX9>RE-2i`Bq{iE+m`ct=C6+zzGc$oLa@m+&Ff;Go zxdYiO(P+70_kOPWB<5%!cimfGg-TD~d08r!*{v+4;!-zM^+`l;o*OM@6h`^N)Ts6H zQ~VT>2OVP~N7kAn0(=dLDY|bnkS*P!%ioRr=0lou3OUY8;ovhBGGffShBHRFwXHic zlsgMSMy7q;eO*l*9o4%d>;71ljD^XfXJ^$3a6eGA6?D?9)3F}F^gzZ|vbR#7v~+Z; zJbj&yX9T~CRR0QUsrMn2DPB9{3X)yLCtVxb%3LurInc1VT=Q&}t6o^`aPDafQE@_E zUjE+7aM7E!NMhGfF2_SsG)vt>FBK>%aNZp> z_f3o{s|c;huWXvF9ov#TXJ$;w%Xu{$BGG?^l9=u{)I+0Rz6QN+w_HI5h@ck>AOeaM zjimJB4fWUwa$>q4+-fo93%S&cCcUZ0EESXr$n7DOg35Yv3vdK%e-}p(nZ1e zOpK(UOm&t42Njhl*z3&A%u6Gk5&VL?l)GXt?%Tb5{W{mNyqi=C`_^AUM|zL#+jbQ+ z|4}c}IT1IVnqZQYX=`iaFk3-Tad50H5*iA(Y~81A4`ob&BscE<&+uc85g)06cJg}u z3-7nct9EE9s7LdRb*K5$!CNl_tT(}A#d>A9?M}u-avL<$ot_~7Ofb!dFu9}*oxZrb z8V1_>X6wA~XAGEx?rDC1>r0&RVc?VM^$5nAfzI#0W)|teyY}kUL+Tc>&9L^3u(W{3 zOb~JQBA5#cBbcdI^=(abs)pWg3Haju-ZlRD34@5z=y}aEu#ITE?b+SkQ*1PnmNwK| zl|X>0pPDgIMqs5I!aHM5vsBk<)nA;*&XN&+;&IC=KgW#&dsnI-nB zQ5NJ8!+DM=jt#ds%Gnkd7E&|PPV%&sqF5bX*0>j&2;9r~o=h|1MNk>Jd$`|jv%TLG z_EmFd*}2$oZ@g{9%H+Vd67tHZg-}7M6LN7JHmI|zorliiv&KeiYxSVB?BQWnDZY#I zTk8NLQ9;o$=Z$Y}r3&;kSx-3;qR8FL#pk>2!6r5{Gfhh#bld{R7)x_AX-NZ#6tO5N z-F7CEUJ7D5^{pZT|6`e>dI{NkJ`oG_qnaCEBAk^=aJo|DI{Y#8u(qz4o|@^UW?*)$ zRbFEq9zyW*sg+uNQ9mtn73AY1qhy@}G{nNPAVOcCWzc%xcB{WaJZ6P$n1ID<3XJr! z6dg_V-biGACl|#F87AS3nMkqjfT40c+)k@DkMU>pQ&uG>11smn9w=MchKGjbl_ZDc z5;cM{Td$;p*_~3+D)2!3=$P(>x5(uCN*8Wx1e{* zr!NoM9D^g+xEiYx#_BC+$B0$Mw56p3Jr`=5dafQCqiv5IH*|gUh&SNuySl zswFBN7$kfmp=g3G!c*|vvs%)4;#4D1a#INV1o&wfD~|A_2(M{Hx0 zkj<_a5*Qysj4)2io6Hwv1^-?I23XR5z~(qd#AHRH`ROfs^>G}P7BS{N*r-AFR2ANB z>v$?(VdPdSDsYK3AGWq~^v%#2`lyjd&8-iZ%sxlI_lti2+PU~8bjF?Q2Hs@u8qH+) z>VpSQ)hg?gyz8dmvUWChxOid9#mq|B6+Xh^;vJ#S+k9Kre+^F8w{ewhf6DcZymtIO z34@U7IWe7|@PzfRZ}6Ey2I+~X0=}OtmixpzzBiioM`C9T$PW&hF9Ps$HD^R3GZ(s7 zFflx@Ccy2B3kXP)xi*2DKVDls%Y>X-#ak}@#-i+%6*(un<4qS(YRPjg^R zsH$1JsjV%F&d_IXUl3CC#2(Uw_{s+HU5tIYr%%_p2&eEVQmkW1V@ajm9jre#?_Ips zKseeof68iQ<>gb_V$4ct)?8mDY)`+uczOX6jDGrOcH8@O#cAo|IIx%x)Kj6|=Fv#F zyp`EXsYRW^8urs(De8h=p-_lE>EpmVBr>* z%lAo4tVQn1Q^m5MwcS1=7SQ;4*(YiT?Xy@kYfYY!n8{i?<8stBv~K!md3noNcAS}7 zGM{|$=nY!;^As(hFB-?C1Zb!jv}5M+oE|zzEpI+InF_>UVNteYL9Pkvvx|Mro$?*u zQM(7mpR@qUTm;MC3{?yxjY!+=L@KpW8hiP%Xa>c8pxsrM-DGU z;L!ZFLd_=&r*>H5pJUkjTFYGFU4rit*?p}Wi%h|4VXc|ea(l#fSNQ?K&6lAIpP9cO zs%ZJ_dGTDkl^_z_%5Vp}KdWCC;ZCzT4!_N+Zaq~-BYN(jwOmA=Q1SRJ8N2iE$Hj|3 zY6juQ3%EFiCWa)H!c8wDvua)B1#u)$ybg+ACVu#EQT64^mqC|*f<C>84A;rocx@nS>l&l%#Z};_Lwm@oS%a#AE6!?M~bqrWKSFac~x#C-U4fGp=r| z#*%(#mXeUL+1y?XNNHy>P43H(!%&bD*oBLuRJFQ!V=|kJH@BUeFL5Si+2RQ zb(~x2P}#4bS@BEC84&$Zj;X*#B!BKQ@T0U!6~9KV>6KZS$-h`{*ixSaZ?u!+gM6t0 zTJL+8Pe*vFx?MajT>0faiOJ)VbIbSkMTs`&k6?v&%64FL{{Ql)HekUeB=bif0z6de zo$GJ@{sVWRJIY_ADGG|T;s5&qIFtVW49Rynzn~~%b;FLl%uK3tD=CR-Vi&Nv+I;wA zaSXVR)wWEPu}{Ybn=(yk(C~d_d}L_wr%t@Dsj4br$o`s29uO2+XkYk9UI)o7T4@CW z7UkQJp>;Ys>MNsqO~Egss8N*nmCrB2cxX4Y_-zCa$Vmp z&BtDK8jD%rK*!mmvo9WFHLIaV!09~xlMDg9bODuq)}hW@Eg3|T5T8XuLm9&b$P88A z%t*lhbb($QD3V)`w)Mk19%;vQ+Hb$o)}Aa}t`^pP@ov)snj)34Sjx!ApesJx(?HZh zvAT(R)9FAz%6wuxDfj@$5K?|$AW>$BZihzt3n57S8XHH+XL@njt~EGiuRRuvo-^}$ zP7j+tQ|>o{89G4z4gK$sB&^9RDFg=mnURz?E>Ob^{jEX7k@t)~C=*)q*Vl6fw*zIR zxm8V1f$BEg2JK3{drZb#p-z`X{p=j^tj%<8=EgKBZDe1MA&W^oMo4r>$bACyz1l9< zmXOO?XsY(>rq*bAyZzkWcGjYpvuSK{afM?E!tZq#!KzVdWRlL; z;D{r-$B&t5vMNFq+eny={UY4IJ}Bff!Q(OOx<{6D6&&muD?G+Z(r$b zZQ>&uQBe}1SFfZEXE2y6jho@CVnJvet!;yu&jP%{3QK|f+8_(xu}%`D4I!4$I#Gv@!DVz z@tvJDBy_hr1P#63k!(I-no(YG`?hi2?-c`=o}jOZSa`T-%acwhHd;$N!HE5KSN52F zkXv&-zjIq~q0Lb9Oki(qVj{;8MoD?;Z9ix3U%={krhfbOEjwPLvdj{C4{$j&>W_cs9LpUl&{d*qW@KH+?!3rDOV902$SQKjq(Ztg*lZhYgRjw*c76Ydz%139KcQV$M ziUteRvn+(Pqzi(QY*}zoV#yV4p16=H{wh)K$A$%&`USZfP*OEAf}aLkVxz=*<<@cv zI@Z!`csyQSg2CuzJ&!RkYc6WYwr=3KH+U%IW-i0;NZ_CEi4srJ)6?JOT5GGIqI^ZC zqtd}~S3m#EujuT5{JSJBtlgqEdD(CI&+EYzQChrgYu}>gWy4hDHipoN9C_|5B?8xP zSR;d1<8|aafG_OZ`5J2t*D#Uy`Sr%-Z|8qW>B55iMhmqXd5sMjEp1&Oeep<_8sW)V1zyBt^hQHfJ?%fb%6RAd44Gfu0q;j( zr9u^lEmy~n9OO$LIo2&PMn&4;g^d7Z81*%DpOMmm?RoRh(a#Ojj$eLW_=T^jKMi_Tj70Y{00U?=dx5cVF%w<%d)4{{5s;XO$aSHZ3*N=^0f z0H|kz>@ohra!Akx6oY#(f1h20spztDe#4C1cKq%V55H#KLj4WpU0IaZT+Urk?5z!q7$&E<1z2ryW{GsaXHl^)2U z5;|3dAqB8jGmFqUJTOSj0On+48^>-&{yHY3v?PRqDS8J~^L$iY@y!DVk}@dyezXTi zpk(yIDCT>doxZ$E=M)C(gZti6V;L+76zsd#FAuFx2+QW@=YyvuSq54S#gix6y4uXC zYB3)0cz6AP#F7}?sO(h*d$wjCVoV@YxBH2Tt=9+BCzAVe?Du?Q7_2Y3Kp?M%kh<5g%s1Rt9c}BesPxO_VrQaD3!<~%-34d76NQa zw7O}yiL-M~txZj$!YvPNiT@FQWYGoNM5i_6z}L4`z>V^W)Gbx4e-n*R2#i-3Ld!2H zM|x7wQ!UrUJhikeNTOd@(gTEWdtikZ0n&nk!iX&!c2Utb>!v47O;3!s4PazgF}(=T=Tt*0n-xE2cXD+fYoHcBkAv6##$U18km@rCWrtXpn+(w z$152=?c|uJ2d|GuJ`y?};^X5Y;m^-yq@}qq;@v@}ow1yI=n^WGg4i)HhW?qj1-Q@X zI%g)tawF2e1opYf$X+P5eGM<8is^jQV|1DSMm*2+6!-=YMEt=^VLJ=+?p~wAHI+?< zY6Va#1}!8V_9RHUU7_Z(ZGasmU) zK+Z_3EgeI-oa>5tun#EfUOS?RV0xRcK!?^d*3^}zt46Ro2kAxW&_shT0YQa{Yp&au z_z&?hIpRIZcmSHnD~1XSQH4!LL@}eJQbLHD{*6m`9+)29tpIf_#9nRL58Z#0Tt+jVL85f6p=7Wedu|)!dO;q8wYB+)+-yo> zVpCfU!mQ_Bss8n**GgJ_Uqj;WDAd zF=m`}2~x5e>y@QgCEqWD;zCKTQ^!7qxpp4IF#nEW4|Tk82y18>%aB<|;d#!15)_}F zt{66d?E*KgrvhEgwE2IFkn+LWHtfM3+6oE-u%*T_@gS2q_y!rDr|H;7-y=6#(!c6F zY3^3919o>lTp4AuS(asZ(y!XhIq!$H>nzgYE0f>l@=e$InQ~m5=1HN1q z?ydqpVlk{qqRX;07M2%*1YtG%>;d(XPYgRY1J}2A)BLw~39go6u$!&Cz$9RE%8SsH zgUqZqoI#=D?RZ%q75KS&6Z{5@mj5%Mq4q!%*TZKlWI-?$K|e0qm_~1P%Lh1o@ksWz zSuAZGJKq@a4`*xCghXQC5gCGiEVn3+;_)Sv-iPqwpE<=px~0l?i=W~)gK_$gq=<+x_Ro$Y2w&*n%uF9e zR8ZTT-IGZ)UuZHW1oGgrg8yic4X$M;^i}^a+1aH;U9Ia^E;gl0P>6_ke9eTq_q9&4 zgu?!wEYKORL7Z+^_Ud6_2)KW`zp4!?nw(dIY$lrPZv0s0&_eEAZ-TY|RLSNN&Ue0M z1lWWB4C#B;ylhw>+;x{PzT7?9^Y2?(G1Au7ZlbJt27U8~6o$~31|G++tn48YixK%IU}k=SjRm+_YROd9jDTxcCwgK>m3w|Li-+UzCbEgJwj;#PpL=9xE6pr-g0P zmWBnBV?wEUCS;V1ZN5&3X^Tb>SWMs1)1vh7c1bB~Ia0~fn7ZI&RixZ5N&l*)?IbiH zAR;*UQk(HyjLt-YkBJZyL%4^bHCYyZBFiI31NElpVHo(Kv{1$cl5b6BzcrsoE68Fz6lbra{GnS{Wz5M{q~Jsf4`w%j3?c~_KvrBvU0 zl;Pt{D$R5KS2fB>S8aC`H1KZ*rhmI=wiOTW!NK^vA~8S#?4#XH^*XBWZBN9OYw-5M zTw>Y~(DgI=PWjKDBM=PrhP6N;PlIw{=ddkL=7%Q#mxm+(dyKVNu6^Lc#f{IXR^hT+ zxqM&RY<1lMJk3FE4OyM>v2A{Ea`5(vEMjJE$!tz}0jw!K^uVj3nMYeQ!D=+Qu0@tS zC6Sz*Y<0-_`&gTs$ML0$;J_q?aC39B#KvCk%Zh+%VUkyDOGj~(mWVl>wQ%yo)Zlg zq6zh%pHfodz4)%(_|V#<;rkH%iS9M1CNtvWD<0`NEz8;=wDe-Rw7!-P40?ikXk~3? zf7z$4?pDfJ#n5mc)rVkeXT19ZLqD8alF>(vWYKCYpkF_PXo2zrcs){gHA(QetSmOl z(ChCpdENAKs^S!lFn}UOLtmZtNtTwosd+a_?9JRqIyUV8sO4+`VwaJWFfa%YAFeLB z!U~aADqlb70bXpl@L!;>%Wy)bkA$n;`&W)0ZrJmQ~2Ko7=o4ZD$=Q;_(`9vLaux(DIumfHUD`qyn4R4 zQ?X=Z`kL9fuA`UXzpaXnp@p41b3iGnr5AS;zNRVO;ws$=`fJ#WwP@ zpOD!QrSTf_>XTbI=b7eTMQ7VL?ISU^YXZx+qU3VMB+Lv!*7K5(bT~qxybR-DYnDpz za0j2ce9wxh=v&yrG*VY=l+$O}U;LcGDdOvYFKm%RIJxy_|2xlDVy}9D6c_|?1$ZMy!DD0A2)=H+b+ z?@XL?h?Vv`3v<0t`ZDVM81=@)T%U0My27Zt_5rsig|a_OX$jN0+SagkAy?Ka3RY`? zl%(gYM|W_;Mm|QeYR>-}?C3jzn^P8psI#}kjmTaIaKx} zFdcA6_(lG_Vw8*Wg|8Z?NqI4Lh%COX$GSQ`j@k9Mv_#RmL=flh^~KRh-=v-ffI$ws zV}zYa+Ms|hb*l(j#+*)aZmzHA0w@#boKvX&20W)_dBvh$r%LI%c$=qv^8U}Ep0PTZ z`5J^6=5HX)YlLAgsEH2WH2ZYp0OaNu9}2_G;{Dsm+w>6YroWWrqYTJcdE&l$oQLbP>V-e(Dx$z_ zXBec*1rf|t%N|fXW^Hdj%4lO?3>YV4?&*F+0>!zSXIp{B+88N`Z=CC<)ts%JE$Zcq z%yPQ-=baE(xY%P|?ZGVy23Peyq+~zwqsG4v%41Rv4v$yo(VKQJ@{Nvczc-iK(vqI@;r1f9 zx*!TDZ3sfDL8ic!g|XJvCMfyA-Q7+@(qD^__=zB|N|chAh)_4^O5;C%L==)6AQIE# zpZ9cx98;Vc^Z0U}eEISjvMNX|aTi%Wk0e0>oMrfr0yrq@xxzn*g#dSl`)VQHYP#Nh zGV=dY{8G$sqH>v|Rx0i(^=qp1xQFLuVYrCIk~Y4lQzeznQ6YlE98j1CXWb;EH@J*B zc1UXWBc2S=n-owPA3p`!XkFdvi84(&_gB5;a^n93;=A0Ju?J^SnqvI@yJx-Qy1S@I z%*-uW%xSlWw(cVe4EI#EP07czw5J<2+A!`If!#ioY<2=*7L zN!e#kHF28PE}bytWjCIYJtB9HWF718jD-RUV&L~;5X?qO9f-+59sQNV;_`m|zs7k^ zsZV70E>OEDf}lHc56CPDH9u>}zK=V;=r zuJY8k%5i=RXle0iNW#gi`qdH3Z}}i^CysX^nujO2(*^U+LvObg*BBk$1FW%+K;;7> zyI=I5{a)L{OB6QGr)0T-^8C{|icQG}VT*P*8#rT>JYtx8HM+>)E`jfOc&tz@YDg~? z0JQMaQwIgvA}~YEn%Lj^6d6ey^&l`14;+__nl^*r5S8{U=t(-EvhyD&8yQwyUeJqS zw}dR;aS@Hnc(~%MbMkO!nayf3vp-Q#em{wEndu%D=)j>IJ~`SUi-)aIrz0{hAwd)Y z9=kVGizlZW*x^2RS4YM?eH5yH&qD$)V?~0Zb@Lpb2QnG31zQ9nw3Z;2iISQc%e$_| z{T7&b*X>4C)7}X0nBVfAwf#NSksmj2zqdkXv4Nr74A5?Hma^m0Hm-H?1+o?qVPOnZ z-)Ehs^gX6!A9x5z>~@cBVGa1BL1qaEG{^@*zm6Yr$M&&Zjd;Wwhs_&(lVm`TdJ7mx zy1V-OL8{%dp>lEvtK<_pLF+R#By)Ap9%{K-yj;WKF8v$#!q+S3`5`g`G`U61>FbMf zk9)N?FH*sCG zMQg{0$Wkga80eSq2Yo~w2<7}2uv_xnu3SL``b*B4Vhs<;+uy=(=F9O|kQ#ps=l%i% zd!73vT?|nF9xxYe1w!A3X~-L06x*saKTSAQzuVl#RWi&-7G+Fit`vO*Cy+tHoNW>B zQ?v_$A~Q3yz`#H+>>xj4lK6XNtlgfVJHbO1A6v1pdJy8XU0eVbq z>>z7wy9039?S(WD>DZ*BTm3km390Jm%wLVSe|D!iHiq+L`QAloxpVOCS4LxVd(pSThBiEu%{UM2 zEnN4>-_4~>7f}p6IVNtmeALxFO3lS}X4CjYuo-k6>toJu)ODJte+%8y zFzSu=;1P?ObCUV$5e-TXFCRaxUz|Lzxa@Iov1wFzqF60Gfb%4#lx@B9y2kyi<7`HM z6vT>EC1EIi=*VKiC43T&j(G=DiwlabzR|_6&{(tvl`nNo@G6`2`VhdTGn{X~qp1oRj4E_?7kfk&Fg4`Z(1x2g{u@bkhlPoP}c5QX|1!T#EGC)kX^72qd}k zFLHmW$(yQP{|+c%Y>_68&gX%~Qq+5xeu{S)X}gA-H{lot=s6)RvM4BooP}1UG(9m9 zND4&*;w1wEID$h$s{)|f#Aq)AGxMHUtBN62%ZT4=Wp@y~qSYK%*cuA3;d55E18z|g zLlCGJmr(PpwFx|A9S+hpuPHIYD~~XUmsw z;A(f=IYh_Q*79&Txx{~K?>YvDacmBkcKF0VsyQ&4g-LY-6u2l=9CT1k0mV2fdjqAH zN3OU$Ai?6MZ^PE!*6Q5g4#=IpN~P31Rbet1pas4wf&WW0Wo?h9-o$w2Cg+?=mEG#g z6;fuo`-=@X`ucj|WZP1|47(%Kc5hhz&Qf2*i*_ZuJ&;Hq9g4I+rFda`*cy=X4y~qj zGh$q5{pj0<2YmWOrEnPgyU1;H1r$bt^S6%o3#y4fHA#@ihkLE7GlQCIM+z5zoaqLF z^YFrUn$&QC2_NFZX%DmU(A?TwxSGV<R*q(lQ#H(pVx^o4-eey z)zWgzu2Gf??)7u9wcNaUhI1EL(Tw=0h)362ntj{b+Ub&zyX%RFD&J8BA(70FWjsbn z0!EE}B+LWHn%l!Un3u#XBABuoe14m)bbC?}KVO3VP69~_UxgCEz2OfX>mVhSB0|YH zWZ_oYfXM7EdM8*TTsK2IlEtn$|W# z4yT`aE3lV+y!d`bF1xKwgs`5IoCLOE5Pg|@s!vV=`|ZV-1DT4*Rs@Uf&wUS6-JNYk zpNRc|OP>Gdbl)7kgL}gta`JEbHrkIE>-wV%p15Zq5y_*x=gk)u#-lwsp>zc_TVUqC zxJdH8SCz848JEP*B3Dpw{T_`9?h9Sn|18rtMB?7Cfm?<12aHFx`S{JM%d~rU<7+-t z5-y+PNP7_%-#tI)aHzhnE~aD9(DXqXKDZxF~$I4MT8#UZ>he|#JmSm0%ydYQ%M zHRLG_dJ<~=g#e-`UiiaT!+r$16EkzMe@IP=EUu~$tfnr6o`ySmEQncrF0wKw^i4@i zJD_DDV`1Ur<&E+{o;r0heg<1*Yl$EvS8%M5#`eYk%<+w4V5Fs|wr+2cad|mMbS8*9 zYmz2FAO(FYzum2At0#=E+mm<{zy3o!72w{RRwE}PGl|)kR+IDd zW@DQ-5Uv}A=W>kH3+$iJS-=c~nw{s-oi+@`Ziqt3I#R*fy4Tu$OYMC<>TSNrS6Vra z=Ffv^+Evy<3N@|DF|esr42q+Mq!5B?bqt+U9%b0VPWB+ zVd2}0ee|51>b;@AVbWi^R)U5*)4q!H!an(Ig*zqMQARp2;vv`

*LNT(!HW(yg zy*klRc*aGZdswCIEsEbSlmdErC57-1(4`qXpi`=yr=u4BgFBoHMo?so`ZnwGvM-`Y z)6uouX*n;Z06@8V&JLZ+Ql?lPIE9fl1q#aZbGC>(DK$O4zHU4SWLDfvFz%oY`S?er zap|0FLvgw30j!=Tuy^MWqt^LifK_qx82kIw>pv7=p3A?KExP;E|BW@QL!hgp3rxX@#Zxb z)6d#<4#~HC|H3f;pq&O${~hA<&v_Tvn5t(e?49%aIf{e*ITwrL{wL}DGd{hn|DH|b z&1J8is9@CCmZvHgg9^RrNgCqO9na6L#*lpFn!jC{Uviq7(WgzJpzpCi*1C&20@x;` zGUQK?A*?Wn@9z)>s-N5EPxlvl$LdSS!Ng2I8yw`uvpUxnQ(q^j>+zpN)+Xn^Yapxa zzbA&o@_!|=+TXIzXjOAo($KVmj$*prMq68#!v?3tIDBzFBQCqYzw>*K=7OIlF``#O z@Cg-_cgF?l>;oCBo$6=d&)zpEU~(f2nA))({yv`WfwYAF~YqOfrpG&u#yNqQ*qxd9|os zDgA(Oe=)=aRq?HgUvgx1P(V^r^sb0cyBqNHw(&QX!Q7Le>Rlne3!*;M1wBJ3Q3#Ny z&OvtqMP+#BR&TAf?c*t2vBxPQQEzS!&VVyC> z3B;V%^Ya6{3JOx_;a|ThX>fJ1hEY$V8t^nkV)pn971Pm(|KI!d<|_Vk$uXt8ibT1$ zGT4B>?Q-p|(PyV^txxX$)hj`(KXT#G(A~@zI{^aYV$$mj=9I7i0D^FwAJ%EjKx+=9fAG0*vyd;FTLV zxZOtiI=#IzKHC7c(hpF5Jw3zNE%|%Mzo6cy4K#D#H6D4e|NGaNeKjg^KL~|0-|l8h zi0!2;=Ffo`f3vA4C8Ee=d9dosZ4Hag+MtOnOrA%NACC+T504B%H;S2@>hXItn`zm? z!?+@)dGNZqnUK7Z%Y*rzpKkYQLg^j*p*w`COpc=EWQD0@+b`LI#-FwmB2jclyHRXA z%l!&Ft9QnFGH1*V=D*-Gn)Lr1%UTHaQ4PI_sETxH>rNdxWvQ3T8y66KN5qUs$JI zdHto+Tdmpc*XBDSiZ^$&IQ13=Zrr$$EdL3MR@Em}Hls={!|E^?@VUOskyOR3Lnv|u zi@oE%6Rm{yLFXj?F9hq0vyK~`egy$%p;AeQcG40_l#KXJfDC^Qs@7@?st_03O{QYK3#Lv4@A2+z`$ zH(9@MxIm?wqwJ9yrr&s2{1)Fp^bQ`gaIyDL^b;5h?DMhkgu{gWsj@pOO$pGoY4vFK z;TL|=kAvlB-_!dHQ`|(@9p2>J&Re9fZqjN18~}rW(_q_U^06;rK~Y{fgSPvVf!Y10 zo&;C&?PdH}(;Hk)W=eX4hm2Ib#U|`#3=R$19BE}ZH;;e#kauRu5$WpAdyQjvM~Uc< zAM=?`RB>1>aKGC47<=Of1|es6VM@8L2w{xPLZN0-Z1WE{?6zLY(7 zbc+aGysxgap1B}A+0TkEI7dE7nzE+IR5jPAt7HD@NB30`_;DB6s+Y%hJ66=UsB-8- z7Ho3goDF}w|t(i98*(W-MYnmt{cR=XKyKDL zIQWT_&_o`GQGTG&0?BA zajj5fxBASpPme*6vM(W(0{rP(bJDDSM28D;UY4l`5Soe7n zN1rU3IPhjXne?(ajd%T2UVfY8bgVq)>9J&8u~|B{;NF7210TXp*Xyga!4nGg_YnysL2~%0u>b%(Tbb63w;Sn&^zqo?Hsj+#8Egc+ulV-_j7~uIT7mp zr}@RjJ!3tI6HnZkkndD^^-xr`!a*UyPR6-9nWWC^`Xzx7#VooS?1PqXWN(G>z=RI9xZ8THOGAf!-<5!=(o2VIU!!p!x`E+zPU-95w zU0YV_X@(!G`$gw(2?rF)B^w~Qh~~=74mv|Y`J)AJj*IwQVkTPr6m6B%{OwZf5Wrl< z^5xAi$qJlBt*7x7MQ^C=&uVCB#EXz`Wv$S!WW3aMVhu5HxA3K9o6WN_V-B8Eidx;lG4j$#R=g|Y_{1L@zLvmDew?_}Q3h^0Opbelq zV}_Bj(Z|~=Y|gJ!-@NydF|b-09UE)Qvi3D8JJ`W^$K3n-uYAM$$JEsrX6KlFr@4aL zi?U+ZiH}dhEmybsxPQ5{kJ&LAkERNz_)Nw44l!ZDrm4escH5e`w)UN-8QYA>Xl7mS zV!n<@lyY-^;W@n$Wl1yj5E zs9<%luD#uAw>6E#Tp*-0%Y*m{(UeK4E*z>MCznc-=2z%!3CWSx8C5t2p zO_U4`isU3Y)8w2pG)=#1!`geFv(LNdopaQx?Vek{m;9fOT z;-(gN{O=s_zRVh^uoks1X=?c+-jC!#k$4l+bs8|M=SpCEvtRjlRUFREY*g%f%*i9R z-;Z7O#7=me@=t9$=(_q*J2}1J!8<~i!|`NjH_}B{6P8uitpyja1DlK^zzy* zYqb~EdVLkya>rpPy$f&?_XCL0(=E-G)2%UNHj|^s$;nAtLK@DyhOq1b;%;6yjwqUQLJ3UD z(y@2S>?N@r3;{ivPuz!JNvEh8!%441=Y;dZ-?R>b^NTx`7S7wfA^6j`HXBl78SS#i zlo*C9r}K&;nh>GZ)*y3H%`xF$Z6G0Nu%ptMRGXGg6kCN{8vMf9SL~YYxnWRRo16Fm zAT8`(!M*Qm=5FO`iMOW5kQ{b?7Lfq~0qyN~N^EB!sI*X*DFml|pKlF(|EgndIWE_| zo#5Onp2N>(v$wamH)fiLN-?h3o+Xi#7Psxik_4W3AR&b|Nq0P2R6lRIl-wE;OqO7&!j7f}y#S!(QP?yiNn?qIKY-<(oikB;ml z#O4%%SQDwFF(24E1vkx10}tBk#BL36^1;dV`r!^-6 zUlSHtpdMv(zk0QFncZy?y|dEYU_$3zQQ;23ti+VVh^tw%;n}XHa2ZD;>o`E&k$rrn zPAx)I)R@GcELmVOhbqE;EZgzO)!y*aMCYAtHh4j`h6fIrh!x z-FlB#r0f1>WJ3N+lA}DY6G)!t!&d|FPl>&N4AIGJ6x!!IYLtIhX#bBk3GP<^NAe?> zG-uMLL=6!>KYTRgNk+F#$yXA8IKSvAhGT|Dk4zF%5WPL2eBwy`9YH6thY@-wnN3Yi z!z8YEmmR;6D3_LrKoDTU{_F31pJZkVV^mFdJS{aXa*|o*#3UXCSq}F(C_`H>dejeh zV|ZlBRe3!|#Uhvb!%J4m6iWs~YC_^lw$A9yJ29zPL+Z`pP(}e3?Tv}30 zpZxxPNABbiDX77Ehli(sWMt$Aehgmy8Fs<*xX~GQM?XHa5(BG}jziho?$I8T_gNo# zDXDkfN4+x1NJugsbL;aHF&xXQAd35Wnk9XM$JdJKkK8AG-@qiSCP$W|#~zuVPtVJ% z_6`4j&zpb%2M48ky}WmZ6QcLG!y|t_oxCC`!e6tq%MmEL^ zq3X7}O$sFRWBmOKG+2uOEy9tv-z&RuEGbzjLy<8|B3UluUPD8}S)a~I7Dik8D^$CI zKOdOhajg5V8!6NYWqJ{(dNIfD0tpFjxUiU*n9O#gcfn_GQYD58n_F7$ zv^R~3dWmr~{?ub+Eh@kC7<0_|Y&>B+(?mV?w}DP41m0t;=#RiNIYONU8F2z{;&FKZ zxI^z9&fdly{}UyZAI@8am4sB!41m|&a8po@eV!Wz!$!f)15zq1%!B`nim(3WVX(F)44om^NB+I2KG=NReLX|8$b}gjg zu=~O#@}rP=HC7quCl`$L3IpM%P+L-3+SlLzC>CyJR45n19C>*i7!uuQ<7n`E@bNK0 zwRDdDSnKoPjp00;D85OG+r1K*5p3F1ZSgCpZ3zjv>({PLHcXg=;=@%>-{9rF;kc~9 z$;n9@6Y}$CBkV$~5|WLti%suRCd)P4B!DT?bzU#7twpw*6i~F)7Q=k%xkg?lPlh$5 z1olKmhMzZ1R7h2IcPpm7YjUEg6$3@aP~Tj96SoK8k(!&CIU#XL65FsLU>}l@ps1pr z|2!X^AU7+!Xx=d;8=E|hR#`~0^t$}DQ6erT#%wnGogY{;twC$W^~AT%sc>?3U{3+h z)$2@OU*9zbs)MP^KhHE%@1&vU3)^?APQZZ%Tp!~O{__+(>@?&Q^r}ZC6Wdi( ztuy%HI?iWiW+kj*A<-dASaPN7kPV89duzFx84wnWU zY53jXA@L6lmzOt^u}#z2--NGR`o2qWM2DTs>a@THKmX-91YH-+w~<~XGh zj}PsgQ#9!ku%6%a)HY}n#PHfLY@s4TB(jm(4$C8hvwkgS-=P398c;aukZxG*?3ku> zo3M#%sO}9%i3ifKsB+8BKc1fb#zyXXVso(E!+y&|F}XEZ73}B9TO2e(&K-r)84z46 zEiJ~Qd-hBh>QI-gR0TRN4@F;KZx7cdJALFn9^Lm+f@p)5NK}qTg$(tefb+T?kj+6S z9vV#FrTadfjAB*Ko!6SQm!H0+QT({1t^D%k%ZKPsas;~XiuEeooHxQ*HPdyTA3V@V z*_-Xj4}^}>DfTy<*lI109O=w|cT8z*yawuFCbr#iukO`q8npg=&MsuDq~8=Sp7l}62y2=W_65(9 zEP%?tLZ-o+?7=b^S84S`Xs~U@lj63M5rEGF^`dwlSBn9@Nbu)qC0bNx2^MJ=dFxsscJvk9pS@7|eE>P3qypA1w~kizPC{E{dCoHRlZ_`INS| zerTrQDj|#;QhzW2d2jw5CEsCNovb%8)NI_`TpuaJdU?bZQkQ+1d%sVa-EC6jS(zvq z==BzP&*jACxxo_kUW=Pcaqg$#UnIhtc(c6;wvLz!rQ7(c+lY}8*ArTmrZMb3DArEQgV}`T7^UP(4JpNNTn}RlD-2HZ`x?7wOln-3xbBiuEE7 zSu9W`X!wC3OwHVnJ>WOM;Oa%MlQpuxRDV#Aq`B=hJAye)dC#=H!f|xPb4bW@?Agx9 z^RV=;1DjD|Odm7jd|UfpB&I#)lc-Wmhoy1~^wB$H9l3vjOsQ&rV=ZLZbsK7{RSgWN;jL|b z{>Wk2wnZ?@~CMD+-*;WDVbRc?5{62#+tclyQpcu;Pu`7w(=W3QtIWKgYSwG=!z^+1qHcj%0-39OhhN+kAXOpRGlWZ_WR1C85)IYMJwlXczu1Oy}fAylx6_OttP+P8ShlW`A zvqA&p8%Cw`6&Dze+S%d93eDA8&;}{r8jS0E z6Q7~VBZUl=B0G{BLs<))F(xZ#r#MC^$=SqjPK=W^M=B!TTHZk2y^fRnk5p=v@dD$y zr{<;*u9`VI&%Yi=c2z*RiIFnL6+spa6+F6#rrOi8&g+xL4Z+t7eO`e|uo%g?p*>Q* zH1K8ri`5tyka%=@>~!8gKHq!!3g0tPVR`uc{Os)RSI3B^N$6x?Qy;62x3;+FC#_y6 z9mhS=+Ny+5ia<9vW%thr`|=i;lGVo_Zd}Ce45fm%#KH+yQJfpmu!~?*eFVeao{Fo| zKhV+6s?Tv$yhLN9(0=|{4^-QzXbjh^cowO_YB{#jTdr8vGFZ4U!m7EqKFy+@@`d=5 zS!BnQ;Kl`EvwpJuNacPgRopbSPSz4F9Vy7{BDQ-__ z=Rx!Dm0l^lT1OZ5+C~%NXJRqnI*dM4Kt`J>&CML+j?EP@>a`O#;Drr2*MAr(Z{-QZ8BsDel z&Jv-m&Hi`Q1Y%+S{f)MKAxx(Bx6|S$)5eXvqG~o~2KrREEPJ5Q&OW(EN#Ei|ZCyaT z6V#&3tJ#R=G-md$4{L&$cUl^63as~FKF4MF4IUl%>BLV;s}#A2#j4%&A%-FdB`z43 zB3A7fZu|MUPD8Y#&#j9x!oI=RCGdAmR3;IFaO0N-J^*khdGTOjWCy5waK3BazHi>_ zt^Ej^@*}@%(RClMJ?V)EiqhVL-|pH+!ySd;5NHvStvWY5`r}gxYOrVxd;k|N@F)0G zYS({>JWWKs*PM|l5q8<*Ko9L;4$xB0;T;S(Hag}NH(Ynx|EB|9v(ng4Ew(=%(=PC6 z!jEw2>|~pE{)4TcYV8tkzA|n;KKJ!EyXYg_;5L1U7@MEZdp7q;3aP1v!)U=d?~aAb zCclN)6|;A-`^-rAQi7(-i5MR1?=}51V8IFjF--b5r6vRxaS{T5cug6V<;P! z-VZOH4RTN>a``R=fSINn!2tP6-hoJ~%;bI=YvqW|7Rs`ud8MTEno5jO`cRL#q9oqLm@(5^pGRIe%z}=|wRr z-Hhk5q#4$OrR2Cgf*$m*XG97L<6%VZLR%)V7nT+my@|KC9fW-$O@r<`)Mt7yQi@=^ zHUGT^Gc~#S=tlnBT;KG@6cM;}3JUT&+g86m`HOLR*#dl9 z!g!HV(~Fru+;6SyXLEu1LUr$Rc66#*cVNi^gJm4nU;Se1Svv1;bDqZ;T=~krSJp8I z5K+ADlHpbdXo?NU zoE5NPJ{U_BCvA){?fCo^s`ow!yzDXFmA31+(s6h-d6|XsUS@W*oui}VP6~$za`uNs z8}c}KF}u?g^BoYB;Ej^uldV<1I`w?*{H4mHN3K1kILS;-Za7?dLor*a;K5cp__Vm~ z_s#sKJs?EsiP^`&dN()5d&WaXwTnFatQ7p?7;`tbIR30A<;?wZYmu^xB6r=*Zz={o zOqP(j(}peDSr{yXffAnbfi3fGUs@f6;8K5u=|GXBQpQq;D5Gkgw{m|TxJNS-+9C2@ z_VUoVqSr8|0E7MdIW`udlp#&k@%Rzb(gisQiU(Zy80GTDaB40C(MB?~#x~Z0P8g5K zu}D6(Eye6fMu^XDUFE2N+iuQZFH322tsn%?RHCu0Solu4pS|X-Gd_jjdSh6|+~E=H z^yp_D6>eB->|Zk$73&azM3{tiB=h@`vDi%ZtpyT>&r{ofQIl>Qd;1`y-_svm1U!J+ z0<2TgOQfLwLlSCf`R$TG%*~BF zzQKMub3U1Gq$!>am2ljZ)3SfNsirA^x*6-xJ+FIuXJI)}_SQ>8(6U7%|1XWz#{tWr zG*zPp%6maVM!7wcQFHyCt$}+#S5@mW_Vm#a(njsK#p@8cv#^0}B`26>*Wqn_Zo2t! z;_zh}hrxoHMhq#G*!o;o+Tgn5A-fjq7 zlckAZkxy|cNbk;2>^2b_;dd5XjtItGPjIkI{N5v!+!fD5U{lO9K=yuYk{lSDSYMyx zfb|a!>)gTeDOli|R|l5B4R+qK#86q$09Ot_3+*zw=*L5v+{oHLb zd_@#5XkFRy-Dk5%_R>3n7AGOpoY8IsQOUz48^H}mCU2*W2Wjdu$!|y4w91)do>_g0 zSSEgg*Z$E%)6i$!Xcv6(tzRq$ZWgb4JeIm+%MD-b4A#HBAyF;k# z$dFD3sC|AJY|DalMHh#aPjYF8POBfaVh896N;Hs=-8cK;1K6b5Y86>lW5V_(yNL8q!oK(&rNv;^LmefS zh^7pswQjZq{d1MWu0%1Ixfo0Rcq~fLeIFL@=)jgX;17;xeeb_utqdQQaUzhY+zi(h zr1q)p^TH=&f;W{)rA>#XI8Kk=Nlw)YPVBpNIk%-3rGK^%%^Kck^5*@KD z-M6PvNXZJ`0#K3Y?$w}|r?=Ub$L=_OrPtTcC@s37&kRM2>=(M!kn3g8vIj8VtED0L z+0`eqZ5IGXq(pIOBg>6n`wHVRF)?AMTfhpImXb0XZWM~WXYW8b+pW8_@2{4?B44`c zXxbx&*;6Uf-ekYD(h>{p*~hNxin}i<7A}H~2{5KHoaL%FD2S4a)>EnRZLY;-6sD$0 zem@PiaO=}Oz^4jFs1%shq)#zb`UM7Rmzg-X)5n)`^R<28-7}a(00%~EcS;U>Q5gfF zPIHYi#ye}6zO}FFg+7HQ?QR|39~GK_FJk4hKJ}vZw2^QDEXoqxDY2J|I}|(b zAHbW!76MS+74utd!4UCPuQYBd2BZ1{t48@QSfhRstbvy}lk6ouG24$MBq%v7o*DJE z!dBS~Jkx|9FG0$cg~@stBnz>qOLurbKkzrnH%RihXgWQh@TTeF286Vp$08LnNsVP}SFosHCti7m3wP)53y7<0^+4br4gNhF7v zT-vY%xS62NdDo&(r>SS@`SDYx1p@^cNKCOyOR&!d5`WPaW_83JtzB$oy>`H3oS_Wh zw8k%$ntuL^argStU{Qf-PklU_cB$nZu(2#OdCmL2+yf)N$a11mvoyyj$TQRxme5Hk zAAIEx7a)*!5CC)j3@bP~P|(FlDO)3}taq-d>PV#2i4%mrzQrcr5kag!J!T81J!yVsNjtpLlJE**S$z0eq0(S@&(egnF^ zkDuepFrWMO5Ri$ITImJ&_{s#23M}*>+yPJk)NIhp1K838RDe%TchVBU{KhigxRIij zm_k6+W!m@gkSdwotS(EV#HKq_OL|^IRXAB(3jk*+X!&c3^4dP_*$OT*STLWP;5y>fu=>-REMMR7lbif-?kZB)h=R!aG|rg} zVP&!ZTT%0$=lkCkhL0-f!nyi&eiT=0%VzS4%mYj3!wU#~6hP1?FPImv`TWmhw-4Fq z+?}KVaGSp|x*PQ!qMjxNU4Q8W{PC;X1|`WoqCPrZf9$LZv`9^?4cOUS7j&BS&6-*) zfeHyDje|w|9}^&F@7nB)MuCAQc+Aqf({ZH}-h6|H0s{x8wj042Z1s+w%(ST32LnoZ zGwWlt+t&WpkFmrDftNhiXa6!~%6KGyxTD~^I>Aun^9rGz&u+I+dsVy|RMu5Zy`OV) z{VW3mCP_HK3BwCP?cW3}F5a~6d1#jUhW+O~AE`0|g4b#`4-e0+iSf-4 ziR6y{epS{8K3-l%)J5rv8vyMDtc8n~dpZ*vO!_7Sz&I?y|KS0O%B(oz|kuQ_-V1e;< zZ(k@txFfU-dg%-uggscrG>kR-wDGKY#@|M(KZ%qIPtSfSVu888QRAn4^6Vss`8Kw3 zoSmfa#GiBie3@T!5(4h`!}H3siMRhfP57EO-eRZe$hR6Cx?Npu&n(#h2=yoy78>q& zpyTYQj(^rLDqB^dYr?DQs7XPoNExRluYD*d!>^yc z`}XXt3d(Z$v!`aIMeM%)LQ<@u4z}t!=D74FTrFBSR9n}PzbbS>1j^_CPmu5*)EEO6 z`(J|}xzw+{GC?@ppWTy=HLv^Bx?C{4VEET3toQE|-7mC3cek7rYLUBv-19{$zU{hQ zeJote!^aBsoEBOO>_!$@g2-%(5lFR!=7;~ZAI?nRcI1&G4~3b&Jgqb*;1OJ&NLMy! zT0g5|IWYkW(yaf}UfRTK)9%lLcl6R9B%T-chDZ&|T{BEnSb{ni4G$$!x0fa@+WFXiRk+$g;`gJf63r5-WM3cs$d^r@Oc;EfIooS$d6`u&570i+gStXzO%AYz zhNgx$@o$P{bR7uMmU?yQoZON0Yu+I7wcD(u(4wcIVeOG6M4uFySLl`rOKfF{&d}W5 zT=8rw$Tek8!y^sBp1wJ>1-wwI*qbU{n55p9+w^kxSzBP>ByQ#I}jQ)zn;9MD6Z6 zTB2$fv?^Ul&BrIPu{HWPa?Yq|82I5ahcs*!S*eMRD*RdRu*by3PoI80B$o>3=NSk~ zjR-&B=lW|)X8sB+wX-T?3^F|#>Z$e_WWv7ThaP1+i+np9d#&1bt5%L>7p;@+pLzmE z)tAY_LQJ1sH62MvSRzk&_uR#L!^X)6Pk-;)$f_GUe>U*=F%U%`g4HrcF6HjmSI{OA zKBEuc!OsNemv=n3^XzJSAD1PN9Nlk?OZcqEpP@U3-i#`;T7yU;xO48BE+15RX~{AC zl1sOd%4=-3)HHFn>B`?OtW>R=4qW5qb#b$*AKY~^^m(@Z?iN7cvpBw+n3w<|-sO)< z8GK(%JCo(b|E#1-{d=GDGdxs--^X0BCl1Lg2gboCi1iGYImirxLu$0@@OetxFY)=l zTVXz_AVN8&+*4})%7vWzKieW;eKDKCwpGfNaz|zUO2^0FtTUaSRzd!f`Ej{0-beFS zf)oC{of6!&0xf?hhY~w!D^5gcWQ7SKC=bz3ucojI;JD(rV|q51-J~_rm~BK5J$qf@ zri!uCQf{L+*WY|MJ@I8s&R(Nh*n=(WVZ>yQW`%3P%}yn}1Su!oE~5*7U&Dh7!6any z(Y9N2$$?tJaYN4H-H|Fo1xe@SANl>hey@^Z+6{DherF=8;t)>8sG+ZdxKom8OK~S` z@{cn7;G-R{9c#_LTgjXto{TKbCNSXmb1}`|NT%Xxhq>ZK4%_Wt4#)aY+zH(K`wIHg zFQy45)!yVYbxnJzM_ST#RPX_G+-?)ZFe+q?WQs*Y5N~TKqbD;%wdhHK+7{H_rGE!Gm=>8HGdI@fX zdxl)1On+4!KwTQEe)zhIO#4DV#GNY?)ATS|U0>K3YLyVD%%*!8!9^ONm-TUH!rA zM&?+pdNPGDqbjsc5$G||T-kS^ZH>8P$FEalyg2a4WzE($CA{^`f9dwQs zbl!3l3^=pxQ8$<1;V^iHOMA1m#G*Ni&x2Sv7VTA|U+7!K9x3H{E>-M=OwDhNm@jt1 z!OqUgs-DFjl+XM8t~H}o{qAft#3JljlW^rKM%7Qd{kAi5h2Zg^^L|}6nC#1hIEOw* z2ZVKNTPDVk2DvSJtNK`*kE$Q@P-Thg|FNF8`e?sU*A zxUU?o;Q^rM@&ei-9^Z_Nr>D>2wCKB!cmCh7bAx$-3k-+X`HK#W?7f!80SK)#lI6#n zdU_n@liv7+v(l2@MLM)ZQT4hj=ja@z^RCp+2N%`R=f}HD>|Z;Wm)gzWw3que1~y$Q z_W>pyzc4p1jMq056vB0HqmJUI0JJ&_i56+O!AU*0@${A+%s@YKoq!qFc5Q<14gedMf;5jdq$<2g*Hw7FSTQEd9B_by+nVkNsk@F5<_;Lo7AsK zN{1w;xS8yHUwix4uXIISxbKaMW}vujUrR>20FReL|1ZVUyvG`m= zE|iLdrjzpn)q(LtWR!&-EsZ}ARDqWXP`RdoUwD4+n~U%>;0R2RwE%0#O#AcWucK>! zfi{p&3-fa7&eGleBdgIN!edEF8M?Z<*9m}n zhC8m}zHK*BTeq_$^x1qN+@G?GMEFm#N3zKBkT5i_kii=p9}iAfb~`8o=ZSr`cEwvx zbG@su_)c&h^=mRa|6HFvQYoXm0wi?WKS}F=078ITKNIWTUscgN%JeAt?4r;vM|K`K z>=2fl{|TLSdU*c$$9g2`^ZkEckC4)qP%Tb&^Sx(l=G-kwh3D=rEpcTZrRL;-IG8`( zN`yaq{prJBH+so$iZmzS6%?>s|3W-InsBu=JjXnmQE_v7$CQk8i~EX|ml|UEN0xMi z4E1&YGrxW`kyCz5334u1#I$60WRIgy6E4ykjsMpA^>Snfe=pNB{|A?;e#WsL=pkj& zW3GTu!a$Xihd9zA?x=kVR#D4zBVH2h8x`qx!s zQuqhzi;LHN;GXm}{Qn@#yv^jQE(kjnmubE&?kLTvBp$c7I^U9{jAENN6V*AG^bAxKF;U{ z%K02Xldd-;$GRto_!GD&gX))@*6{nZj9}xQQ6F}6qZ|Mm9k5W%ngLoeOhcwd2wsJ@8b6`S+ zgTzxTW6RRSwuD9k+v&f~PgS5@G`iRpCt%r`ke?di2%z`|$`Rt51W|XhAD6fQtlX-= zU&>?-4h_8vDH;%jdigpaDfXZ)=F|%c-kj@1nF_T8m)XlD{7ZpE2?teuZc76_I<$@v8(FR_#VE#|o7p=!|fan%{W zEP;i47LdYeEc9N8J||%z));51Rk`6FGIU-uRmgCGM6>CZsBMhRdz^v32t}8==LP9e{LEw+p(@Zaj9zz!bHEoWwS z{&Plb!{Zz~A~RdOa<>}BWI2jL_l>vuejb9JbO2M{98VQsBxBYBLVKC+U`jtn>heIv z%4++nf+jvS=M6qaLDqb4ahrjvSJ1XEq3vuw0rQ@r*Z`5S@^um zBW0B(+8`&XN=r*+2+jyn($J9aL|Ah$q$!kbFGuq_KLdizd{0_;n(k}J!etNP5j@oV z@gXRdx3Ddw&K_t{ZQAAU-uT~>HUK|?gO3FSK|_)Hu6+ULt6zlzU9`Dcz-SY17&{^0 zy6v`Gp9{%06iE_AiS5_Z6qv$UOu9cg*FG;$TPl7NlC4p3!#gLx2yM{wCF))}Da*RC z&i!olBFl5td`t_Q%l+;UnYJn6A8vrgq_3o+gZ{cLa=LKxxeqaP6^-U$N&4`*41#h% zLAz=>%xOLPMO;i+_}ePoONnsiC#gy;oCvjp?LmUIwrcL->e^888gaew?T0c{+{2i| zuWe^-34c#E&Y&sMS?d55+~_UU8@#?DJwP-Wh-WtIVi;8gqUAPIf0CE|#I&?_yu^M( zqhJ`Q^{$HWhC{9!J^zi=T5Ap=m(7P`lL`PSps?k*Wn_~^b9IG$-F7KOz^iz0eY8!? zn?yB3B)KJ;OSUnbiivM%i=NAT>=p zeyMJuw_Qd?X8)0)4?XVuvDoWj(De+O zv`b$iG?=Xle=C@y^)Jc0-^`A&X_PmQjL0}r1svYywCnrO@Fd8>K){wSSbk}T$V2IK zH)TFSrmm9uZZFD01HDxQX-D8u@8kj$xFCdTo?enfdH5^2ZbIbvwz9IW_a^M!tp`37y)NH^z;^cq}kB-hHw1GJYkwaGLp5#>zZQ% z8<7dswU-0VibQTTFFlkg_#^EXKD3bmoP?4J)2&e!vpU2E+s|Vnt9aA09OZCcZ?7+T zkB&CAv@FSeC&lP}56h_GAMzmv@P3)ctiGatA*lE2sjU@5OT!2uZCoz1qpe@DjbiU5 zNIwMf@s5=vhs88Rc7i$e%WhL!axkCKZ|qneGKi?P^K zfAWaYfxNHe+;iZbK{R-*ttS(I`tTY(`DP-H-~9sVR%$}*bsmwg_|$#Vqd@hC7V!X! zL6khzCg9!Zr%Z zh2V!0(e9WnmVV>hq+rc${aUk`p`De$XkAKT{nAdvZ)87?7H|z+1H^XVtj0 zvF`mUu$v9Cmt8q#&YUwv6>fdbod7~e&Kwr0zTZCs&didK<}!zsrJjvQAQNkpg%|71 zQjoiDo(dz8}ZgFLNzLef1;r z^`JvN8f`vwok3t29mnKmVmyi+LTco*93CE2 zqb(~r<_gXP={LDB+ww|Nam{y)t)<2-cjnp_z1pI6|0LqNH^W;OncSF@P;@L+lf%hq z=;P4S67X@V&jg)9VRN=#I_Dode*AifWq47NCW$~bZt9T4yGvXQ=BV6!DW68fpwRh? z7k3A~M^w-__4&4wvuT=aIHk%3wI|ajx^B8C9XeAOI+VDqr5BqUXqN?Z93W8*D`(>g z7EKMgIgC9k_XgM|2T!#wRyqojUV@p5OOTV7AMR+6B+E(m&hgC*Qe`7)F*s+ujX;dPOtc} zZ_q~mPFDjn=#Sfa)%cG$V6^jZyDb&x$RgIh?)rxd09SLwOZM*wRQ%t`*@Ay3XS@BK zoV|PZ-wmEQ0yQLlj$@|4y;C6>w_7`S>yXqy=eOPU^PE3F|F`E^%DSn;qFS2yBwtC< zRPgSz&EoIhMbA_4d3@vJFyxDKU*6-kMSBXF&GqCvLe@T-=p7mpD3sqT^0h?Hf^i$Yr#=W_cH6JM5_X(`N{4y4+V$mz) zIjmZxch|Na!D7>_7?+H0*=~8O7)kBC*|+xGS|r}Juq~y4NixFYw#DpfvjffHLcMSM z#HmeJhnBZ&wo{E;-~6h@^r~xH_#BtC%2!|ROgF2PS-e!ua&i7<$`Z|msU$Ep>G>>( zeR(p@rTy0gVX2iYPZ#^Mh*zqwcYc#smesSCO3)DF6}3;Z_Kd}kZ#jQC(>T0IIcu^d zWM=ElME?e^5lPHGEs_a_@kDdXSk z^lpvUy!9w_O6WH^@Wg}!~qN=iXZ zEw3pG)SF9G^2y>w46l)Q^UPnjt~AHQ#>9Zk5y$7V-?z(GT8ay#DmC4qnbG>~O>nF9 znj#D2Klo9uy5dn{_9kl~WF&@>p3Lvw_3Jfm+iK4~l{^7@J_&j$zTARBIvF}YNr-+7LK)}7n4wRDRr!gI^tmtQ4)a)G2Sd*8sh;`KcKrMutr zv#EaG@@QpM?>QCfPo)BdO!^C7KE31z z)O2iBF(l@dwXo8E{rZ(Nda3=DwBzEC{{ zz(yppl6t=ah>#&#?qZ^Gi(PAdxf8La+x6r$BMI)&+8)Df^gAfW74;Bp+MPzzLB~Zm z5P>BesD@`V(U#@gjTx2)n;Y48!kGMN`6O<2e^Tv)WRxz~%m$!N0e7Y+^U+nm8uszz z1WTlVJ9J>#8FpRqju0=K2>o?gLz)UECh6+DytdP3qM{zD0XWU2{tD2?syl;hT;pPk z9NCH=uUm(iN0V$m2l`PiuW9Y!bgvcs^679 zM|d_*g?WVV#bVeN`ctz?{?$fm0<(gYloT6Hs2^PR7u;ZX)EqjCd4#+IwcNSb3^HKU zShbR^@m;Thjw&L&O96UFfunmhX^=F>NgMFSGMNYDZO`)-5#vU9F`T82h?L=Nt8&$<3qe&?RhM~eKwG@!f%wO$(2ZNS<|Z5Dd2A-}@bSw-CY*71 zahMU~u5HH@78Nxge$%iu#^1MoMNPf>Hmf%B0Vygl znW>f4`zFlKyWiz=tYBkT9S&}Q^qLotWIHPKW=9OZZtUz#zzl!GapmulA^%ZB;XeIe zt)8gv!J`%uQc`(?=A6;P2KjTP%S*V-YB;QdQj7swn-r)ZdPYY_J^Q2K+U+zeZKfpd z-}kC{1~QKj4=)F|YS{TZ zEgym0_MZnA{FuzICdLKQtZ~IH_?^E2hR|GSX)@JGPJ-S>H%J*3-p~K4E?MO%XJz#m z>L6So2?52gx$rgmB(r8O# zV89(TBs4T0d+Vg+lr9KdcK1bM;;Pt}zdmz(Gdg-DqdO`zbkR&Cn>5FaGdgAM$)69; z`-$cEo3$3M8ysc2QiYCx{@W)Qcm^h+KSrx@*zY8>E6mK#Z2%*B&73@OqR-61P#w1g z7fNfsv3UPJ(Rsg`PYb2_i1NK#zu&4d{}UYh=O

bL3lFj38!5TRcD^gEAv@-GL0X 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

    vM*JJcccg$MfH7I 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

    UwC^Y|F7ssgB0$lHUps9r6|(>E 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

    ?y0Ah;kOq=dpK0?)rFX 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

    ;*%jd`68Lv=i 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

    swdE_ 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%0DD3g7Y`f_V`om(L;~;BK?hEob%5LcQ+$SQ1_l( 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 F{vV500 segments/hour | **100 MiB** | + +These recommendations assume a 24-hour backlog tolerance and include an +additional **~10x safety margin** beyond the formula result. This margin accounts +for: + +- **Burst workloads**: WAL production can spike significantly above average rates +- **Multiple clusters**: A single Klio server may handle several CNPG clusters +- **Low cost of headroom**: Storage is cheap relative to the risk of queue + overflow, which causes WAL loss + +For shorter tolerance windows, you can reduce the queue size proportionally, but +keep the safety margin. + +:::tip +Start with 50 MiB as a conservative default. Monitor queue usage with the +`klio admin queue status` command and adjust based on actual WAL production +rates in your environment. +::: + +:::note +Large transactions that modify significant amounts of data will automatically +generate multiple WAL segments (PostgreSQL rotates WAL files at ~16 MB by +default). Account for this when estimating your WAL segment rate. +::: + +## Setting up a new Klio server + +Setting up a Klio server involves creating a `Server` resource along with the +required Kubernetes secrets and certificates. + +### Prerequisites + +Before setting up a Klio server, ensure you have: + +- A Kubernetes cluster with the Klio operator installed +- `kubectl` configured to access your cluster +- [cert-manager](https://cert-manager.io/) installed for certificate + management (recommended) +- [Age](https://github.com/FiloSottile/age) CLI installed locally + (for encrypting the backup encryption key) +- Enough storage resources for the data and cache PersistentVolumeClaims +- Enough storage resources for the queue PersistentVolumeClaim + +### Required Components + +A Klio server setup requires the following components: + +1. **Server Resource**: The main `Server` custom resource +1. **TLS Certificate**: For secure communication +1. **Encryption Key**: Age-encrypted key for backup data at rest +1. **CA Certificate**: For client authentication via mTLS +1. **Storage**: PersistentVolumeClaims for data, cache, and queue + +### Step-by-step setup + +#### 1. Create the Encryption Key + +The encryption key is used to encrypt backup data at rest. +Klio uses [Age](https://github.com/FiloSottile/age) encryption +to protect the key, enabling credential rotation without +touching the Kopia repository. + +See the [Age Encryption](#age-encryption) section for full +setup details. In summary: + +1. Generate an Age key pair (`age-keygen -o identity.txt`) +2. Generate and encrypt a random key + (`openssl rand -hex 32 | age -r -o key.age`) +3. Create Kubernetes Secrets for both files +4. Reference them in the Server spec + +:::tip +Use a strong, randomly generated key. This key is critical +for data security and recovery. +::: + +#### 2. Create CA Certificate + +Using cert-manager, a CA certificate can be created by using the following +Certificate resource: + +```yaml +--- +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: selfsigned-issuer + namespace: default +spec: + selfSigned: { } +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: server-sample-ca +spec: + commonName: server-sample-ca + secretName: server-sample-ca + + duration: 2160h # 90d + renewBefore: 360h # 15d + + isCA: true + usages: + - cert sign + + issuerRef: + name: selfsigned-issuer + kind: Issuer + group: cert-manager.io +``` + +Apply the CA configuration with: + +```bash +kubectl apply -f ca-configuration.yaml +``` + +In the previous example, the CA to be used for authentication is signed by a +self-signed issuer. This doesn't pose any security issue as this CA is only +used internally and trust is established through configuration. + +The primary concern is the relationship between the client and the certificates +signed by the CA. + +:::info +The usage of a self-signed CA is not required by the Klio server. If your +PKI infrastructure already includes a CA for this scope, that CA can be used +for the Klio server, too. +::: + +#### 3. Create TLS Certificate + +Using cert-manager, create a self-signed certificate (for development) or use +your organization's certificate issuer: + +```yaml +--- +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: selfsigned-issuer + namespace: default +spec: + selfSigned: { } +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: my-server-cert + namespace: default +spec: + secretName: my-server-tls + commonName: my-server + dnsNames: + - my-server + - my-server.default + - my-server.default.svc + - my-server.default.svc.cluster.local + duration: 2160h # 90 days + renewBefore: 360h # 15 days + isCA: false + usages: + - server auth + issuerRef: + name: selfsigned-issuer + kind: Issuer + group: cert-manager.io +``` + +Apply the certificate configuration: + +```bash +kubectl apply -f tls-certificate.yaml +``` + +:::info +For production environments, use certificates signed by your organization's +Certificate Authority (CA) or a trusted public CA instead of self-signed +certificates. +::: + +#### 4. Create the Server Resource + +Now create the main `Server` resource: + + +```yaml +apiVersion: klio.cnpg.io/v1alpha1 +kind: Server +metadata: + name: my-server + namespace: default +spec: + # Container image for the Klio server + image: ghcr.io/cloudnative-pg/klio:v0.0.18 + imagePullPolicy: IfNotPresent + imagePullSecrets: [] # Add image pull secrets if needed + + # TLS configuration + tlsSecretName: my-server-tls + + # Client authentication configuration + caSecretName: server-sample-ca + + # Mode: standard (default) or read-only + # Omit this field or set to "standard" for normal read-write operation + # Set to "read-only" for DR/restore-only servers (see Read-Only Mode section) + # mode: standard + + # tier 1 configuration + tier1: + # Cache storage configuration + cache: + pvcTemplate: + storageClassName: standard # Adjust to your storage class (use 'kubectl get storageclass' to see available options) + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi # Adjust based on your needs + # Data storage pvcTemplate (for backups and WAL) + data: + pvcTemplate: + storageClassName: standard # Adjust to your storage class (use 'kubectl get storageclass' to see available options) + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 100Gi # Adjust based on your backup needs + # Age-encrypted encryption key file + encryptionKeyFile: + fileReference: + volume: + secret: + secretName: my-server-encryption-key + path: encryption-key.age + # Age identity file for decryption + identityFile: + fileReference: + volume: + secret: + secretName: my-server-age-identity + path: identity.txt + + # Queue storage configuration (for NATS work queue) + # Required when tier1 is configured + # See "Queue Sizing Guidelines" section for recommendations + queue: + pvcTemplate: + storageClassName: standard # Adjust to your storage class + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Mi # See Queue Sizing Guidelines; 50Mi suits most workloads + + # tier 2 configuration + tier2: + # Cache storage configuration + cache: + pvcTemplate: + resources: + requests: + storage: 1Gi + accessModes: + - ReadWriteOnce + # Age-encrypted encryption key file + encryptionKeyFile: + fileReference: + volume: + secret: + secretName: my-server-encryption-key + path: encryption-key.age + # Age identity file for decryption + identityFile: + fileReference: + volume: + secret: + secretName: my-server-age-identity + path: identity.txt + # S3 access configuration + s3: + prefix: klio + bucketName: klio-bucket + endpoint: https://rustfs:9000 + region: us-east-1 + accessKeyId: + name: rustfs + key: RUSTFS_ACCESS_KEY + secretAccessKey: + name: rustfs + key: RUSTFS_SECRET_KEY + customCaBundle: + name: rustfs-tls + key: tls.crt +``` + + +The example above uses credential-based S3 authentication. For alternative +authentication methods (IAM roles, IRSA, Pod Identity) and S3-compatible +storage providers, see the [Object Store](#object-store) section. + +Apply the Server resource: + +```bash +kubectl apply -f klio-server.yaml +``` + +#### 5. Verify the Server is Running + +Check the status of your Klio server: + +```bash +# Check the Server resource status +kubectl get server my-server -n default + +# Check the StatefulSet +kubectl get statefulset my-server-klio -n default + +# Check the Pod +kubectl get pods -l klio.cnpg.io/klio-server=my-server -n default + +# View logs +kubectl logs -l klio.cnpg.io/klio-server=my-server -n default -f +``` + +The server should create a StatefulSet with a pod named `my-server-klio-0`. + +## Read-Only Mode + +Klio servers can operate in read-only mode, allowing them to serve backups and +WAL files from Tier 2 object storage without accepting new backup writes. This +is useful for disaster recovery sites, cost-optimized restore-only deployments, +and multi-region architectures. + +### When to Use Read-Only Mode + +Use read-only mode when you need: + +- **Disaster recovery sites**: Deploy in secondary regions to restore from + shared S3 storage without duplicating backup writes +- **Geographic distribution**: Multiple read-only servers in different regions + can all restore from a single S3 bucket populated by one primary server +- **Read-only access control**: Prevent accidental backup modifications at + certain sites + +### Configuration + +A read-only server requires: + +- `mode: read-only` field in the spec +- `tier2` configuration (S3 object storage) +- **No** `tier1` configuration +- **No** `queue` configuration + +:::note +The `mode` field is immutable. Once a Server is created, its mode +cannot be changed. To operate in a different mode, you would need +another Klio server with a different mode. +::: + + +```yaml +apiVersion: klio.cnpg.io/v1alpha1 +kind: Server +metadata: + name: dr-server + namespace: default +spec: + # Set mode to read-only + mode: read-only + + # Container image for the Klio server + image: ghcr.io/cloudnative-pg/klio:v0.0.18 + imagePullPolicy: IfNotPresent + + # TLS configuration + tlsSecretName: dr-server-tls + + # Client authentication configuration + caSecretName: server-sample-ca + + # Tier 2 configuration (required for read-only mode) + tier2: + # Cache storage configuration + cache: + pvcTemplate: + storageClassName: standard + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi # Only cache needed, no data storage + + # Age-encrypted encryption key file + encryptionKeyFile: + fileReference: + volume: + secret: + secretName: dr-server-encryption-key + path: encryption-key.age + # Age identity file for decryption + identityFile: + fileReference: + volume: + secret: + secretName: dr-server-age-identity + path: identity.txt + + # S3 access configuration + # See Object Store section for authentication options + s3: + bucketName: klio-backups + region: us-east-1 + accessKeyId: + name: s3-credentials + key: ACCESS_KEY_ID + secretAccessKey: + name: s3-credentials + key: SECRET_ACCESS_KEY +``` + + +Apply the read-only server: + +```bash +kubectl apply -f dr-server.yaml +``` + +### Using a Read-Only Server for Recovery + +Once deployed, PostgreSQL clusters can use the read-only server as a restore +source through a PluginConfiguration. The server will fetch backups and WAL +files from Tier 2 object storage transparently. + +See the Read-Only Server Mode section in the +[Architectures](architectures.md) documentation for detailed use cases and +architectural patterns. + +### Restrictions + +In read-only mode, the following operations are **not available**: + +- Creating new backups +- Sending WAL files to the server +- Applying retention policies +- Any write operations + +## Advanced Configuration + +The `.spec.template` field allows you to customize the Klio server's pod +template. You can add additional containers, volumes, or modify existing +settings. + +:::warning Advanced Users Only +The `.spec.template` field is primarily designed for advanced configurations. +While powerful, improper modifications can affect server functionality. +Always test changes in a non-production environment first. +::: + +:::note +The `containers` field within `.spec.template.spec` is mandatory but will be +merged with the default Klio `server` container. If you do not need to add +containers or modify the default one, you must still include an empty list. +::: + +### Node Affinity and Tolerations + +To dedicate specific nodes for Klio workloads (e.g., for performance isolation +or to separate backup workloads from application workloads), you can use the +`template` field to define affinity and toleration rules. + +```yaml +spec: + template: + spec: + # Mandatory field; merged with default containers + containers: [] + tolerations: + # Allow scheduling on nodes tainted for Klio + - key: node-role.kubernetes.io/klio + operator: Exists + effect: NoSchedule + affinity: + # Require nodes labeled for Klio + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: node-role.kubernetes.io/klio + operator: Exists +``` + +See [Reserving Nodes for Klio Workloads](architectures.md#reserving-nodes-for-klio-workloads) +for details on node tainting. + +### Monitoring + +Refer to the [OpenTelemetry](./opentelemetry.md#klio-server-with-opentelemetry) +documentation for setting up monitoring and telemetry for the Klio server. + +## Object Store + +Klio uses object storage for Tier 2, providing durable, cost-effective +long-term backup storage. Currently, Klio supports Amazon S3 and S3-compatible +storage providers. + +### S3 + +Tier 2 is configured using the `tier2.s3` field in the Server spec. The +configuration is the same for both AWS S3 and S3-compatible providers. + +#### Basic Configuration with Credentials + +```yaml +tier2: + s3: + bucketName: klio-backups + region: us-east-1 + accessKeyId: + name: s3-credentials + key: ACCESS_KEY_ID + secretAccessKey: + name: s3-credentials + key: SECRET_ACCESS_KEY +``` + +#### S3-Compatible Storage with Custom Endpoint + +For S3-compatible providers, add the `endpoint` field: + +```yaml +tier2: + s3: + bucketName: klio-backups + endpoint: https://: + region: us-east-1 # May be required depending on provider + accessKeyId: + name: s3-credentials + key: ACCESS_KEY_ID + secretAccessKey: + name: s3-credentials + key: SECRET_ACCESS_KEY +``` + +#### Custom CA Certificates + +For providers using self-signed certificates or custom CAs: + +```yaml +tier2: + s3: + bucketName: klio-backups + endpoint: https://: + customCaBundle: + name: minio-ca-cert + key: ca.crt + accessKeyId: + name: s3-credentials + key: ACCESS_KEY_ID + secretAccessKey: + name: s3-credentials + key: SECRET_ACCESS_KEY +``` + +#### AWS IAM Roles (IRSA/Pod Identity) + +For AWS EKS clusters, using +[IAM Roles for Service Accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) +or [EKS Pod Identity](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html) +is the recommended approach. This provides better security through automatic +credential rotation, reduced secret sprawl, and fine-grained IAM policies. + +To use IAM role-based authentication: + +1. Create an IAM role with appropriate S3 permissions +1. Create a Kubernetes ServiceAccount with the IAM role annotation (for IRSA) + or Pod Identity association (for Pod Identity) +1. Reference the ServiceAccount in the Server spec and omit credentials: + +```yaml +spec: + tier2: + s3: + bucketName: klio-backups + region: us-east-1 + # No accessKeyId or secretAccessKey - use IAM role + + template: + spec: + serviceAccountName: klio-s3-access + containers: [] # Mandatory but merged with defaults +``` + +The AWS SDK will automatically use the pod's IAM role credentials when +`accessKeyId` and `secretAccessKey` are omitted. + +## Encryption + +Klio implements encryption at rest for both base backups and WAL files to +ensure data security throughout the backup lifecycle. + +### Base Backups Encryption + +Base backups are encrypted by Kopia using the encryption key +decrypted from the Age-encrypted key file. Kopia handles +encryption transparently. + +The encryption key is set during repository initialization and is required +for all subsequent backup and restore operations. + +:::warning Critical +Store the encryption key securely. Loss of this key means permanent +loss of access to all backup data. There is no key recovery mechanism. +::: + +### WAL Files Encryption + +WAL files are encrypted using a master key derivation system with authenticated +encryption. The encryption process works as follows: + +1. **Master Key Generation**: A 32-byte master key is derived from the encryption + key using PBKDF2 +1. **Key Enveloping**: The master key itself is encrypted using AES-256-GCM + with a password-derived encryption key to protect the key at rest +1. **Per-File Encryption**: Each WAL file is compressed and then encrypted using + the master key with authenticated encryption before being stored + +WAL files are first compressed using Snappy S2 compression, +then encrypted to ensure both space efficiency and security. + +The same encryption key used for base backups encrypts the WAL files, +ensuring a unified security model across all backup artifacts. + +### Encryption Credential Rotation + +The underlying encryption key (used by Kopia and the WAL keychain) +cannot be changed once set. However, you can rotate the Age identity +without touching the encryption key or the repository: + +1. Generate a new Age key pair +1. Re-encrypt the encryption key file with the new public key +1. Deploy the new identity file and re-encrypted key file + +This rotation only changes how the encryption key is protected, +not the key itself. See [Rotating Age Credentials](#rotating-age-credentials) +for step-by-step instructions. + +:::tip +Choose a strong encryption key from the start. Use a password +manager or key management system to generate and store a +cryptographically secure key (recommended: 32+ random characters). +::: + +### Encryption in Transit + +In addition to encryption at rest, Klio protects both base backups and WAL files +during transmission using TLS (Transport Layer Security). + +All communication between a Klio client and the Klio server is secured +with TLS: + +- **Base Backup Traffic**: Kopia client connections to the base backup server + are encrypted using TLS, protecting backup data as it transfers to the Klio + server +- **WAL Streaming**: PostgreSQL instances streaming WAL files to the Klio server + use gRPC over TLS, ensuring WAL data is encrypted during transmission + +The TLS certificate is configured via the `.spec.tlsSecretName` field in the +Server resource, which references a Kubernetes secret containing the TLS +certificate and private key. This provides end-to-end encryption, ensuring that +backup data is protected both at rest and in transit. + +### Age Encryption + +[Age](https://github.com/FiloSottile/age) is a modern file +encryption tool that Klio supports for protecting the encryption +key. Instead of storing the plaintext encryption key in a +Kubernetes Secret, you encrypt it with an Age public key and +provide the corresponding Age identity (private key) to Klio. + +This enables: + +- **Credential rotation** without touching the Kopia repository + or WAL data. +- **Multiple recipients** for disaster recovery or team access. +- **Offline operations** — re-encryption can be done with the + standard `age` CLI. + +#### Setup + +1. Generate an Age key pair: + +```bash +age-keygen -o identity.txt +# Public key: age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p +``` + +2. Generate a random encryption key and encrypt it: + +```bash +openssl rand -hex 32 | age \ + -r age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p \ + -o encryption-key.age +``` + +3. Create Kubernetes Secrets for both files: + +```bash +kubectl create secret generic klio-encryption-key-age \ + --from-file=encryption-key.age +kubectl create secret generic klio-age-identity \ + --from-file=identity.txt +``` + +4. Reference them in the Server spec: + +```yaml +tier1: + encryptionKeyFile: + fileReference: + volume: + secret: + secretName: klio-encryption-key-age + path: encryption-key.age + identityFile: + fileReference: + volume: + secret: + secretName: klio-age-identity + path: identity.txt +``` + +The same configuration applies to `tier2`. + +:::note +Only standard Age identities (X25519 keys) are supported. +Age plugins (e.g., `age-plugin-yubikey`) are not supported +directly, but you can encrypt the key file to both a +plugin-based recipient and a standard X25519 recipient. +::: + +#### Using External Secret Managers + +The `encryptionKeyFile` and `identityFile` fields accept any +Kubernetes `VolumeSource`, not just Secrets. This enables +integration with external secret management systems: + +```yaml +tier1: + encryptionKeyFile: + fileReference: + volume: + csi: + driver: secrets-store.csi.k8s.io + readOnly: true + volumeAttributes: + secretProviderClass: klio-aws-secrets + path: encryption-key.age +``` + +#### Rotating Age Credentials + +To rotate the Age identity without touching the encryption key +or the repository: + +1. Generate a new Age key pair: + +```bash +age-keygen -o new-identity.txt +``` + +2. Re-encrypt the key file with the new public key: + +```bash +age -d -i identity.txt encryption-key.age | \ + age -r -o encryption-key-new.age +``` + +3. Update the Kubernetes Secrets: + +```bash +kubectl create secret generic klio-encryption-key-age \ + --from-file=encryption-key.age=encryption-key-new.age \ + --dry-run=client -o yaml | kubectl apply -f - +kubectl create secret generic klio-age-identity \ + --from-file=identity.txt=new-identity.txt \ + --dry-run=client -o yaml | kubectl apply -f - +``` + +4. Restart the Klio server pod to pick up the new files. + +5. Securely delete the old identity and plaintext files. + +## Authentication + +Klio uses mTLS Authentication for securing access to both the base backup server +and the WAL streaming server. Authentication is handled by verifying the client +certificates against the CA certificate which has been created when configuring +the Klio server. + +### Creating a client-side certificate + +To create a client-side certificate, you need a issuer that will sign all the +certificates with a CA known by the Klio server. Supposing that such a issuer is +called `server-sample-ca` and available in the current namespace, you can create +a client certificate with the following Certificate object: + +```yaml +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: client-sample-tls +spec: + secretName: client-sample-tls + commonName: klio@cluster-1 + + duration: 2160h # 90d + renewBefore: 360h # 15d + + isCA: false + usages: + - client auth + + issuerRef: + name: server-sample-ca + kind: Issuer + group: cert-manager.io +``` + +If used the example proposed in the [server configuration documentation +page](#2-create-ca-certificate), the issuer can be created with: + +```yaml +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: server-sample-ca +spec: + ca: + secretName: server-sample-ca +``` diff --git a/documentation/web/versioned_docs/version-0.0.18/user/main_concepts.md b/documentation/web/versioned_docs/version-0.0.18/user/main_concepts.md new file mode 100644 index 00000000..e762771b --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/main_concepts.md @@ -0,0 +1,131 @@ +--- +sidebar_position: 2 +--- + +# Main Concepts + +Klio is built on top of two foundational technologies: + +* PostgreSQL's native physical backup infrastructure +* The CloudNativePG Interface (CNPG-I) for backup and recovery + +PostgreSQL has provided **native continuous backup and point-in-time recovery +(PITR) capabilities since version 8.0, released in 2005**, enabling reliable +disaster recovery and business continuity for mission-critical systems +worldwide. + +:::info + +PostgreSQL offers logical backups using tools like `pg_dump`, which generate a +logical representation of the database as SQL statements or data files. Logical +backups do not provide continuous protection or point-in-time recovery +capabilities. As a result, they are not suitable for **business continuity +scenarios** in mission-critical environments where minimizing downtime and data +loss is essential. + +::: + +At its core, [PostgreSQL’s continuous backup and recovery](https://www.postgresql.org/docs/current/continuous-archiving.html) +system uses **physical (file system level) copies** combined with **write-ahead +log (WAL) archiving**. +This approach enables consistent, recoverable backups while keeping systems +online, a strategy proven effective in production environments for over two +decades. + +In a PostgreSQL backup solution, the infrastructure typically consists of: + +- **WAL Archive**: A designated location for continuously archived WAL + (write-ahead log) files, preserving all changes made to the database to + support data durability and recovery. +- **Physical Base Backups**: A consistent copy of all data files used by + PostgreSQL (primarily the `PGDATA` directory and any tablespaces), forming + the foundational layer for any recovery operation. + +The diagram below illustrates the relationship between physical base backups +and the WAL archive over time: + +![Physical backups, WAL archive, and time](images/basebackups_walarchive.png) + + +--- + +## WAL Archive + +The WAL archive is central to **continuous backup** in PostgreSQL and is +essential for: + +- **Hot (Online) Backups**: Allowing physical base backups to be taken from any + node (primary or standby) without shutting down PostgreSQL, ensuring backups + can proceed without service disruption. +- **Point-in-Time Recovery (PITR)**: Enabling recovery to any precise moment + after the earliest available base backup, using archived WAL files to replay + transactions up to the desired recovery point. + +:::warning + +WAL archives on their own are insufficient for disaster recovery. +A **physical base backup is required** to restore a PostgreSQL cluster. + +::: + +Using a WAL archive significantly enhances the resilience of a PostgreSQL +system. WAL files can be fetched by any PostgreSQL instance for replication or +recovery, with archives typically retaining WAL segments longer than local +retention policies, ensuring historical data is preserved for PITR and disaster +recovery workflows. + +Klio receives WAL content from a PostgreSQL primary via streaming replication. + +--- + +## Physical base backups + +PostgreSQL supports **physical base backups** as the cornerstone of its +disaster recovery and PITR strategies. A base backup is a **consistent, file +system-level copy** of all data files used by a PostgreSQL cluster, including +the `PGDATA` directory and any additional tablespaces. + +Key properties of PostgreSQL base backups: + +- **Online (Hot) Backups**: Base backups can be taken while the database is + online, avoiding downtime. PostgreSQL maintains consistency during an online + backup by coordinating with its write-ahead logging system, ensuring a valid + restore point. +- **Foundation for PITR**: A base backup provides the starting point for + point-in-time recovery. After restoring the base backup, archived WAL files + are replayed to advance the system to a specific recovery target, allowing + precise restoration following accidental data loss or corruption. +- **Efficient Storage and Transport**: Base backups can be compressed and + streamed to external or object storage, supporting offsite and cloud-based + disaster recovery workflows. + +Klio leverages CNPG-I to coordinate the hot backup procedure, using +PostgreSQL’s `pg_backup_start` and `pg_backup_stop` concurrent API to ensure +consistency. It uses [Kopia](https://github.com/kopia/kopia/) to efficiently +transfer backup data across locations, ensuring backups are portable, +secure, and space-efficient. + +--- + +## Recovery + +In PostgreSQL, **recovery** is the process of restoring a database cluster from +a **physical base backup**, bringing it to a consistent state by replaying +**write-ahead log (WAL)** files, which contain the necessary *redo* information +for all changes made after the backup. + +PostgreSQL’s recovery system supports [Point-in-Time Recovery (PITR)](https://www.postgresql.org/docs/current/continuous-archiving.html#BACKUP-PITR-RECOVERY), +enabling you to restore a cluster to **any precise moment** between your +earliest base backup and the latest available WAL segment. To perform recovery, +a **valid WAL archive is required alongside the physical base backup**. + +Klio follows the approach of CloudNativePG and implements the recovery part of +CNPG-I. It **does not perform in-place recovery on an existing cluster**; +instead, recovery is used to **bootstrap a new cluster** from a base backup and +replay WAL files to reach a desired state. + +Recovery can operate in two primary modes: full recovery (replaying WAL files +to the latest available segment) or **Point-in-Time Recovery (PITR)**, allowing +restoration to a chosen state before an incident such as accidental data +deletion. Klio supports all PITR targets provided by CloudNativePG, including +time, restore point, and transaction. diff --git a/documentation/web/versioned_docs/version-0.0.18/user/managing_storage.md b/documentation/web/versioned_docs/version-0.0.18/user/managing_storage.md new file mode 100644 index 00000000..2fd5f971 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/managing_storage.md @@ -0,0 +1,291 @@ +--- +sidebar_position: 8 +--- + +# Managing Storage + +This guide explains how to manage storage on your Klio server, prevent +disk full scenarios, and recover when storage is exhausted. + +The Klio server uses persistent storage for backup data, WAL archives, cache, +and the work queue. When the data PVC approaches capacity, backup and WAL +archival operations may fail. + +## How Disk Space Is Freed + +Deleting a backup does **not** immediately free disk space. Klio is built +on top of [Kopia](https://kopia.io), which uses a two-phase approach: + +1. **Deletion** logically deletes backups +1. **Maintenance** actually removes deleted data, if the data is older + than 24 hours and unused by any existing backup + +This design prevents accidental data loss from concurrent operations. +However, it means that space is not freed until maintenance runs and the +24-hour safety window has passed. + +Maintenance runs automatically in the background. Klio does not currently +provide a way to trigger it on demand, but it can be started manually +by opening a shell on the Klio server pod and running: + +```bash +kopia maintenance set --owner=me \ + --config-file=/tmp/$KOPIACONFIG_TIER1_CONF \ + --disable-file-logging +kopia maintenance run \ + --config-file=/tmp/$KOPIACONFIG_TIER1_CONF \ + --full \ + --disable-file-logging +``` + +## When the Disk Is Full + +When the Klio data PVC is completely full: + +- All backup operations block (new backups, deletions, maintenance) +- WAL streaming to Klio stops +- PostgreSQL accumulates WAL files on its own PVC +- No backup corruption occurs, even when backups fail mid-operation +- No orphan or incomplete snapshots are left behind +- Existing backups remain intact and restorable + +All operations resume automatically when space is freed. + +:::warning +While the Klio disk is full, WAL files build up on the PostgreSQL PVC. +If this condition persists, it can lead to disk pressure on the database +side as well. Resolve Klio storage issues promptly to avoid cascading +failures. +::: + +## Resolving Storage Issues + +### Expand the PVC + +The simplest option is to expand the PVC. The Klio operator supports +expansion of PersistentVolumeClaims (PVCs) for all storage components: +data, cache (Tier 1 and Tier 2), and queue. + +#### Prerequisites + +PVC expansion requires a StorageClass with `allowVolumeExpansion: true`. + +:::warning User Responsibility +Before attempting to resize PVCs, **you must verify** that your +StorageClass supports volume expansion. The operator will attempt the +resize operation directly—if the StorageClass does not support +expansion, the Kubernetes API will reject the request and the operator +will log an error. +::: + +To check if your StorageClass supports expansion: + +```bash +kubectl get storageclass -o jsonpath='{.allowVolumeExpansion}' +``` + +If the output is not `true`, you need to either: +1. Update the StorageClass to enable volume expansion (if the underlying + storage provisioner supports it) +1. Use a different StorageClass that supports volume expansion +1. Migrate to a new PVC (see [Limitations](#limitations) for options) + +#### Expanding PVC Size + +To expand a PVC, update the corresponding +`pvcTemplate.resources.requests.storage` field in the Server spec with +a larger value: + +```yaml +apiVersion: klio.cnpg.io/v1alpha1 +kind: Server +metadata: + name: my-server +spec: + tier1: + data: + pvcTemplate: + resources: + requests: + storage: 200Gi # Increased from 100Gi + cache: + pvcTemplate: + resources: + requests: + storage: 20Gi # Increased from 10Gi + queue: + pvcTemplate: + resources: + requests: + storage: 20Gi # Increased from 10Gi +``` + +Apply the updated Server resource: + +```bash +kubectl apply -f klio-server.yaml +``` + +#### What Happens During Resize + +When you update the Server spec with larger PVC sizes, the following +occurs: + +1. **PVC expansion**: The operator patches PVCs directly to the new + size. This modifies the PVC resources but does **not** update the + StatefulSet—the StatefulSet's VolumeClaimTemplates remain unchanged + at this point. +1. **Temporary misalignment**: After the PVC patch, there is a brief + period where the PVCs have the new size but the StatefulSet + VolumeClaimTemplates still reflect the old size. +1. **StatefulSet recreation**: The operator detects that the expected + StatefulSet (with new VolumeClaimTemplates) differs from the current + one. Since VolumeClaimTemplates are immutable in Kubernetes, the + StatefulSet is deleted and recreated to align with the new spec. +1. **Pod restart**: The Klio server pod restarts and mounts the + already-expanded PVCs. + +:::note Why explicit PVC patching is necessary +VolumeClaimTemplates only define specs for *new* PVCs—they do not resize +existing ones. Without explicit PVC patching by the operator, the +StatefulSet would be recreated but the PVCs would remain at their +original size, creating a permanent mismatch between the Server spec +and actual storage. +::: + +#### StatefulSet and PVC Alignment + +After the full resize operation completes: + +- The **PVCs** have the new expanded size +- The **StatefulSet VolumeClaimTemplates** match the new size (after + recreation) +- The **Server spec** is consistent with both + +This ensures no drift between the desired state and actual resources. + +#### Monitoring Resize Progress + +The operator emits a `PVCExpanded` Kubernetes event on the Server +resource when a PVC is successfully expanded. You can view these events +with: + +```bash +kubectl describe server my-server +``` + +Check the PVC status to monitor the resize operation: + +```bash +kubectl get pvc -l klio.cnpg.io/klio-server=my-server +``` + +The PVC will show the new requested size in +`spec.resources.requests.storage`. The actual capacity is reflected in +`status.capacity.storage` once the resize completes. + +For detailed status, including any resize conditions: + +```bash +kubectl describe pvc data-my-server-klio-0 +``` + +#### Limitations + +- **Expansion only**: PVC shrinking is not supported by Kubernetes. + Attempting to reduce the storage size will be ignored and logged as + a warning. +- **StorageClass support**: The StorageClass must have + `allowVolumeExpansion: true`. If the StorageClass does not support + expansion, the resize will fail and an error will be logged. +- **Pod restart required**: Due to StatefulSet VolumeClaimTemplates + being immutable, PVC expansion causes a brief pod restart. +- **Filesystem resize**: After the volume is expanded, the filesystem + must also be resized. Most modern storage providers handle this + automatically. + +:::warning No Automatic Fallback +If your StorageClass does not support volume expansion, there is **no +automatic fallback**. The operator will not delete and recreate PVCs to +achieve a larger size, as this would result in **permanent data loss**. +The only options in this case are: + +1. Migrate to a StorageClass that supports volume expansion +1. Create a new Klio server with larger PVCs and restore from backup +1. Manually migrate data (requires downtime and careful planning) + +::: + +### Delete Backups and Run Maintenance + +:::warning +Maintenance requires some free disk space to run. If the disk is +completely full, maintenance itself may fail. In that case, expand +the PVC first. +::: + +If PVC expansion is not available, free space by deleting old backups +and running maintenance manually. + +1. **Delete old backups:** + + ```bash + kubectl exec -it my-server-klio-0 -- \ + klio admin delete-backup \ + --cluster my-cluster --tier1 + ``` + + To delete from both tiers, add `--tier2`. + + :::note + The actual space freed depends on how much data is shared with + other backups through deduplication. Deleting a backup only + reclaims space for data blocks that are not referenced by any + remaining backup. + ::: + + :::warning + Deleting a backup removes the ability to restore to that point + in time. Ensure you have adequate backups remaining before + deletion. + ::: + +1. **Run maintenance** to reclaim space from deleted backups by opening + a shell on the Klio server pod and running: + + ```bash + kopia maintenance set --owner=me \ + --config-file=/tmp/$KOPIACONFIG_TIER1_CONF \ + --disable-file-logging + kopia maintenance run \ + --config-file=/tmp/$KOPIACONFIG_TIER1_CONF \ + --full \ + --disable-file-logging + ``` + +## Best Practices + +1. **Configure retention policies**: The most effective way to control + storage growth is through properly configured retention policies, which + automatically delete old backups and WAL files no longer needed for + recovery. See + [Retention Policies](plugin_configuration.md#retention-policies) for + configuration details. + +1. **Monitor storage usage**: Klio does not provide built-in storage + alerts. Set up monitoring and alerting on your PVC usage to detect + capacity issues before they cause failures. + +1. **Size Tier 1 storage appropriately**: Account for your backup + frequency, database size, change rate, and retention requirements when + provisioning the data PVC. Include buffer for the 24-hour window + during which deleted backup data is not yet eligible for garbage + collection. + +1. **Use Tier 2 for long-term retention**: Object storage (S3, etc.) is + more cost-effective and scales easily for long-term backup retention. + Keep Tier 1 lean for fast recovery of recent backups. + +1. **Use expandable StorageClasses**: When possible, use StorageClasses + with `allowVolumeExpansion: true` to enable online PVC expansion as a + recovery option. \ No newline at end of file diff --git a/documentation/web/versioned_docs/version-0.0.18/user/opentelemetry.md b/documentation/web/versioned_docs/version-0.0.18/user/opentelemetry.md new file mode 100644 index 00000000..5270968e --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/opentelemetry.md @@ -0,0 +1,746 @@ +--- +sidebar_position: 8 +--- + +# OpenTelemetry Observability + +Klio provides built-in support for [OpenTelemetry](https://opentelemetry.io/), +enabling comprehensive observability through distributed tracing and metrics +collection. This allows you to monitor backup operations, performance +characteristics, and system health across your Klio deployment. + +## Available Telemetry + +Klio automatically collects the following: + +- Traces + - Distributed WAL streaming and processing + - Backup lifecycle (backup, backup run, verification, maintenance) +- Metrics + - Server + - Server uptime + - Backup metrics + - Number of snapshots + - Number of files in the latest snapshot + - Number of directories in the latest snapshot + - Size of the latest snapshot + - Timestamp of the latest snapshot + - Timestamp of the oldest snapshot + - Number of retained PostgreSQL backups (per cluster and tier) + - Start/end time, timeline and LSN of the latest and oldest + retained PostgreSQL backup (per cluster and tier) + - Total number of backup verifications (split by outcome and tier) + - WAL processing metrics + - Number of WAL files written + - Bytes written + - Timestamp of the most recently written WAL file + - LSN progress of WAL ingestion (Tier 1) and archival (Tier 2) + - Timeline of the latest WAL on Tier 1 and Tier 2 + - Per-block processing durations split by stage (histogram) + - Per-file get and Tier 2 upload durations (histogram) + - Queue metrics + - Number of messages in the queue + - Number of bytes in the queue + - [GRPC metrics](https://opentelemetry.io/docs/specs/semconv/rpc/rpc-metrics/) + - [Go runtime statistics](https://pkg.go.dev/go.opentelemetry.io/contrib/instrumentation/runtime) + - [Host metrics](https://pkg.go.dev/go.opentelemetry.io/contrib/instrumentation/host) + - [Controller runtime metrics](https://book.kubebuilder.io/reference/metrics-reference) + - Sidecar + - Backup metrics + - Number of backups currently in progress + - Timestamp of the most recent backup start + - Timestamp of the most recent successful completion + - Timestamp of the most recent failure + - Duration of the most recent backup + - Total number of backup runs (split by outcome) + - Total number of backup verifications (split by outcome) + - [GRPC metrics](https://opentelemetry.io/docs/specs/semconv/rpc/rpc-metrics/) + - [Go runtime statistics](https://pkg.go.dev/go.opentelemetry.io/contrib/instrumentation/runtime) + - [Host metrics](https://pkg.go.dev/go.opentelemetry.io/contrib/instrumentation/host) + - [Controller runtime metrics](https://book.kubebuilder.io/reference/metrics-reference) + - Client (WAL streaming) + - Per-block WAL send durations (histogram) + - Timeline currently being streamed (gauge) + +:::note +Log exporters are not currently supported. +::: + +## Traces Reference + +### Backup lifecycle spans + +When a backup is triggered through CNPG-I, Klio creates +the following spans under the `klio.plugin.backup` tracer: + +| Span Name | Description | +|---|---| +| `backup` | Root span covering the entire backup operation (run + verify) | +| `backup_run` | Child span for the actual data backup execution | +| `backup_verify` | Child span for post-backup verification | + +The `backup` span includes the following attributes: + +| Attribute | Type | Description | +|---|---|---| +| `backup.name` | string | Name assigned to the backup | + +On failure, the span records the error and sets its status to +`ERROR`. + +### WAL streaming spans + +Klio traces WAL streaming at the per-file level; the per-block stage +timings that used to be spans are now recorded as the +[WAL duration histograms](#wal-duration-histograms-server) instead. + +| Span Name | Tracer | Description | +|---|---|---| +| `download_history_file` | `klio.client.wal` | Span for downloading a timeline history file (rare). | +| `get_wal` | `klio.server.wal` | Per-file span for the gRPC Get of a WAL file (served from tier-1 or tier-2). | +| `tier2_upload` | `klio.server.consumer` | One span per WAL file archived to tier-2 (remote storage). | + +### Kopia repository spans + +Klio runs Kopia as a subprocess to manage the deduplicated backup +repository. Kopia emits its own OpenTelemetry traces (snapshot uploads, +content and blob operations, and repository-server gRPC sessions) under +the `kopia` service name. Klio enables Kopia's trace exporter +automatically whenever its own traces are configured for the OTLP/gRPC +protocol, so that Kopia exports to the same collector as Klio. + +The individual span names come from the Kopia version bundled with Klio +and are Kopia internals rather than a Klio-defined contract; they may +change across Kopia upgrades. To see what your deployment emits, inspect +your tracing backend for traces whose `service.name` is `kopia` — for +example, the `OpenRepository` and `UploadDir` spans produced while a +backup runs. + +Unlike Klio's own telemetry, Kopia does not read `OTEL_SERVICE_NAME`, +`OTEL_RESOURCE_ATTRIBUTES`, or `OTEL_RESOURCE_DETECTORS`: every Kopia span +carries a fixed resource of just `service.name` (`kopia`) and +`service.version`. + +Kopia can only export traces over OTLP/gRPC. When traces are configured +for `http/protobuf`, Kopia tracing stays disabled and only Klio's own +spans are exported. When traces are configured for `grpc`, Klio automatically +enables Kopia tracing and exports both Klio and Kopia spans to the same +collector. You can override this automatic behavior with the +`KOPIA_ENABLE_OTLP_TRACE` variable in the same container environment: +set it to `false` to disable Kopia tracing even when Klio's own traces +use gRPC, or to `true` to force it on (Kopia still exports only over +gRPC, so the configured endpoint must be a gRPC one). + +Kopia traces are exported as independent traces, under the +`kopia` service, and are not correlated into Klio's trace tree. + +## Metrics Reference + +Klio metric names follow the +`klio...` taxonomy. The component +segment identifies which process emits the metric: + +- `plugin` — the CNPG plugin sidecar running in each PostgreSQL pod. +- `server` — the Klio server StatefulSet (hosts the Kopia server, the + WAL gRPC ingest, the embedded NATS JetStream queue, and the tier-2 + WAL consumer). +- `operator` — the Klio operator deployment. Bridges + controller-runtime Prometheus metrics to OTLP and adds Go + runtime and host instrumentation. +- `client` — the WAL streaming client that ships WAL from + PostgreSQL to the Klio server. Emits the per-block WAL send + duration histogram and the currently streamed timeline gauge. + +### Attributes + +Klio metrics carry the following attributes. Each per-metric table +below repeats the applicable attributes in its descriptions; this +section is the central reference for the value space of each +attribute key. + +| Attribute | Values | Applies to | +|---|---|---| +| `tier` | `tier1` (local disk on the Klio server), `tier2` (remote object store) | All `klio.server.wal.*` and `klio.server.backup.*` instruments. | +| `cluster_name` | Name of the PostgreSQL cluster the recording belongs to | All `klio.server.wal.*` instruments (counters, gauges, and the WAL duration histograms), `klio.client.wal.*`, the `klio.server.backup.*` PostgreSQL backup gauges (`backups`, `latest_backup_*`, `oldest_backup_*`) and the `klio.server.backup.relay` / `klio.server.backup.maintenance` counters. | +| `outcome` | `success`, `failure` | `klio.plugin.backup.runs`, `klio.server.backup.relay`, `klio.server.backup.maintenance`, `klio.server.backup.verifications`, and all WAL duration histograms (`klio.server.wal.*_duration`, `klio.client.wal.block_duration`). | +| `failure_category` | `repository_error`, `source_error`, `verification`, `timeout`, `canceled`, `unknown` | `klio.plugin.backup.runs` failure data points only. | +| `path` | `put` (WAL ingest), `get` (WAL serve) | `klio.server.wal.block_duration`, `klio.client.wal.block_duration`. | +| `stage` | put: `wrap`, `write`, `flush`, `send` (client); get: `read`, `unwrap`, `send` | `klio.server.wal.block_duration`, `klio.client.wal.block_duration`. | +| `snapshot_source` | Kopia source descriptor (`userName@hostName:path`) | All `klio.server.backup.*` base snapshot gauges (`snapshots`, `latest_snapshot_*`, `oldest_snapshot_timestamp`). | +| `stream` | JetStream stream name (`klio-wal-stream`, `klio-backup-stream`, `klio-latest-uploaded-wal-per-cluster-stream`) | `klio.server.queue.messages`, `klio.server.queue.bytes`. | + +### Backup lifecycle metrics (plugin sidecar) + +These metrics are emitted by the plugin sidecar and track backup +operations on each PostgreSQL instance: + +| Metric Name | Type | Unit | Description | +|---|---|---|---| +| `klio.plugin.backup.in_progress` | UpDownCounter | `{backups}` | Number of backups currently in progress | +| `klio.plugin.backup.latest_start_time` | Gauge | s | Unix epoch timestamp when the most recent backup started | +| `klio.plugin.backup.latest_completion_time` | Gauge | s | Unix epoch timestamp when the most recent backup completed successfully | +| `klio.plugin.backup.latest_failure_time` | Gauge | s | Unix epoch timestamp when the most recent backup failed | +| `klio.plugin.backup.latest_duration` | Gauge | s | Duration of the most recent backup | +| `klio.plugin.backup.duration` | Histogram | s | Distribution of backup durations, split by the `outcome` attribute (`success` / `failure`) | +| `klio.plugin.backup.runs` | Counter | `{backups}` | Total number of backup runs, split by the `outcome` attribute (`success` / `failure`). Failure data points additionally carry a `failure_category` attribute classifying the failure. Backup verification is part of a run: a verification failure is recorded here with `failure_category="verification"`, and a clean verification is included in the `outcome="success"` count | + +The `failure_category` attribute on `klio.plugin.backup.runs` failure +data points takes one of the following values: + +- `repository_error` — the backup failed while interacting with the + Klio server or the Kopia repository. +- `source_error` — the backup failed while connecting to or interacting + with the source PostgreSQL instance. +- `verification` — tier-1 verification detected corruption in the + freshly taken backup. +- `timeout` — the backup exceeded its deadline. +- `canceled` — the backup's context was canceled before a more specific + category could be determined. This covers cluster restart, + hibernation, pod eviction, and client disconnect; the metric does not + distinguish between them. +- `unknown` — the failure did not match any of the categories above. + +:::note +These metrics are tied to the plugin sidecar lifecycle: when the +sidecar restarts (for example, after a pod reschedule or PostgreSQL +instance failover) the counters reset to zero and the gauges are +re-initialized on the next backup. As a result, +`klio.plugin.backup.runs` reports totals since the last sidecar start +rather than over the life of the cluster, and may diverge from the +count of `Backup` resources. +::: + +### WAL ingest metrics (server) + +The WAL ingest series is unified across tiers: WAL bytes and files +written to local disk by the WAL gRPC server (tier 1) and uploaded +to remote storage by the consumer (tier 2) share a single instrument +family and are distinguished by the `tier` attribute (`"tier1"` or +`"tier2"`). + +| Metric Name | Type | Unit | Description | +|---|---|---|---| +| `klio.server.wal.written_size` | Counter | By | Number of bytes written for WAL files (per tier) | +| `klio.server.wal.written` | Counter | - | Number of WAL files written (per tier) | +| `klio.server.wal.latest_written_time` | Gauge | s | Unix epoch timestamp of the most recently written WAL file (per tier) | +| `klio.server.wal.latest_written_lsn` | Gauge | By | LSN of the most recently written WAL byte. On tier 1 this is the flush pointer (matches `pg_current_wal_flush_lsn()` semantics); on tier 2 this is the last byte of the most recently archived WAL segment | +| `klio.server.wal.latest_written_timeline` | Gauge | - | Timeline ID of the most recently completed WAL file (per tier) | + +Every recording carries a `cluster_name` attribute identifying the +PostgreSQL cluster, alongside the `tier` discriminator. + +### Post-backup processing metrics (server) + +The tier-1 backup itself is taken and counted client-side +(`klio.plugin.backup.runs`). Afterwards the server does two kinds of work for +the completed backup: optionally **relays** it to tier-2 (migration + +verification), and runs **maintenance** (base-snapshot retention + WAL +cleanup) on each tier. The relay is counted by `klio.server.backup.relay`; +maintenance is counted by `klio.server.backup.maintenance`, discriminated by a +`tier` attribute (`tier1` / `tier2`). + +Both carry `cluster_name` and `outcome` and are recorded once per attempt, so +a backup whose relay or maintenance is retried produces multiple data points +before it succeeds or is dead-lettered. + +| Metric Name | Type | Unit | Description | +|---|---|---|---| +| `klio.server.backup.relay` | Counter | `{relays}` | Number of tier-2 relay attempts after a backup (migration to tier-2 and verification), split by `cluster_name` and `outcome` (`success` / `failure`). | +| `klio.server.backup.maintenance` | Counter | `{runs}` | Number of maintenance runs after a backup (base-snapshot retention and WAL cleanup), split by `cluster_name`, `tier` (`tier1` / `tier2`) and `outcome` (`success` / `failure`) | + +### WAL duration histograms (server) + +The server records WAL processing latencies as OpenTelemetry +histograms. They replace the per-block spans Klio previously emitted +for each WAL stage, which were impractical for distributions: the +histograms can be aggregated across clusters and rendered as +percentile dashboards (`p50`, `p95`, `p99`) over time. Per-block +stages are recorded once per WAL block; the per-file instruments are +recorded once per WAL file. + +| Metric Name | Type | Unit | Description | +|---|---|---|---| +| `klio.server.wal.block_duration` | Histogram | ns | Per-block processing duration, split by the `path` (`put` ingest / `get` serve), `stage`, and `outcome` attributes. Put stages: `wrap`, `write`, `flush`; get stages: `read`, `unwrap`, `send`. Per-block send latency lives on the `send` stage (client `block_duration` for ingest, server `path="get"` for serve). Carries `tier` (`tier1` for put; `tier1` or `tier2` for get, depending on which WAL server handled it) and `cluster_name` | +| `klio.server.wal.get_duration` | Histogram | ns | Per-file duration of the gRPC get of a complete WAL file, split by `outcome`. Carries `tier` (`tier1` or `tier2`, depending on which WAL server served it) and `cluster_name` | +| `klio.server.wal.upload_duration` | Histogram | ns | Per-file duration of the tier-2 archival upload to remote storage, split by `outcome`. Carries `tier="tier2"` and `cluster_name` | + +The bucket boundaries are explicit (rather than an exponential +aggregation) so they survive export through the Prometheus bridge, and +are an initial set expected to be refined against real distributions. + +### WAL duration histograms (client) + +The WAL streaming client records the latency of shipping each WAL +block to the Klio server. + +| Metric Name | Type | Unit | Description | +|---|---|---|---| +| `klio.client.wal.block_duration` | Histogram | ns | Per-block duration of the gRPC send of a WAL block to the server. Carries `path="put"`, `stage="send"`, `cluster_name`, split by `outcome` | + +### WAL streaming state (client) + +The WAL streaming client also exposes the timeline it is currently +streaming. It is set when replication starts and updated on each +timeline switch (failover), giving a client-side, lag-free counterpart +to the server-side `klio.server.wal.latest_written_timeline` gauge +(which only advances once new-timeline WAL is written). + +| Metric Name | Type | Unit | Description | +|---|---|---|---| +| `klio.client.wal.timeline` | Gauge | - | Timeline ID the WAL streaming client is currently streaming. Carries `cluster_name` | + +### Backup verification metrics (server) + +As part of processing each backup the server verifies it. Verification +happens at two points: once against the tier-1 local copy, and again +against the tier-2 remote copy after migration. The `tier` attribute +(`"tier1"` or `"tier2"`) identifies which check the recording refers to. + +| Metric Name | Type | Unit | Description | +|---|---|---|---| +| `klio.server.backup.verifications` | Counter | `{verifications}` | Number of backup verifications, split by the `outcome` attribute (`success` / `failure`; `failure` indicates corruption detected) and the `tier` attribute | + +### Alerting on stalled WAL processing + +The same `klio.server.wal.latest_written_time` instrument is emitted +from two stages of the WAL pipeline, distinguished by the `tier` +attribute. A stale value signals a different failure depending on +the tier: + +- **`tier="tier1"`** reflects when the Klio server last received a WAL + file from PostgreSQL streaming replication and persisted it to + local disk. A stale value means PostgreSQL is no longer shipping + WALs to Klio, which may indicate a replication problem, or that + writing on disk is failing. + +- **`tier="tier2"`** reflects when the consumer last uploaded a WAL file + to tier-2 object storage. A stale value means the remote backend + is no longer receiving WALs, even though PostgreSQL replication + may still be working, or that uploading the WAL to the object store + is failing. + +### Server metrics + +| Metric Name | Type | Unit | Description | +|---|---|---|---| +| `klio.server.uptime` | Gauge | s | Klio server uptime in seconds | + +The `klio.server.wal.latest_written_lsn` instrument provides a +complementary view of the same two pipeline stages, expressed as a +byte offset rather than a wall-clock timestamp: + +- **`tier="tier1"`** is updated on every flushed WAL block received by + the WAL server (tracks `pg_current_wal_flush_lsn()` semantics). + +- **`tier="tier2"`** is updated once per completed WAL file by the + consumer. Its value is the LSN of the last byte of the WAL + segment just archived. + +The companion `klio.server.wal.latest_written_timeline` gauge +exposes the timeline ID of the WAL file each tier is currently +handling. + +:::warning +While usually increasing, the LSN gauge may decrease after the +promotion of a lagging standby. +::: + +Use these gauges alongside the timestamp gauges to distinguish a +slow pipeline (timestamps advancing, LSN gap growing) from a +stalled one (timestamps and LSN both frozen). + +### Base backup metrics (server) + +These metrics are emitted by the Klio server base backup component +and track Kopia snapshot statistics: + +| Metric Name | Type | Unit | Description | +|---|---|---|---| +| `klio.server.backup.snapshots` | Gauge | - | Total number of base snapshots | +| `klio.server.backup.latest_snapshot_size` | Gauge | By | Size of latest base snapshot in bytes (ignoring compression and deduplication) | +| `klio.server.backup.latest_snapshot_files` | Gauge | - | Number of files in latest base snapshot | +| `klio.server.backup.latest_snapshot_dirs` | Gauge | - | Number of directories in latest base snapshot | +| `klio.server.backup.latest_snapshot_timestamp` | Gauge | s | Unix epoch timestamp of the latest base snapshot | +| `klio.server.backup.oldest_snapshot_timestamp` | Gauge | s | Unix epoch timestamp of the oldest base snapshot | + +Every recording carries a `tier` attribute (`tier1` for the local +disk repository, `tier2` for the remote object store) and a +`snapshot_source` attribute identifying the source descriptor +(`userName@hostName:path`) the snapshot belongs to. + +The following metrics describe the retention window of physical +PostgreSQL backups, derived from the snapshotted backup metadata. +Each recording carries a `tier` attribute and a `cluster_name` +attribute identifying the PostgreSQL cluster the backup belongs to. +The `latest_backup_*` and `oldest_backup_*` gauges describe the most +recent and oldest backup retained on that tier (a base backup cannot +span a timeline switch, so its start and end share one timeline): + +| Metric Name | Type | Unit | Description | +|---|---|---|---| +| `klio.server.backup.backups` | Gauge | - | Number of PostgreSQL backups retained | +| `klio.server.backup.latest_backup_start_time` | Gauge | s | Unix epoch timestamp when the latest retained backup started | +| `klio.server.backup.latest_backup_completion_time` | Gauge | s | Unix epoch timestamp when the latest retained backup completed | +| `klio.server.backup.latest_backup_start_lsn` | Gauge | By | Start LSN of the latest retained backup (base 10) | +| `klio.server.backup.latest_backup_end_lsn` | Gauge | By | End LSN of the latest retained backup (base 10) | +| `klio.server.backup.latest_backup_timeline` | Gauge | - | Timeline of the latest retained backup | +| `klio.server.backup.oldest_backup_start_time` | Gauge | s | Unix epoch timestamp when the oldest retained backup started | +| `klio.server.backup.oldest_backup_completion_time` | Gauge | s | Unix epoch timestamp when the oldest retained backup completed | +| `klio.server.backup.oldest_backup_start_lsn` | Gauge | By | Start LSN of the oldest retained backup (base 10) | +| `klio.server.backup.oldest_backup_end_lsn` | Gauge | By | End LSN of the oldest retained backup (base 10) | +| `klio.server.backup.oldest_backup_timeline` | Gauge | - | Timeline of the oldest retained backup | + +### Queue metrics (server) + +These metrics are emitted by the Klio server and track the state of +the embedded NATS JetStream streams used for asynchronous Tier 2 +offloading of WAL files and backups. Each sample carries a `stream` +attribute identifying the source stream — typically +`klio-wal-stream` (WAL work queue), `klio-backup-stream` (backup work +queue), and `klio-latest-uploaded-wal-per-cluster-stream` (retention +safeguard, capped to one message per cluster): + +| Metric Name | Type | Unit | Description | +|---|---|---|---| +| `klio.server.queue.messages` | Gauge | - | Number of messages currently stored in the JetStream stream identified by `stream` | +| `klio.server.queue.bytes` | Gauge | By | Number of bytes currently stored in the JetStream stream identified by `stream` | + +### Migration from the previous metric names + +Klio is in alpha and previously emitted metrics under a flat +namespace. The component-based taxonomy above replaces those names in +a single hard rename — there is no dual emission. Update dashboards +and alerts according to the following table: + +| Previous name | New name | Notes | +|---|---|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `klio.backup.*` | `klio.plugin.backup.*` | Plugin sidecar metrics. | +| `klio.backup.running` | `klio.plugin.backup.in_progress` | Renamed and switched from a 0/1 gauge to an UpDownCounter; reports the number of concurrent backups in progress. | +| `klio.backup.latest_duration_seconds` | `klio.plugin.backup.latest_duration` | The `_seconds` suffix was dropped — the unit (`s`) is conveyed via the OpenTelemetry metric metadata, per [semantic conventions guidelines](https://opentelemetry.io/docs/specs/semconv/general/metrics/#units). The Prometheus export name is unchanged (`klio_plugin_backup_latest_duration_seconds`) because the Prometheus exporter appends the unit suffix when the OpenTelemetry name lacks it. | +| `klio.backup.successes`, `klio.backup.failures` | `klio.plugin.backup.runs` | Collapsed into a single counter with an `outcome` attribute (`success` / `failure`). | +| `klio.backup.verifications` | `klio.plugin.backup.runs` | Verification is part of a backup run; a clean verification is part of the `outcome="success"` count. | +| `klio.backup.verification_failures` | `klio.plugin.backup.runs{outcome="failure",failure_category="verification"}` | Verification corruption is recorded as a run failure with `failure_category="verification"`. | +| `klio.wal.written_size` | `klio.server.wal.written_size` | Carries `tier="tier1"`. | +| `klio.wal.written` | `klio.server.wal.written` | Carries `tier="tier1"`. | +| `klio.wal.latest_written_time` | `klio.server.wal.latest_written_time` | Carries `tier="tier1"`. | +| `klio.wal.latest_written_lsn` | `klio.server.wal.latest_written_lsn` | Carries `tier="tier1"`. | +| `klio.wal.latest_written_timeline` | `klio.server.wal.latest_written_timeline` | Carries `tier="tier1"`. | +| `klio.consumer.written_size` | `klio.server.wal.written_size` | Folded into the unified WAL series with `tier="tier2"`. | +| `klio.consumer.written` | `klio.server.wal.written` | Folded into the unified WAL series with `tier="tier2"`. | +| `klio.consumer.latest_written_time` | `klio.server.wal.latest_written_time` | Folded into the unified WAL series with `tier="tier2"`. | +| `klio.consumer.latest_written_lsn` | `klio.server.wal.latest_written_lsn` | Folded into the unified WAL series with `tier="tier2"`. | +| `klio.consumer.latest_written_timeline` | `klio.server.wal.latest_written_timeline` | Folded into the unified WAL series with `tier="tier2"`. | +| `klio.consumer.backup_verification_success` | `klio.server.backup.verifications{outcome="success"}` | Moved under `server.backup` to pair with `plugin.backup`; collapsed into a single counter with an `outcome` attribute. | +| `klio.consumer.backup_verification_failure` | `klio.server.backup.verifications{outcome="failure"}` | Same as above. | +| `klio.base.uptime` | `klio.server.uptime` | Server-level metric, not tied to Kopia. | +| `klio.base.*` | `klio.server.backup.*` | Snapshot metrics, folded under `server.backup` alongside the verification counters. | +| `klio.queue.*` | `klio.server.queue.*` | NATS JetStream metrics. Values are now reported per stream via a `stream` attribute instead of a single global aggregate. | + +## Configuration + +Klio automatically detects OpenTelemetry configuration through standard +environment variables. If no OpenTelemetry environment variables are present, +Klio will use no-op providers that don't collect any telemetry data. + +Traces and metrics exporters can be configured independently through the +[`autoexport`](https://go.opentelemetry.io/contrib/exporters/autoexport) package. + +### General Settings + +The following environment variables are used to configure OpenTelemetry: + +- `OTEL_SERVICE_NAME`: (required) Name of the service, e.g., `klio-server` +- `OTEL_RESOURCE_ATTRIBUTES`: Comma-separated list of resource attributes + (e.g., `deployment.environment=production,service.namespace=klio-system`) +- `OTEL_RESOURCE_DETECTORS`: Comma-separated list of resource detectors + from the [`autodetect`](https://pkg.go.dev/go.opentelemetry.io/contrib/detectors/autodetect) + package, used to automatically populate resource attributes + +### Traces exporter + +To enable the traces exporter, set the `OTEL_TRACES_EXPORTER` environment +variable to one of the supported exporters: + +- `otlp`: OpenTelemetry Protocol (OTLP) exporter +- `console`: Console exporter (useful for debugging) +- `none`: No-op exporter (disables tracing) + +You can define the OTLP protocol using the `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` +variable, or the general `OTEL_EXPORTER_OTLP_PROTOCOL`. Supported protocols +include: + +- `http/protobuf` (default) +- `grpc` + +Additional configuration options for trace exporters can be found in the +documentation of the respective exporters: + +- [OTLP Trace gRPC Exporter](https://pkg.go.dev/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc) +- [OTLP Trace HTTP Exporter](https://pkg.go.dev/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp) + +### Metrics Exporter + +To enable the metrics exporter, set the `OTEL_METRICS_EXPORTER` environment +variable to one of the supported exporters: + +- `otlp`: OpenTelemetry Protocol (OTLP) exporter +- `prometheus`: Prometheus exporter + HTTP server +- `console`: Console exporter (useful for debugging) +- `none`: No-op exporter (disables metrics) + +You can define the OTLP protocol using the `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` +variable, or the general `OTEL_EXPORTER_OTLP_PROTOCOL`. Supported protocols +include: + +- `http/protobuf` (default) +- `grpc` + +Additional configuration options for metrics exporters can be found in the +documentation of the respective exporters: + +- [OTLP Metric gRPC Exporter](https://pkg.go.dev/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc) +- [OTLP Metric HTTP Exporter](https://pkg.go.dev/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp) + +For the Prometheus exporter, you can configure the host and port of the HTTP +server using the following environment variables: + +- `OTEL_EXPORTER_PROMETHEUS_HOST` (default: `localhost`) +- `OTEL_EXPORTER_PROMETHEUS_PORT` (default: `9464`) + +### Exporters and receivers + +The OTLP exporter pushes telemetry to any OTLP-compatible receiver. Common +options include: + +- An [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/), + which can receive OTLP data and fan it out to multiple backends + (Prometheus, Jaeger, Grafana, etc.). In Kubernetes, the + [OpenTelemetry Operator](https://opentelemetry.io/docs/platforms/kubernetes/operator/) + manages collectors via the `OpenTelemetryCollector` CRD and can expose + a stable in-cluster OTLP endpoint for Klio to target. +- Any backend with native OTLP support. + +The Prometheus exporter starts a local HTTP server that Prometheus scrapes +directly, with no intermediate collector required. + +## Configuring Klio with OpenTelemetry in Kubernetes + +When running in a Kubernetes environment, Klio will automatically define +`CONTAINER_NAME`, `POD_NAME` and `NAMESPACE_NAME` environment variables. +When any of these environment variables are set, Klio will automatically add +the corresponding resource attributes (`k8s.container.name`, `k8s.pod.name`, +`k8s.namespace.name`) to all of Klio's own telemetry (the server, the plugin +sidecars, the operator, and the WAL streaming client). Each attribute is added +independently - you don't need all three environment variables to be present. + +This applies to telemetry Klio emits itself. The Kopia subprocess exports its +own traces through a separate exporter that ignores these variables; see +[Kopia repository spans](#kopia-repository-spans) for how resource attributes +are populated on those spans. + +:::info +If you have already defined any of these attributes in +`OTEL_RESOURCE_ATTRIBUTES`, Klio will **not override** them. Only missing +attributes will be added from the environment variables. This allows you to +customize the values while still benefiting from automatic defaults for any +attributes you don't explicitly set. +::: + +### Klio server with OpenTelemetry + +When deploying a Klio `Server`, you can configure OpenTelemetry by specifying +the necessary settings in the `template` section of the `Server` spec: + +1. Set the required environment variables for OpenTelemetry configuration in + the `server` container. +1. Mount any necessary TLS certificates for secure communication with the + OpenTelemetry Collector. + +For simpler management, use a `ConfigMap` to store the OpenTelemetry configuration: + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: klio-otel-config +data: + OTEL_SERVICE_NAME: "klio-server" + OTEL_RESOURCE_DETECTORS: "telemetry.sdk,host,os.type,process.executable.name" + OTEL_TRACES_EXPORTER: "otlp" + OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: "grpc" + OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: "https://otel-collector:4317" + OTEL_EXPORTER_OTLP_TRACES_COMPRESSION: "gzip" + OTEL_EXPORTER_OTLP_TRACES_TIMEOUT: "10000" + OTEL_EXPORTER_OTLP_TRACES_INSECURE: "false" + OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE: "/otel/ca.crt" + OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE: "/otel/tls.crt" + OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY: "/otel/tls.key" + OTEL_METRICS_EXPORTER: "otlp" + OTEL_METRIC_EXPORT_INTERVAL: "60000" + OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: "grpc" + OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: "https://otel-collector:4317" + OTEL_EXPORTER_OTLP_METRICS_TIMEOUT: "60000" + OTEL_EXPORTER_OTLP_METRICS_INSECURE: "false" + OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE: "/otel/ca.crt" + OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE: "/otel/tls.crt" + OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY: "/otel/tls.key" +--- +apiVersion: klio.cnpg.io/v1alpha1 +kind: Server +metadata: + name: my-klio-server +spec: + # ... other configuration ... + template: + spec: + containers: + - name: server + envFrom: + - configMapRef: + name: klio-otel-config + volumeMounts: + - mountPath: /otel + name: otel + volumes: + - name: otel + projected: + sources: + - secret: + name: otel-collector-tls + items: + - key: ca.crt + path: ca.crt + - secret: + name: otel-client-cert + items: + - key: tls.crt + path: tls.crt + - key: tls.key + path: tls.key +``` + +### Klio plugins with OpenTelemetry + +When deploying Klio as a CNPG Cluster plugin, configure OpenTelemetry by +specifying the necessary environment variables in the `containers` section of +the `PluginConfiguration` spec. The available container names are: + +- `klio-plugin`: Main plugin sidecar for backup management +- `klio-restore`: Restore operations sidecar + +Create a `ConfigMap` for the shared OpenTelemetry configuration: + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: cluster-klio-otel-config +data: + OTEL_RESOURCE_DETECTORS: "telemetry.sdk,host,os.type,process.executable.name" + OTEL_TRACES_EXPORTER: "otlp" + OTEL_METRICS_EXPORTER: "otlp" + OTEL_EXPORTER_OTLP_PROTOCOL: "grpc" + OTEL_EXPORTER_OTLP_ENDPOINT: "https://otel-collector:4317" + OTEL_EXPORTER_OTLP_COMPRESSION: "gzip" + OTEL_EXPORTER_OTLP_TIMEOUT: "10000" + OTEL_EXPORTER_OTLP_INSECURE: "false" + OTEL_EXPORTER_OTLP_CERTIFICATE: "/projected/ca.crt" + OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE: "/projected/tls.crt" + OTEL_EXPORTER_OTLP_CLIENT_KEY: "/projected/tls.key" +``` + +Configure the `PluginConfiguration` to inject the environment variables into +each sidecar container: + +```yaml +apiVersion: klio.cnpg.io/v1alpha1 +kind: PluginConfiguration +metadata: + name: client-config-cluster-example +spec: + serverAddress: klio.default + clientSecretName: cluster-example-klio-user + serverSecretName: klio-server-tls + clusterName: cluster-example + containers: + - name: klio-plugin + env: + - name: OTEL_SERVICE_NAME + value: "klio-plugin" + envFrom: + - configMapRef: + name: cluster-klio-otel-config + - name: klio-restore + env: + - name: OTEL_SERVICE_NAME + value: "klio-restore" + envFrom: + - configMapRef: + name: cluster-klio-otel-config +``` + +Mount the OpenTelemetry certificates using the Cluster's `projectedVolumeTemplate`. +The projected volume is mounted at `/projected/` and is accessible to all +sidecar containers: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-example +spec: + instances: 3 + + projectedVolumeTemplate: + sources: + - secret: + name: otel-collector-tls + items: + - key: ca.crt + path: ca.crt + - secret: + name: otel-client-cert + items: + - key: tls.crt + path: tls.crt + - key: tls.key + path: tls.key + + plugins: + - name: klio.cnpg.io + enabled: true + parameters: + pluginConfigurationRef: client-config-cluster-example + + storage: + size: 10Gi +``` + +### Klio operator with OpenTelemetry + +The operator bridges the controller-runtime Prometheus metrics +registry to OTLP and adds Go runtime and host instrumentation. +When no `OTEL_*` environment variables are present, a no-op +meter provider is installed and the operator runs without +telemetry overhead. + +The existing Prometheus `/metrics` endpoint remains available +for pull-based scraping regardless of whether OTLP export is +enabled. + +To enable OTLP export, set `OTEL_*` variables through the Helm +chart's `controllerManager.manager.env` value: + +```yaml +controllerManager: + manager: + env: + OTEL_SERVICE_NAME: "klio-operator" + OTEL_EXPORTER_OTLP_ENDPOINT: "http://otel-collector:4318" + OTEL_EXPORTER_OTLP_PROTOCOL: "http/protobuf" # or "grpc" +``` + +The Helm chart automatically injects `POD_NAME`, +`NAMESPACE_NAME`, and `CONTAINER_NAME` via the Kubernetes +downward API, so the corresponding `k8s.*` resource attributes +are populated without additional configuration. diff --git a/documentation/web/versioned_docs/version-0.0.18/user/plugin_configuration.md b/documentation/web/versioned_docs/version-0.0.18/user/plugin_configuration.md new file mode 100644 index 00000000..0ccde4ed --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/plugin_configuration.md @@ -0,0 +1,629 @@ +--- +sidebar_position: 6 +--- + +# The Klio Plugin + +The Klio plugin for CloudNativePG allows you to leverage the backup and WAL +streaming capabilities of Klio for your PostgreSQL clusters managed by +CloudNativePG. It adds a `klio-plugin` container to each PostgreSQL instance +pod, handling both backup creation/management and WAL streaming to the Klio +server in real-time. + +During recovery, Klio also injects a `klio-restore` container into the +CloudNativePG recovery Job to restore backups from the Klio server. See +[Available sidecar containers](#available-sidecar-containers) for details. + +## Configuration + +The Klio plugin integrates with CloudNativePG through the CNPG-I (CloudNativePG +Interface) specification, enabling Klio to manage backups and WAL streaming for +your PostgreSQL clusters. To use Klio with a CloudNativePG cluster, you need to: + +1. Create a `PluginConfiguration` resource that defines how to connect to the + Klio server +1. Reference the plugin in your `Cluster` resource specification + +## Prerequisites + +Before configuring a cluster to use the Klio plugin, ensure you have: + +- A running Klio `Server` resource deployed in your namespace +- A client TLS certificate stored in a Kubernetes Secret (see + [Klio server authentication](klio_server.md#authentication)) +- The server's TLS certificate available in a Secret + +## Creating a PluginConfiguration resource + +The `PluginConfiguration` custom resource defines how the Klio plugin connects +to and communicates with the Klio server. This resource contains connection +details, authentication credentials, and optional configuration for metrics, +profiling, and backup retention policies. + +### Basic example + +Here's a minimal `PluginConfiguration` example: + +```yaml +apiVersion: klio.cnpg.io/v1alpha1 +kind: PluginConfiguration +metadata: + name: klio-plugin-config + namespace: default +spec: + serverAddress: klio-server.default + clientSecretName: client-sample-tls + serverSecretName: klio-server-tls + clusterName: my-cluster + # mode: standard # Optional: standard (default) or read-only +``` + +### Client credentials secret + +The client credentials must be stored in a Kubernetes Secret of type +`kubernetes.io/tls`, containing a secret to be presented to the Klio server. + +This secret can be generated with cert-manager by following the [documentation +in the Klio server page](klio_server.md#creating-a-client-side-certificate), +or be provided by the user. + +### Server Address + +The `serverAddress` field specifies where the Klio server can be reached. This +can be: + +- A Kubernetes service name: `klio-server.default` (within the same namespace) +- A fully qualified domain name: `klio-server.default.svc.cluster.local` +- An external address: `klio.example.com` + +Connections are made to the Klio server's two default listening ports: 51515 +for base backups and 52000 for WAL streaming. + +### TLS configuration + +The `serverSecretName` field references a Secret containing the TLS certificate +used to secure communication with the Klio server. This is the same +certificate configured on the `Server` resource. + +## Configuring a Cluster to use the Klio plugin + +Once you have created a `PluginConfiguration`, reference it in your CloudNativePG +`Cluster` resource: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: my-cluster + namespace: default +spec: + instances: 3 + + postgresql: + pg_hba: + - local replication all peer map=local # Allow replication connections locally + + plugins: + - name: klio.cnpg.io + enabled: true # Activate the Klio plugin (default) + parameters: + pluginConfigurationRef: klio-plugin-config + + storage: + size: 10Gi +``` + +To be able to stream WAL files, ensure that your PostgreSQL configuration +allows local replication connections. You can do this by adding an entry to the +`pg_hba` section, as shown in the example above. + +### Plugin parameters + +The `plugins` section in the `Cluster` specification requires: + +- **name**: Must be set to `klio.cnpg.io` to identify the Klio plugin +- **enabled**: Set to `true` to activate the plugin. This is the default value. +- **parameters.pluginConfigurationRef**: The name of your `PluginConfiguration` resource + +:::note +Even though the Klio plugin is used to archive WAL files on the Klio server, +it does not use the `archiveCommand` parameter in the PostgreSQL configuration, +as the WAL are streamed directly to the Klio server. Thus, you must not set +`isWALArchiver: true` in the plugin configuration. +::: + +:::info +If you add the Klio plugin to an **existing** cluster, you must +restart the cluster to inject the sidecar containers. Use +[`kubectl cnpg restart`][cnpg-restart] or set the +`kubectl.kubernetes.io/restartedAt` annotation on the cluster. + +[cnpg-restart]: https://cloudnative-pg.io/docs/current/kubectl-plugin/#restart +::: + +:::warning +The `PluginConfiguration` resource referenced in the `Cluster` should exist +before creating or updating the cluster. If it doesn't exist, the Klio plugin +uses the PreReconcile hook to gate reconciliation, causing the cluster to wait +at the start of the reconciliation loop (before any object creation or status +changes) until the `PluginConfiguration` is created. This avoids unrecoverable +error states, but the cluster will not progress until the dependency is +satisfied. Ensure the `PluginConfiguration` is created with the correct name. +::: + +## Applying configuration changes + +Most changes to the `PluginConfiguration` resource are applied +automatically. When you update a `PluginConfiguration`, the Klio +operator detects the change and updates the corresponding +`klio-config` Secret. The Klio sidecar containers monitor their +configuration file for changes and **restart automatically** to apply +the new configuration. This restart is intentional and expected. + +**What to expect during configuration updates:** + +- The `klio-plugin` sidecar container will restart to pick up the new + configuration +- Container restart counts will increment - this is normal behavior and + indicates the configuration was successfully applied +- Restarts are graceful and brief (typically 5-10 seconds) +- No data loss occurs - PostgreSQL continues running and WAL streaming + resumes automatically after restart +- You can verify the configuration was applied by checking the + `ConfigurationApplied` condition in the PluginConfiguration status + +This automatic propagation applies to all configuration fields +stored in the config file, including: + +- Server address +- Tier 1 and Tier 2 settings (backup, recovery, retention) +- Operation mode (`standard` or `read-only`) +- Cluster name override +- WAL prefetch configuration + +:::note +Changes to container customizations (such as `image`, +`resources`, or `securityContext`) and the `pprof` setting are +not applied automatically. These fields affect the pod spec, +which is managed by CloudNativePG. To apply these changes, use +`kubectl cnpg restart` to roll the cluster pods. +::: + +## Disabling the plugin + +To disable the Klio plugin for a CloudNativePG Cluster, set `enabled: false` +in the plugin reference inside the `Cluster` resource: + +```yaml +spec: + plugins: + - name: klio.cnpg.io + enabled: false + parameters: + pluginConfigurationRef: klio-plugin-config +``` + +After applying this change, a Pods rollout will be triggered by +CloudNativePG to remove the Klio sidecar containers. + +:::warning Replication slot cleanup +When the Klio plugin is active, the `klio-plugin` sidecar creates +a physical replication slot named `klio` on the PostgreSQL +primary. Disabling the plugin does **not** automatically remove +this replication slot. An orphaned replication slot will cause +PostgreSQL to retain WAL files indefinitely, eventually leading +to disk exhaustion. + +After disabling the plugin, connect to the primary instance and +drop the replication slot manually: + +```sql +SELECT pg_drop_replication_slot('klio'); +``` + +You can verify the slot exists beforehand with: + +```sql +SELECT slot_name, active +FROM pg_replication_slots +WHERE slot_type = 'physical'; +``` + +::: + +## Advanced configuration options + +The `PluginConfiguration` resource supports several advanced options to +customize the plugin's behavior. + +### Retention policies + +Define how long backups should be retained by configuring retention policies +for Tier 1 and Tier 2 storage. Retention policies can be configured +independently for each tier: + +```yaml +apiVersion: klio.cnpg.io/v1alpha1 +kind: PluginConfiguration +metadata: + name: klio-plugin-config +spec: + serverAddress: klio-server.default + clientSecretName: klio-client-credentials + serverSecretName: klio-server-tls + clusterName: my-cluster + tier1: + retention: + keepLatest: 5 + keepHourly: 12 + keepDaily: 7 + keepWeekly: 4 + keepMonthly: 6 + keepAnnual: 2 + tier2: + enableBackup: true + enableRecovery: true + retention: + keepLatest: 10 + keepDaily: 30 + keepMonthly: 12 + keepAnnual: 5 +``` + +Except for `keepLatest`, each option defines how many backups to retain +for the specified time period. For example, `keepDaily: 7` means that we should +retain at most one backup for each of the past 7 days. + +If multiple backups exist within the same time bucket, the most recent one is +kept, unless preserved by a different *keep* rule. Backups that are not +retained by any rule are deleted. Rule evaluation is done when a new backup is +taken. + +The Klio server will automatically delete WAL files that are no longer needed +for recovery by any retained backup. + +All retention settings are optional. For each unspecified retention level, +the default Kopia value is applied: + +```yaml +keepLatest: 10 +keepHourly: 48 +keepDaily: 7 +keepWeekly: 4 +keepMonthly: 24 +keepAnnual: 1 +``` + +Set a rule to `0` to disable that retention level. + +### Operation Mode + +The `mode` field controls whether the plugin can perform both backup and +restore operations (`standard`) or only restore operations (`read-only`). + +:::note +The `mode` field is immutable. Once a PluginConfiguration is created, +its mode cannot be changed. To operate in a different mode, you would +need another PluginConfiguration with a different mode. +::: + +```yaml +spec: + mode: standard # or read-only +``` + +#### Standard Mode (default) + +In standard mode, the plugin can: + +- Create backups to Tier 1 (and optionally Tier 2) +- Stream WAL files to the server +- Restore from both Tier 1 and Tier 2 + +This is the default mode and suitable for most deployments. + +#### Read-Only Mode + +Use read-only mode when connecting to a read-only Klio server for recovery +operations only. This is useful for disaster recovery scenarios where you want +to restore from a read-only server in a secondary region or datacenter. + +```yaml +apiVersion: klio.cnpg.io/v1alpha1 +kind: PluginConfiguration +metadata: + name: dr-restore-config +spec: + serverAddress: dr-server.default + clientSecretName: dr-client-credentials + serverSecretName: dr-server-tls + mode: read-only + # Must match the name of the original cluster whose backups you are + # restoring from, not the name of the new cluster being created. + clusterName: my-cluster + + # Read-only mode requires: + # - tier2 configuration with enableRecovery: true + # - NO tier1 configuration + tier2: + enableRecovery: true + # enableBackup must be false or omitted +``` + +**Restrictions in read-only mode:** + +- Tier 2 must be configured with `enableRecovery: true` +- Tier 2 `enableBackup` must be `false` or omitted +- Tier 1 configuration is not allowed +- No backup or WAL streaming operations are performed + +See the [Read-Only Server Mode](klio_server.md#read-only-mode) documentation +for details on setting up a read-only Klio server. + +### Cluster name override + +The `clusterName` field is required and tells Klio which PostgreSQL cluster's +backups and WAL archive to use. In most cases, set it to the name of the +CloudNativePG `Cluster` resource itself: + +```yaml +spec: + clusterName: my-cluster +``` + +Override it to a different value when the plugin needs to reference a +*different* cluster's data, for example when restoring into a new cluster +from an existing cluster's backups, or when configuring replica clusters: + +```yaml +spec: + clusterName: my-custom-cluster-name +``` + +:::warning Uniqueness across namespaces +`clusterName` is the sole identity key for a cluster's WAL/backup stream +on the Klio server it is registered with. It must be unique among all +clusters backed by the same Klio server, regardless of the Kubernetes +namespace they live in. Two clusters in different namespaces that share +a `clusterName` on the same server are not a supported configuration: +the second cluster to connect will have its WAL streaming rejected by +the server with an error such as: + +``` +Error: during server-side replication point validation: rpc error: code = InvalidArgument desc = invalid system ID, expected "" +``` + +This is expected, safe behavior: the server detects the mismatched +system ID and refuses to mix data from the two clusters. If you hit +this error, check whether another cluster on the same server is +already using the same `clusterName`. + +Deleting a cluster and later reusing its `clusterName` on the same +server hits the same error, since the original cluster backups and +WALs will still exist on the Klio server. +::: + +Whichever value you use, it must match the host name in the Common Name of the +client certificate (`userName@hostName`). For tier 1 base backups, a mismatch +is rejected at connection time; for WAL streaming, a mismatch is not currently +detected and can lead to WALs being stored or retrieved under the wrong +cluster path. + +### Tier 2 configuration + +Tier 2 provides secondary storage (typically object storage like S3) for +long-term backup retention and disaster recovery. Configure Tier 2 using the +`tier2` section: + +```yaml +spec: + tier2: + enableBackup: true + enableRecovery: true + retention: + keepDaily: 30 + keepMonthly: 12 +``` + +#### Options + +- **`enableBackup`**: When set to `true`, backups and WAL files are + automatically synchronized to Tier 2 storage after being stored in Tier 1. + This ensures your backups are available in long-term storage. + +- **`enableRecovery`**: When set to `true`, Klio will look for backups and + WAL files in both Tier 1 and Tier 2 during restore operations. If a backup + is available in both tiers, Tier 1 takes precedence as restore from it will + be faster. + +- **`retention`**: Configure a separate retention policy for Tier 2. + Typically, you would configure longer retention periods for Tier 2 since + object storage is more cost-effective for long-term storage. + +See the [Architecture documentation](./architectures.md#tier-2-secondary-storage-object-storage) +for more details on Tier 2 storage. + +### WAL Prefetch Configuration + +During recovery operations, Klio can download upcoming WAL files in the +background, ahead of PostgreSQL's requests, to speed up recovery. Configure +this behavior using the `walPrefetch` section: + +```yaml +spec: + walPrefetch: + count: 8 + maxConcurrentDownloads: 16 +``` + +#### Options + +- **`count`**: How many WAL files ahead of the current one to prefetch in + the background. Set to `0` to disable prefetching. Default is `2`. + +- **`maxConcurrentDownloads`**: The maximum number of WAL downloads — + prefetch and on-demand combined — that can run concurrently. Higher values + can improve recovery speed on high-bandwidth connections but use more + resources. Default is `4`. + +### Observability + +See the [OpenTelemetry observability](./opentelemetry.md) section for more +details on how to monitor the Klio plugin using OpenTelemetry. + +### Performance profiling + +Enable the pprof HTTP endpoint for performance profiling and troubleshooting: + +```yaml +spec: + pprof: true +``` + +When enabled, the pprof endpoint is exposed and can be used with Go's profiling +tools to analyze CPU usage, memory allocation, goroutines, and other runtime +metrics. + +:::warning +Only enable pprof in development or testing environments, or when actively +troubleshooting performance issues. It should not be enabled in production +unless necessary. +::: + +## Container customization + +The `PluginConfiguration` resource allows you to customize the Klio sidecar +containers by providing base container specifications that are used as the +foundation for the sidecars. This feature enables you to add custom environment +variables, volume mounts, resource limits, and other container settings without +modifying the PostgreSQL container environment. + +### Basic example + +```yaml +apiVersion: klio.cnpg.io/v1alpha1 +kind: PluginConfiguration +metadata: + name: klio-plugin-config +spec: + serverAddress: klio-server.default + clientSecretName: klio-client-credentials + serverSecretName: klio-server-tls + clusterName: my-cluster + containers: + - name: klio-plugin + env: + - name: CUSTOM_ENV_VAR + value: "my-value" + - name: DEBUG_LEVEL + value: "info" +``` + +### How container merging works + +The containers you define serve as the base for the Klio sidecars, with the +following merge behavior: + +1. **Your container is the base**: When you define a container + (e.g., `klio-plugin`), your specification serves as the starting point +1. **Klio enforces required values**: Klio sets its essential configuration: + - Container `name` (klio-plugin or klio-restore) + - Container `args` (the command arguments needed for operation) + - `CONTAINER_NAME` environment variable +1. **Your customizations are preserved**: All other fields you define remain + intact +1. **Template defaults fill gaps**: For fields you don't specify, Klio applies + sensible defaults (image, security context, standard volume mounts, etc.) + +:::info + +Klio's required values (name, args, `CONTAINER_NAME` env var) will +always override any conflicting values you set. All other customizations are +respected. +::: + +### Plugin configuration selection in replica clusters + +When a CloudNativePG `Cluster` has multiple `PluginConfiguration` +resources — one for archiving and one or more for external clusters — +Klio selects which configuration to apply to the sidecar containers +using the following logic: + +1. **Archive plugin takes precedence**: if the `Cluster` has a Klio + plugin declared in `.spec.plugins` (the archive plugin), its + `PluginConfiguration` is used for the sidecar containers on every + pod. +1. **Fallback to replica source**: if no archive plugin is configured + and the cluster is a replica (`.spec.replica` is set), the + designated primary pod uses the `PluginConfiguration` referenced + by the external cluster defined as the replica source + (`.spec.replica.source`). Non-primary pods do not receive a Klio + sidecar in this case. + +For example, consider a replica cluster that does not archive locally +but restores WALs from an external source managed by Klio: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: cluster-dc-b +spec: + instances: 3 + # No archive plugin in .spec.plugins + + replica: + self: cluster-dc-b + primary: cluster-dc-a + source: cluster-dc-a + + externalClusters: + - name: cluster-dc-a + plugin: + name: klio.cnpg.io + parameters: + pluginConfigurationRef: source-plugin-config +``` + +In this setup, only the designated primary of `cluster-dc-b` gets a +Klio sidecar, configured from the `source-plugin-config` +`PluginConfiguration`. The container customizations defined in that +`PluginConfiguration` (image, resources, environment variables, etc.) +are applied to the sidecar following the same merging rules described +above. + +### Available sidecar containers + +The following containers can be customized: + +- **`klio-plugin`**: Handles backup creation/management and WAL streaming to + the Klio server in PostgreSQL instance pods +- **`klio-restore`**: Restores backups during recovery jobs + +### Example: Resource limits and environment variables + +```yaml +apiVersion: klio.cnpg.io/v1alpha1 +kind: PluginConfiguration +metadata: + name: klio-plugin-config +spec: + serverAddress: klio-server.default + clientSecretName: klio-client-credentials + serverSecretName: klio-server-tls + clusterName: my-cluster + containers: + - name: klio-plugin + env: + - name: LOG_LEVEL + value: "debug" + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: "http://otel-collector:4317" + resources: + limits: + memory: "512Mi" + cpu: "1" + requests: + memory: "256Mi" + cpu: "500m" +``` diff --git a/documentation/web/versioned_docs/version-0.0.18/user/quickstart.md b/documentation/web/versioned_docs/version-0.0.18/user/quickstart.md new file mode 100644 index 00000000..bf803518 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/quickstart.md @@ -0,0 +1,463 @@ +--- +sidebar_position: 1.5 +--- + +# Quick Start + +This guide walks you through deploying a Klio server, configuring a +CloudNativePG cluster to back up to it, taking a backup, and restoring +it — end to end, on a single Tier 1 (local storage) server with +self-signed certificates. It's meant to get you to a working setup +quickly for evaluation purposes. + +For production topology decisions, see [Architectures](architectures.md). +For every option skipped here — Helm chart configuration, Tier 2 object +storage, read-only disaster-recovery servers, retention tuning, encryption +key rotation, IAM-based S3 authentication, container customization, and +more — see [Klio Operator Helm Chart](helm_chart.mdx), +[The Klio Server](klio_server.md), [The Klio Plugin](plugin_configuration.md), +and [Backup and Restore](backup_and_restore.md). + +## Prerequisites + +- A Kubernetes cluster with [CloudNativePG](https://cloudnative-pg.io) + installed +- `kubectl` configured to access your cluster +- [Helm](https://helm.sh/docs/intro/install/) installed (to install the + Klio operator) +- [cert-manager](https://cert-manager.io/) installed for certificate + management +- [Age](https://github.com/FiloSottile/age) CLI installed locally (for + encrypting the backup encryption key) +- Enough storage resources for the Klio server's data, cache, and queue + PersistentVolumeClaims + +## Install the Klio Operator + +Deploy the Klio Operator using its Helm chart, into the same namespace as +CloudNativePG (`cnpg-system` in these examples). This is a cluster-wide +component, separate from the `default` namespace used for the `Server` +and `Cluster` resources created later in this guide. + +If you don't have the Prometheus Operator installed, disable the +corresponding chart dependency: + +```yaml +# Uncomment if the Prometheus Operator is not installed +# prometheus: +# enable: false +``` + + +```sh +helm install klio-operator \ + oci://ghcr.io/cloudnative-pg/klio-operator-chart \ + --version 0.0.17 \ + --namespace cnpg-system \ + -f values.yaml +``` + + +Verify the operator is running and the CRDs were created: + +```sh +kubectl get pods -n cnpg-system -l app.kubernetes.io/name=klio +kubectl get crds | grep klio.cnpg.io +``` + +For the full configuration reference, upgrade procedure, and uninstall +instructions, see [Klio Operator Helm Chart](helm_chart.mdx). + +## Step 1: Deploy a Klio Server + +### 1.1 Create the encryption key + +The encryption key protects backup data at rest. Klio uses +[Age](https://github.com/FiloSottile/age) encryption to protect the key +itself, so it can be rotated without touching the Kopia repository. + +Generate an Age key pair: + +```bash +age-keygen -o identity.txt +# Public key: age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p +``` + +Generate a random encryption key and encrypt it with the public key: + +```bash +openssl rand -hex 32 | age \ + -r age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p \ + -o encryption-key.age +``` + +Create Kubernetes Secrets for both files: + +```bash +kubectl create secret generic my-server-encryption-key \ + --from-file=encryption-key.age +kubectl create secret generic my-server-age-identity \ + --from-file=identity.txt +``` + +:::tip +Use a strong, randomly generated key. Store it securely — there is no key +recovery mechanism. +::: + +### 1.2 Create a CA certificate + +The CA is used to authenticate Klio clients (the plugin sidecars) via +mTLS. Using cert-manager, create a self-signed CA: + +```yaml +--- +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: selfsigned-issuer + namespace: default +spec: + selfSigned: { } +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: server-sample-ca +spec: + commonName: server-sample-ca + secretName: server-sample-ca + + duration: 2160h # 90d + renewBefore: 360h # 15d + + isCA: true + usages: + - cert sign + + issuerRef: + name: selfsigned-issuer + kind: Issuer + group: cert-manager.io +``` + +```bash +kubectl apply -f ca-configuration.yaml +``` + +### 1.3 Create the server's TLS certificate + +```yaml +--- +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: selfsigned-issuer + namespace: default +spec: + selfSigned: { } +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: my-server-cert + namespace: default +spec: + secretName: my-server-tls + commonName: my-server + dnsNames: + - my-server + - my-server.default + - my-server.default.svc + - my-server.default.svc.cluster.local + duration: 2160h # 90 days + renewBefore: 360h # 15 days + isCA: false + usages: + - server auth + issuerRef: + name: selfsigned-issuer + kind: Issuer + group: cert-manager.io +``` + +```bash +kubectl apply -f tls-certificate.yaml +``` + +:::info +For production environments, use certificates signed by your +organization's Certificate Authority (CA) or a trusted public CA instead +of self-signed certificates. +::: + +### 1.4 Create the Server resource + + +```yaml +apiVersion: klio.cnpg.io/v1alpha1 +kind: Server +metadata: + name: my-server + namespace: default +spec: + # Container image for the Klio server + image: ghcr.io/cloudnative-pg/klio:v0.0.17 + imagePullPolicy: IfNotPresent + + # TLS configuration + tlsSecretName: my-server-tls + + # Client authentication configuration + caSecretName: server-sample-ca + + # tier 1 configuration + tier1: + # Cache storage configuration + cache: + pvcTemplate: + storageClassName: standard # Adjust to your storage class (use 'kubectl get storageclass' to see available options) + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi # Adjust based on your needs + # Data storage pvcTemplate (for backups and WAL) + data: + pvcTemplate: + storageClassName: standard # Adjust to your storage class (use 'kubectl get storageclass' to see available options) + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 100Gi # Adjust based on your backup needs + # Age-encrypted encryption key file + encryptionKeyFile: + fileReference: + volume: + secret: + secretName: my-server-encryption-key + path: encryption-key.age + # Age identity file for decryption + identityFile: + fileReference: + volume: + secret: + secretName: my-server-age-identity + path: identity.txt + + # Queue storage configuration (for NATS work queue) + # Required when tier1 is configured + queue: + pvcTemplate: + storageClassName: standard # Adjust to your storage class + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Mi +``` + + +```bash +kubectl apply -f klio-server.yaml +``` + +### 1.5 Verify the server is running + +```bash +# Check the Server resource status +kubectl get server my-server -n default + +# Check the StatefulSet +kubectl get statefulset my-server-klio -n default + +# Check the Pod +kubectl get pods -l klio.cnpg.io/klio-server=my-server -n default + +# View logs +kubectl logs -l klio.cnpg.io/klio-server=my-server -n default -f +``` + +The server should create a StatefulSet with a pod named `my-server-klio-0`. + +## Step 2: Configure a Cluster with the Klio Plugin + +### 2.1 Create a client certificate + +This certificate authenticates the PostgreSQL cluster's Klio sidecar to +the server. The `commonName` must follow the `@` +format, where `` matches the `clusterName` you'll set on the +`PluginConfiguration` below. + +```yaml +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: client-sample-tls +spec: + secretName: client-sample-tls + commonName: klio@my-cluster + + duration: 2160h # 90d + renewBefore: 360h # 15d + + isCA: false + usages: + - client auth + + issuerRef: + name: server-sample-ca + kind: Issuer + group: cert-manager.io +``` + +```bash +kubectl apply -f client-certificate.yaml +``` + +### 2.2 Create a PluginConfiguration + +```yaml +apiVersion: klio.cnpg.io/v1alpha1 +kind: PluginConfiguration +metadata: + name: klio-plugin-config + namespace: default +spec: + serverAddress: my-server.default + clientSecretName: client-sample-tls + serverSecretName: my-server-tls + clusterName: my-cluster +``` + +```bash +kubectl apply -f klio-plugin-config.yaml +``` + +### 2.3 Reference the plugin in your Cluster + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: my-cluster + namespace: default +spec: + instances: 3 + + postgresql: + pg_hba: + - local replication all peer map=local # Allow replication connections locally + + plugins: + - name: klio.cnpg.io + enabled: true # Activate the Klio plugin (default) + parameters: + pluginConfigurationRef: klio-plugin-config + + storage: + size: 10Gi +``` + +```bash +kubectl apply -f my-cluster.yaml +``` + +The `pg_hba` entry above is required so PostgreSQL accepts the local +replication connection the Klio plugin uses to stream WAL files. + +## Step 3: Take a Backup + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Backup +metadata: + name: my-cluster-backup-20251027 + namespace: default +spec: + method: plugin + target: primary + cluster: + name: my-cluster + pluginConfiguration: + name: klio.cnpg.io +``` + +```bash +kubectl apply -f backup.yaml +``` + +See [Monitor Backup Progress](backup_and_restore.md#monitor-backup-progress) +to check on it. + +## Step 4: Restore the Backup + +Restoring bootstraps a **new** cluster from the backup. First, create a +`PluginConfiguration` pointing back at the original cluster's data: + +```yaml +apiVersion: klio.cnpg.io/v1alpha1 +kind: PluginConfiguration +metadata: + name: my-restore-config + namespace: default +spec: + serverAddress: my-server.default + clientSecretName: client-sample-tls + serverSecretName: my-server-tls + # Must match the name of the original cluster whose backups you are + # restoring from, not the name of the new cluster being created. + clusterName: my-cluster +``` + +```bash +kubectl apply -f restore-config.yaml +``` + +Then create the restored `Cluster`: + +```yaml +apiVersion: postgresql.cnpg.io/v1 +kind: Cluster +metadata: + name: my-restored-cluster + namespace: default +spec: + instances: 3 + + # Bootstrap from a Klio backup + bootstrap: + recovery: + source: source + # OPTIONAL: Specify the backup to restore from; Klio picks the + # latest one automatically if omitted + recoveryTarget: + backupID: my-cluster-backup-YYYYMMDDHHMMSS + + # Reference the Klio plugin configuration + externalClusters: + - name: source + plugin: + name: klio.cnpg.io + parameters: + pluginConfigurationRef: my-restore-config + + storage: + size: 10Gi +``` + +```bash +kubectl apply -f restored-cluster.yaml +``` + +The restored cluster operates independently and will **not** perform its +own backups unless you configure the Klio plugin for backup operations on +it too, as in Step 2. + +## Next Steps + +- [Architectures](architectures.md) — production topology options, + including Tier 2 object storage and read-only disaster-recovery servers +- [Managing Storage](managing_storage.md) — sizing and resizing PVCs +- [OpenTelemetry](opentelemetry.md) — monitoring and telemetry diff --git a/documentation/web/versioned_docs/version-0.0.18/user/upgrade_notes.md b/documentation/web/versioned_docs/version-0.0.18/user/upgrade_notes.md new file mode 100644 index 00000000..aaf16d01 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/upgrade_notes.md @@ -0,0 +1,9 @@ +--- +sidebar_position: 91 +--- + +# Upgrade Notes + +This page lists version-specific changes that may require +manual action when upgrading Klio. For the upgrade procedure, +see the [Helm chart page](helm_chart.mdx#upgrades). diff --git a/documentation/web/versioned_docs/version-0.0.18/user/wal_streaming.md b/documentation/web/versioned_docs/version-0.0.18/user/wal_streaming.md new file mode 100644 index 00000000..4734b361 --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/wal_streaming.md @@ -0,0 +1,120 @@ +--- +sidebar_position: 4 +--- + +# WAL Streaming + +A standout feature of Klio is its native, cloud-first implementation of WAL +streaming for PostgreSQL. This architecture enables: + +- Partial WAL segment streaming, ensuring real-time data transfer +- Built-in compression and encryption using user-provided keys +- Controlled replication slot advancement, protecting against WAL loss +- Optional synchronous replication, offering zero RPO when enabled + +## Architecture + +WAL streaming in Klio is built around two components: a client and a server. + +- The client, invoked using the `klio send-wal` command, typically runs + alongside PostgreSQL but does not have to. +- The server, started with the `klio server start` command, runs as a + dedicated process on the Klio server. + +In Kubernetes environments, as illustrated in the diagram below, Klio streams +WAL records directly from the PostgreSQL primary over a local Unix domain +socket. The WAL streamer runs as a lightweight sidecar container within the +same pod as the primary instance and is managed by the CNPG-I–compliant plugin. +It continuously pushes data to a remote Klio WAL server (Tier 1), which handles +partial WAL file synchronization and archives completed segments into the +central WAL archive for the PostgreSQL cluster. + +![WAL streaming architectural overview](images/wal-streaming.png) + +## Moving Beyond `archive_command` + +Klio replaces the traditional PostgreSQL `archive_command` method for WAL +handling in CloudNativePG clusters, providing improved reliability, efficiency, +security, and observability. + +PostgreSQL’s `archive_command` is a shell command executed when a WAL segment +is complete—either because the segment reached its size limit (typically 16MB) +or the `archive_timeout` elapsed (5 minutes by default in CloudNativePG). + +The streaming model provided by Klio offers several key advantages over this +approach: + +- **Near-zero RPO:** WAL changes are streamed incrementally in near real-time, + reducing the worst-case recovery point objective (RPO) from 5 minutes to + near-zero, or even zero in synchronous mode. + +- **Improved efficiency and scalability:** A single, continuously running WAL + streamer process replaces the need to spawn a new process for each WAL + segment, resulting in lower CPU and I/O usage and better scalability during + periods of high WAL volume. + +- **Enhanced security:** WAL data is encrypted end-to-end, both in transit and + at rest, providing protection not available with the traditional + `archive_command`. + +- **Comprehensive observability:** Native metrics and structured logging + provide full visibility into WAL streaming operations, simplifying + monitoring, anomaly detection, and troubleshooting compared to the opaque + nature of `archive_command`. + +## Monitoring Klio WAL Streamer in PostgreSQL + +The Klio WAL streamer is a PostgreSQL streaming replication client and, +as such, can be monitored using the standard `pg_stat_replication` +system view in the PostgreSQL catalog. + +The WAL streamer identifies itself with `application_name` set to `klio`. + +To verify whether any Klio WAL streamer is connected to an instance (in +Kubernetes deployments, this will always be the primary), run the following +query: + +```sql +SELECT * FROM pg_stat_replication WHERE application_name = 'klio'; +``` + +An example output might look like this: + +The following excerpt is an a example: + +```console +-[ RECORD 1 ]----+------------------------------ +pid | 1070 +usesysid | 10 +usename | postgres +application_name | klio +client_addr | +client_hostname | +client_port | -1 +backend_start | 2025-08-07 01:14:39.619662+00 +backend_xmin | +state | streaming +sent_lsn | 2/C765A000 +write_lsn | 2/C75FA000 +flush_lsn | 2/C741A000 +replay_lsn | 2/C741A000 +write_lag | 00:00:00.919907 +flush_lag | 00:00:00.923556 +replay_lag | 00:00:00.923556 +sync_priority | 0 +sync_state | async +reply_time | 2025-08-07 01:54:44.756306+00 +``` + +As you can see, Klio provides relevant feedback to PostgreSQL. Here is a brief +explanation of the key fields: + +- `state`: The replication connection status (`streaming` indicates active + streaming). +- `sent_lsn`, `write_lsn`, `flush_lsn`, `replay_lsn`: Positions in the WAL + indicating how far data has been sent, written, flushed, and replayed on the + Klio server (replayed and flushed are always identical). +- `write_lag`, `flush_lag`, `replay_lag`: Delays between WAL positions + indicating replication latency. +- `sync_state`: The synchronization state of this standby (e.g., `async`, + `sync`, `potential`, `quorum`). diff --git a/documentation/web/versioned_docs/version-0.0.18/user/walplayer.md b/documentation/web/versioned_docs/version-0.0.18/user/walplayer.md new file mode 100644 index 00000000..2e888e6e --- /dev/null +++ b/documentation/web/versioned_docs/version-0.0.18/user/walplayer.md @@ -0,0 +1,335 @@ +--- +title: WAL Player +sidebar_position: 80 +--- + +# WAL Player + +The WAL Player is a command-line tool designed to benchmark the performance of +your Klio servers by simulating PostgreSQL Write-Ahead Log (WAL) file streaming +workloads. It is an essential tool for ensuring your Klio servers can handle +your production workloads efficiently. Use it regularly to validate performance +and capacity planning decisions. + +## Overview + +WAL Player provides two main commands: + +- **`generate`** - Creates synthetic WAL files for testing +- **`play`** - Sends WAL files to a Klio server and measures performance + +This tool is essential for: + +- Performance testing and benchmarking Klio servers +- Validating server capacity under different workloads +- Measuring throughput and latency characteristics +- Load testing before production deployment + +## Prerequisites + +- Klio binary installed and accessible +- A running Klio server to test against +- Sufficient disk space for generating test WAL files + +## Commands + +### `klio wal-player generate` + +Generates synthetic WAL files for testing purposes. + +#### Usage + +```bash +klio wal-player generate [output-directory] [flags] +``` + +#### Parameters + +- `output-directory` - Directory where WAL files will be created (defaults to + current directory) + +#### Flags + +- `--wal-size` - Size of each WAL file in MB (default: 16) +- `--length` - Number of WAL files to generate (required) + +#### Examples + +```bash +# Generate 10 WAL files of 16MB each in the current directory +klio wal-player generate --length 10 + +# Generate 50 WAL files of 32MB each in a specific directory +klio wal-player generate /tmp/test-wals --wal-size 32 --length 50 +``` + +### `klio wal-player play` + +Sends WAL files to a Klio server and measures performance metrics. + +#### Usage + +```bash +klio wal-player play [directory] [flags] +``` + +#### Parameters + +- `directory` - Directory containing WAL files to send (required). This + directory should contain PostgreSQL WAL files in the standard format (e.g., + `000000010000000000000001`). It also supports files compressed with gzip, + provided they have the `.gz` extension. + +#### Flags + +- `--jobs, -j` - Number of parallel jobs for concurrent uploads (default: 1). + Can be used to simulate multiple Klio clients sending data simultaneously. +- `--block-size` - Block size in KB for streaming (default: 2048). This controls + how much data is sent in each request. + +#### Configuration + +The play command requires client configuration to connect to your Klio server. +This can be provided via: + +- Configuration file +- Environment variables +- Command-line flags + +Example configuration: + +```yaml +# klio-config.yaml +client: + cluster_name: walplayer + wal: + address: localhost:52000 + server_cert_path: "/path/to/server.crt" + client_cert_path: "/path/to/client/tls.crt" + client_key_path: "/path/to/client/tls.key" +``` + +#### Examples + +```bash +# Send WAL files using single connection +klio wal-player play ./test-wals + +# Send WAL files using 4 workers for parallel uploads +klio wal-player play ./test-wals --jobs 4 + +# Benchmark with different block sizes +klio wal-player play ./test-wals --jobs 2 --block-size 1024 +``` + +## Performance Metrics + +The `play` command outputs detailed performance metrics in JSON format for each +WAL file: + +```json +{ + "walFullPath": "/path/to/000000010000000000000001", + "startTime": "2025-01-15T10:30:00Z", + "endTime": "2025-01-15T10:30:02Z", + "elapsedTime": "7651680", + "error": "" +} +``` + +### Metrics Explained + +- **`walFullPath`** - Full path to the WAL file that was sent +- **`startTime`** - When the upload started +- **`endTime`** - When the upload completed +- **`elapsedTime`** - Total time taken for the upload in nanoseconds +- **`error`** - Error message if the upload failed (empty on success) + +## Benchmarking Example + +The following Kubernetes Job definition demonstrates how to use +the WAL Player to benchmark a Klio server. This example covers generating +WAL files and then playing them back to the server. + + +```yaml +--- +# PVC for storing generated WAL files +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: walplayer-data +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 2Gi # Enough space to hold the generated amount of WAL files +--- +# Client certificate for authenticating with the Klio server +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: walplayer-client-cert +spec: + commonName: klio@walplayer + secretName: walplayer-client-cert + duration: 2160h # 90d + renewBefore: 360h # 15d + isCA: false + usages: + - client auth + issuerRef: + name: server-sample-ca + kind: Issuer + group: cert-manager.io +--- +# ConfigMap with klio client configuration +apiVersion: v1 +kind: ConfigMap +metadata: + name: walplayer-config +data: + # Address your klio server + klio-config.yaml: | + client: + cluster_name: walplayer + wal: + address: server-sample.default:52000 + server_cert_path: /certs/server/ca.crt + client_cert_path: /certs/client/tls.crt + client_key_path: /certs/client/tls.key +--- +# Job to generate and play WAL files +apiVersion: batch/v1 +kind: Job +metadata: + name: walplayer-benchmark +spec: + template: + metadata: + labels: + app: walplayer + spec: + restartPolicy: Never + initContainers: + # Generate synthetic WAL files + - name: generate-wals + image: ghcr.io/cloudnative-pg/klio:v0.0.18 + imagePullPolicy: Always + command: + - /usr/bin/klio + - wal-player + - generate + - /data + - --wal-size=16 + - --length=100 + volumeMounts: + - name: data + mountPath: /data + containers: + # Play WAL files to the Klio server + - name: play-wals + image: ghcr.io/cloudnative-pg/klio:v0.0.18 + imagePullPolicy: Always + command: + - /usr/bin/klio + - wal-player + - play + - /data + - --config=/config/klio-config.yaml + - --jobs=4 + - --block-size=2048 + volumeMounts: + - name: data + mountPath: /data + - name: config + mountPath: /config + readOnly: true + - name: server-cert + mountPath: /certs/server + readOnly: true + - name: client-cert + mountPath: /certs/client + readOnly: true + volumes: + - name: data + persistentVolumeClaim: + claimName: walplayer-data + - name: config + configMap: + name: walplayer-config + - name: server-cert + secret: + secretName: server-sample-tls + - name: client-cert + secret: + secretName: walplayer-client-cert +``` + + +### Customizing the Benchmark + +You can adjust the following parameters to simulate different workload scenarios: + +#### WAL Generation Parameters + +Modify the `generate-wals` init container to create different test workloads: + +- Many small files: + + ```yaml + - --wal-size=16 + - --length=1000 + ``` + +- Less large files: + + ```yaml + - --wal-size=256 + - --length=100 + ``` + +Match actual production for better results. + +#### WAL Playback Parameters + +Modify the `play-wals` container to test different upload patterns: + +- **Jobs** (`--jobs`): Number of parallel upload workers + - Start with `--jobs=1` to establish baseline performance + - Increase to `--jobs=2`, `--jobs=4`, `--jobs=8` to find optimal concurrency + - Performance typically plateaus at some point +- **Block Size** (`--block-size`): Size of each streaming chunk in KB + - Default is `--block-size=2048` + - Maximum is 8192 + +### Analyzing Results + +View the job logs to see the JSON performance metrics: + +```bash +kubectl logs job/walplayer-benchmark -c play-wals +``` + +You can analyze the output using `jq`: + +```bash +# Get all results +kubectl logs job/walplayer-benchmark -c play-wals > results.json + +# Calculate total successful uploads +jq -s '[.[] | select(.error == "")] | length' results.json + +# Calculate average upload time (in nanoseconds) +jq -s '[.[] | select(.error == "") | .elapsedTime | tonumber] | add / length' results.json + +# Find any failed uploads +jq -s '.[] | select(has("error") and .error != "")' results.json +``` + +## Performance Optimization Tips + +1. **Resource Monitoring**: Monitor CPU, memory, and disk I/O on the Klio server +1. **Network Bandwidth**: Ensure sufficient bandwidth between client and server +1. **Storage Performance**: Verify storage can handle the write throughput diff --git a/documentation/web/versioned_sidebars/version-0.0.18-sidebars.json b/documentation/web/versioned_sidebars/version-0.0.18-sidebars.json new file mode 100644 index 00000000..1ed7b9fe --- /dev/null +++ b/documentation/web/versioned_sidebars/version-0.0.18-sidebars.json @@ -0,0 +1,14 @@ +{ + "docs": [ + { + "type": "autogenerated", + "dirName": "user" + } + ], + "developers_docs": [ + { + "type": "autogenerated", + "dirName": "developer" + } + ] +} diff --git a/documentation/web/versions.json b/documentation/web/versions.json new file mode 100644 index 00000000..ac8d9edf --- /dev/null +++ b/documentation/web/versions.json @@ -0,0 +1,3 @@ +[ + "0.0.18" +] From 70cfb7b51d1bd770c4cbadd0eae223cd2b2a543e Mon Sep 17 00:00:00 2001 From: Francesco Canovai Date: Thu, 13 Aug 2026 13:51:12 +0200 Subject: [PATCH 4/4] docs: fix changelog links Fix not existing links for GitHub issue in the former closed repository. Signed-off-by: Francesco Canovai --- CHANGELOG.md | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61e226af..03b87bfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,42 +5,42 @@ ### Features -* **core:** Export Kopia traces via OTLP/gRPC (EnterpriseDB/klio[#1679](https://github.com/cloudnative-pg/klio/issues/1679)) ([245da93](https://github.com/cloudnative-pg/klio/commit/245da93ebdc24d0f301ceaa26134d143ac1cc732)) -* **ip:** Contribute Klio to CloudNativePG under the Apache License 2.0 (EnterpriseDB/klio[#1841](https://github.com/cloudnative-pg/klio/issues/1841)) ([a3dcd13](https://github.com/cloudnative-pg/klio/commit/a3dcd1377934dbbe6f025347488aa8c5918c41bd)) -* **observability:** Fill Grafana dashboard gaps for WAL and backup metrics (EnterpriseDB/klio[#1793](https://github.com/cloudnative-pg/klio/issues/1793)) ([c88d2f8](https://github.com/cloudnative-pg/klio/commit/c88d2f8fe1ee3b59360c83da0900667907f09694)) -* **operator:** Add preflight check operator certification (EnterpriseDB/klio[#1767](https://github.com/cloudnative-pg/klio/issues/1767)) ([295ea20](https://github.com/cloudnative-pg/klio/commit/295ea203c1e3dd9e9f1dc9b942944a47ace91528)) +* **core:** Export Kopia traces via OTLP/gRPC ([EnterpriseDB/klio#1679](https://github.com/EnterpriseDB/klio/issues/1679)) ([245da93](https://github.com/cloudnative-pg/klio/commit/245da93ebdc24d0f301ceaa26134d143ac1cc732)) +* **ip:** Contribute Klio to CloudNativePG under the Apache License 2.0 ([EnterpriseDB/klio#1841](https://github.com/EnterpriseDB/klio/issues/1841)) ([a3dcd13](https://github.com/cloudnative-pg/klio/commit/a3dcd1377934dbbe6f025347488aa8c5918c41bd)) +* **observability:** Fill Grafana dashboard gaps for WAL and backup metrics ([EnterpriseDB/klio#1793](https://github.com/EnterpriseDB/klio/issues/1793)) ([c88d2f8](https://github.com/cloudnative-pg/klio/commit/c88d2f8fe1ee3b59360c83da0900667907f09694)) +* **operator:** Add preflight check operator certification ([EnterpriseDB/klio#1767](https://github.com/EnterpriseDB/klio/issues/1767)) ([295ea20](https://github.com/cloudnative-pg/klio/commit/295ea203c1e3dd9e9f1dc9b942944a47ace91528)) * Switch from UBI images to Debian based ones ([#90](https://github.com/cloudnative-pg/klio/issues/90)) ([af333a5](https://github.com/cloudnative-pg/klio/commit/af333a5ecde3a469df95560384fe67eb68f2fc5f)) ### Bug Fixes -* **ci:** Upload openshift e2e logs from the correct path (EnterpriseDB/klio[#1808](https://github.com/cloudnative-pg/klio/issues/1808)) ([e2fb58e](https://github.com/cloudnative-pg/klio/commit/e2fb58ef0d4dcc7ed3c67ac8c972d9770366cc90)) -* **core:** Archive partial WAL segments to tier2 and restore from them (EnterpriseDB/klio[#1747](https://github.com/cloudnative-pg/klio/issues/1747)) ([924914e](https://github.com/cloudnative-pg/klio/commit/924914e2df1ac73650ad455da32bd7e1a605a887)) +* **ci:** Upload openshift e2e logs from the correct path ([EnterpriseDB/klio#1808](https://github.com/EnterpriseDB/klio/issues/1808)) ([e2fb58e](https://github.com/cloudnative-pg/klio/commit/e2fb58ef0d4dcc7ed3c67ac8c972d9770366cc90)) +* **core:** Archive partial WAL segments to tier2 and restore from them ([EnterpriseDB/klio#1747](https://github.com/EnterpriseDB/klio/issues/1747)) ([924914e](https://github.com/cloudnative-pg/klio/commit/924914e2df1ac73650ad455da32bd7e1a605a887)) * **deps:** Align semconv to v1.43.0 in core and operator ([cd74155](https://github.com/cloudnative-pg/klio/commit/cd74155fa65e1eca9a7428b33fe7ac8f67f0c0f0)) -* **deps:** Pin jsm.go to main for StreamPager cross-delivery fix (EnterpriseDB/klio[#1806](https://github.com/cloudnative-pg/klio/issues/1806)) ([ae18c70](https://github.com/cloudnative-pg/klio/commit/ae18c701ce755b5d07e9379e113ef3459af9c80b)) +* **deps:** Pin jsm.go to main for StreamPager cross-delivery fix ([EnterpriseDB/klio#1806](https://github.com/EnterpriseDB/klio/issues/1806)) ([ae18c70](https://github.com/cloudnative-pg/klio/commit/ae18c701ce755b5d07e9379e113ef3459af9c80b)) * **deps:** Update all non-major go dependencies ([eea11e5](https://github.com/cloudnative-pg/klio/commit/eea11e5b1a32ee1852726ab9ad1a08c25f69e613)) * **deps:** Update all non-major go dependencies ([b501f13](https://github.com/cloudnative-pg/klio/commit/b501f132c371abb63eb22ddd1ac48ea0c74566d8)) -* **deps:** Update all non-major go dependencies (EnterpriseDB/klio[#1780](https://github.com/cloudnative-pg/klio/issues/1780)) ([c76337c](https://github.com/cloudnative-pg/klio/commit/c76337c45833d14b743fa9967bfd9fbf72409bad)) -* **deps:** Update all non-major go dependencies (EnterpriseDB/klio[#1797](https://github.com/cloudnative-pg/klio/issues/1797)) ([21c34a4](https://github.com/cloudnative-pg/klio/commit/21c34a4727e29efc45ea901a0cc0c3ca4f331008)) -* **deps:** Update all non-major go dependencies (EnterpriseDB/klio[#1833](https://github.com/cloudnative-pg/klio/issues/1833)) ([8bbd83f](https://github.com/cloudnative-pg/klio/commit/8bbd83fbf5e1c29983902a0f04a91459458caceb)) -* **deps:** Update all non-major go dependencies (EnterpriseDB/klio[#1845](https://github.com/cloudnative-pg/klio/issues/1845)) ([762f70d](https://github.com/cloudnative-pg/klio/commit/762f70d20d2124db797e117003c31b66f21fcb8d)) -* **deps:** Update all non-major go dependencies (EnterpriseDB/klio[#1848](https://github.com/cloudnative-pg/klio/issues/1848)) ([ef9330e](https://github.com/cloudnative-pg/klio/commit/ef9330e8602c567b3feee4acc4f4551f57ee6e97)) -* **deps:** Update documentation dependencies to v3.10.2 (EnterpriseDB/klio[#1798](https://github.com/cloudnative-pg/klio/issues/1798)) ([14c4161](https://github.com/cloudnative-pg/klio/commit/14c4161aec7d10fe4585e8e5555e3928f0cc4fbf)) -* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 0552b9c (EnterpriseDB/klio[#1859](https://github.com/cloudnative-pg/klio/issues/1859)) ([e01f8d6](https://github.com/cloudnative-pg/klio/commit/e01f8d612dd2462055b05a38671db1304418955d)) +* **deps:** Update all non-major go dependencies ([EnterpriseDB/klio#1780](https://github.com/EnterpriseDB/klio/issues/1780)) ([c76337c](https://github.com/cloudnative-pg/klio/commit/c76337c45833d14b743fa9967bfd9fbf72409bad)) +* **deps:** Update all non-major go dependencies ([EnterpriseDB/klio#1797](https://github.com/EnterpriseDB/klio/issues/1797)) ([21c34a4](https://github.com/cloudnative-pg/klio/commit/21c34a4727e29efc45ea901a0cc0c3ca4f331008)) +* **deps:** Update all non-major go dependencies ([EnterpriseDB/klio#1833](https://github.com/EnterpriseDB/klio/issues/1833)) ([8bbd83f](https://github.com/cloudnative-pg/klio/commit/8bbd83fbf5e1c29983902a0f04a91459458caceb)) +* **deps:** Update all non-major go dependencies ([EnterpriseDB/klio#1845](https://github.com/EnterpriseDB/klio/issues/1845)) ([762f70d](https://github.com/cloudnative-pg/klio/commit/762f70d20d2124db797e117003c31b66f21fcb8d)) +* **deps:** Update all non-major go dependencies ([EnterpriseDB/klio#1848](https://github.com/EnterpriseDB/klio/issues/1848)) ([ef9330e](https://github.com/cloudnative-pg/klio/commit/ef9330e8602c567b3feee4acc4f4551f57ee6e97)) +* **deps:** Update documentation dependencies to v3.10.2 ([EnterpriseDB/klio#1798](https://github.com/EnterpriseDB/klio/issues/1798)) ([14c4161](https://github.com/cloudnative-pg/klio/commit/14c4161aec7d10fe4585e8e5555e3928f0cc4fbf)) +* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 0552b9c ([EnterpriseDB/klio#1859](https://github.com/EnterpriseDB/klio/issues/1859)) ([e01f8d6](https://github.com/cloudnative-pg/klio/commit/e01f8d612dd2462055b05a38671db1304418955d)) * **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 0603a9c ([eeb3f8f](https://github.com/cloudnative-pg/klio/commit/eeb3f8f224df0a20b58390537f0a722145dbd9a5)) -* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 1a79065 (EnterpriseDB/klio[#1803](https://github.com/cloudnative-pg/klio/issues/1803)) ([42c7f9c](https://github.com/cloudnative-pg/klio/commit/42c7f9c8135ed3ff31fa9318347b06906229ed02)) -* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 2af6cc5 (EnterpriseDB/klio[#1842](https://github.com/cloudnative-pg/klio/issues/1842)) ([a8c97ed](https://github.com/cloudnative-pg/klio/commit/a8c97eda63eefe671bda9b74cb837c2e96044415)) -* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 308f3ea (EnterpriseDB/klio[#1794](https://github.com/cloudnative-pg/klio/issues/1794)) ([2d7ba7b](https://github.com/cloudnative-pg/klio/commit/2d7ba7b0a0be24ec7a58d7a82c05610228c498dc)) -* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 83bfc38 (EnterpriseDB/klio[#1865](https://github.com/cloudnative-pg/klio/issues/1865)) ([e418675](https://github.com/cloudnative-pg/klio/commit/e4186751dae758e45e898802da90ad28e5f76648)) -* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 91c9e02 (EnterpriseDB/klio[#1810](https://github.com/cloudnative-pg/klio/issues/1810)) ([a5c8de1](https://github.com/cloudnative-pg/klio/commit/a5c8de1dac06f2daefeac8416aa323e1b2904e9c)) -* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to e39ec6b (EnterpriseDB/klio[#1822](https://github.com/cloudnative-pg/klio/issues/1822)) ([9238238](https://github.com/cloudnative-pg/klio/commit/92382385048336e7de2578a1673fc4e964d5d124)) -* **deps:** Update kubernetes monorepo to v0.36.3 (EnterpriseDB/klio[#1854](https://github.com/cloudnative-pg/klio/issues/1854)) ([4189cfe](https://github.com/cloudnative-pg/klio/commit/4189cfeb9925a0ed3619d268c720132d5f96e5a5)) -* **deps:** Update module github.com/aws/aws-sdk-go-v2/service/s3 to v1.105.2 (EnterpriseDB/klio[#1816](https://github.com/cloudnative-pg/klio/issues/1816)) ([d66d8e1](https://github.com/cloudnative-pg/klio/commit/d66d8e1c60cce79d5394b688a93b5d80668d7ef3)) +* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 1a79065 ([EnterpriseDB/klio#1803](https://github.com/EnterpriseDB/klio/issues/1803)) ([42c7f9c](https://github.com/cloudnative-pg/klio/commit/42c7f9c8135ed3ff31fa9318347b06906229ed02)) +* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 2af6cc5 ([EnterpriseDB/klio#1842](https://github.com/EnterpriseDB/klio/issues/1842)) ([a8c97ed](https://github.com/cloudnative-pg/klio/commit/a8c97eda63eefe671bda9b74cb837c2e96044415)) +* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 308f3ea ([EnterpriseDB/klio#1794](https://github.com/EnterpriseDB/klio/issues/1794)) ([2d7ba7b](https://github.com/cloudnative-pg/klio/commit/2d7ba7b0a0be24ec7a58d7a82c05610228c498dc)) +* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 83bfc38 ([EnterpriseDB/klio#1865](https://github.com/EnterpriseDB/klio/issues/1865)) ([e418675](https://github.com/cloudnative-pg/klio/commit/e4186751dae758e45e898802da90ad28e5f76648)) +* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to 91c9e02 ([EnterpriseDB/klio#1810](https://github.com/EnterpriseDB/klio/issues/1810)) ([a5c8de1](https://github.com/cloudnative-pg/klio/commit/a5c8de1dac06f2daefeac8416aa323e1b2904e9c)) +* **deps:** Update github.com/cloudnative-pg/cloudnative-pg/tests digest to e39ec6b ([EnterpriseDB/klio#1822](https://github.com/EnterpriseDB/klio/issues/1822)) ([9238238](https://github.com/cloudnative-pg/klio/commit/92382385048336e7de2578a1673fc4e964d5d124)) +* **deps:** Update kubernetes monorepo to v0.36.3 ([EnterpriseDB/klio#1854](https://github.com/EnterpriseDB/klio/issues/1854)) ([4189cfe](https://github.com/cloudnative-pg/klio/commit/4189cfeb9925a0ed3619d268c720132d5f96e5a5)) +* **deps:** Update module github.com/aws/aws-sdk-go-v2/service/s3 to v1.105.2 ([EnterpriseDB/klio#1816](https://github.com/EnterpriseDB/klio/issues/1816)) ([d66d8e1](https://github.com/cloudnative-pg/klio/commit/d66d8e1c60cce79d5394b688a93b5d80668d7ef3)) * **deps:** Update module github.com/nats-io/nats-server/v2 to v2.14.5 ([#92](https://github.com/cloudnative-pg/klio/issues/92)) ([26d6449](https://github.com/cloudnative-pg/klio/commit/26d6449b7edd740fa2e1a8095804c31eed50cf1a)) -* **deps:** Update module go.yaml.in/yaml/v3 to v3.0.5 (EnterpriseDB/klio[#1874](https://github.com/cloudnative-pg/klio/issues/1874)) ([2415112](https://github.com/cloudnative-pg/klio/commit/241511233e75462bbcde935cd69d46701635903e)) -* **deps:** Update module google.golang.org/grpc to v1.82.1 (EnterpriseDB/klio[#1813](https://github.com/cloudnative-pg/klio/issues/1813)) ([7a8df3c](https://github.com/cloudnative-pg/klio/commit/7a8df3cc948d3a439115ba8d82aec9e734b20c3c)) +* **deps:** Update module go.yaml.in/yaml/v3 to v3.0.5 ([EnterpriseDB/klio#1874](https://github.com/EnterpriseDB/klio/issues/1874)) ([2415112](https://github.com/cloudnative-pg/klio/commit/241511233e75462bbcde935cd69d46701635903e)) +* **deps:** Update module google.golang.org/grpc to v1.82.1 ([EnterpriseDB/klio#1813](https://github.com/EnterpriseDB/klio/issues/1813)) ([7a8df3c](https://github.com/cloudnative-pg/klio/commit/7a8df3cc948d3a439115ba8d82aec9e734b20c3c)) * **operator:** Drop stale klio-wal from container allowlist ([#86](https://github.com/cloudnative-pg/klio/issues/86)) ([f71c6af](https://github.com/cloudnative-pg/klio/commit/f71c6aff73fe7751bd4e71fef9fb318ed625a695)), closes [#68](https://github.com/cloudnative-pg/klio/issues/68) -* **wal:** Archive timeline history files to tier-2 (EnterpriseDB/klio[#1762](https://github.com/cloudnative-pg/klio/issues/1762)) ([20afc6f](https://github.com/cloudnative-pg/klio/commit/20afc6f09b34b7feb7aa17f9d96c91b0a8586076)) +* **wal:** Archive timeline history files to tier-2 ([EnterpriseDB/klio#1762](https://github.com/EnterpriseDB/klio/issues/1762)) ([20afc6f](https://github.com/cloudnative-pg/klio/commit/20afc6f09b34b7feb7aa17f9d96c91b0a8586076)) ## [0.0.17](https://github.com/EnterpriseDB/klio/compare/v0.0.16...v0.0.17) (2026-07-10)

    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%0DH_82N>SwfrGLLJL76#rIKlK>+ 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 F{{f%Mvj+eG literal 0 HcmV?d00001 diff --git a/documentation/web/versioned_docs/version-0.0.18/user/images/tier1-namespace-multi.png b/documentation/web/versioned_docs/version-0.0.18/user/images/tier1-namespace-multi.png new file mode 100644 index 0000000000000000000000000000000000000000..77fe47b7104956c52ace4163802690fdcd4d945e GIT binary patch literal 95217 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

_*=Fh!>Iz2K6`kgm{vaLH|h`F4BPc;)7* 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�!p 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 z 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