├── docs ├── api │ ├── index.md │ └── contribute │ │ └── contribute.md ├── reference │ ├── index.md │ ├── glossary.md │ ├── acknowledgements.md │ ├── copyright.md │ ├── AI_disclaimer_for_docs.md │ ├── telemetry.md │ └── trademark-policy.md ├── css │ ├── nocopy.css │ ├── version-select.css │ ├── extra.css │ ├── rating.css │ ├── everest.css │ └── percona.css ├── images │ ├── PITR.PNG │ ├── edit.png │ ├── image.png │ ├── everest.png │ ├── image-1.png │ ├── okta_url.png │ ├── scr_rule.png │ ├── sharding.png │ ├── Help_icon.png │ ├── PITR_Mongo.png │ ├── backup_RN.png │ ├── create_db.png │ ├── restore_RN.png │ ├── scr_claim.png │ ├── scr_policy.png │ ├── scr_scope.png │ ├── sso_login.png │ ├── storage_RN.png │ ├── Cluster_list.png │ ├── DB_Overview.png │ ├── Edit_policy.png │ ├── actions_icon.png │ ├── assign_policy.png │ ├── cluster_MN_RN.png │ ├── database_view.png │ ├── disabled_bell.png │ ├── everest_site.png │ ├── policies_page.png │ ├── restore_pitr.png │ ├── settings_icon.png │ ├── source_range.png │ ├── INVENTORY_ICON.png │ ├── arrow-downward.ico │ ├── backup_storages.png │ ├── components_page.png │ ├── create_affinity.png │ ├── databases_icon.png │ ├── delete_policies.png │ ├── edit_db_cluster.png │ ├── everest_backup.png │ ├── import_complete.png │ ├── okta_client-id.png │ ├── percona-favicon.ico │ ├── percona-favicon.png │ ├── pg_dataimporter.png │ ├── pg_limitation_2.png │ ├── sharding_status.png │ ├── support_tickets.PNG │ ├── Backups_DB_wizard.png │ ├── OKTA_admin_console.png │ ├── Percona_Logo_Color.png │ ├── PostreSQL_Backups.png │ ├── add_rule_affinity.png │ ├── advanced_configs.png │ ├── affinity_add_rules.png │ ├── change_PSP_fromA_B.png │ ├── database_backups.png │ ├── database_details.png │ ├── database_overview.png │ ├── database_restores.png │ ├── database_upgrade.png │ ├── datbase_view_page.png │ ├── display_db_details.png │ ├── everest_adv_config.png │ ├── everest_db_scaling.png │ ├── pg_default_policy.png │ ├── post_upgrade_tasks.png │ ├── proxies_resources.png │ ├── psmdb_dataimporter.png │ ├── pxc_dataimporter.png │ ├── rbac_readonly_ns.png │ ├── rbac_readonly_role.png │ ├── resources_routers.png │ ├── schedule_backups.png │ ├── sharding_routers.png │ ├── upgrade_CRversion.png │ ├── upgrade_dependency.png │ ├── upgrade_operator.png │ ├── Percona_Everest_docs.png │ ├── create_db_from_pitr.png │ ├── db_operator_upgrade.png │ ├── default_mongo_policy.png │ ├── dots-three-vertical.ico │ ├── dots-three-vertical.png │ ├── edit_backup_storage.png │ ├── edit_pod_scheduling.png │ ├── everest_add_endpoint.png │ ├── everest_db_provision.png │ ├── everest_edit_cluster.png │ ├── mysql_default_policy.png │ ├── pmm_dashboards_page.png │ ├── resources_pgbouncer.png │ ├── restore_from_backup.png │ ├── sso_aap_integration.png │ ├── upgrade_buttons_page.png │ ├── change_PSP_for_cluster.png │ ├── check_pending_actions.png │ ├── configure_node_affinity.png │ ├── create_backup_storage.png │ ├── database_view_actions.png │ ├── dev_role_monitor_read.png │ ├── dev_role_storage_read.png │ ├── edit_resources_toplogy.png │ ├── edit_storage_capacity.png │ ├── enable_advanced_config.png │ ├── everest_adv_config_edit.png │ ├── everest_choose_db_type.png │ ├── everest_components_page.png │ ├── everest_edit_ellipsis.png │ ├── everest_endpoint_added.png │ ├── everest_endpoint_delete.png │ ├── everest_endpoint_edit.png │ ├── everest_multinamespaces.png │ ├── everest_provisioned_db.png │ ├── everest_select_endpoint.png │ ├── everest_sharded_cluster.png │ ├── everest_user-auth-login.png │ ├── everest_user-auth-token.png │ ├── import_complete_mongodb.png │ ├── import_complete_mysql.png │ ├── importers_pg_file_path.png │ ├── key_value_load_balancer.png │ ├── max_three_schedules_pg.png │ ├── monitoring_db_cluster.png │ ├── on_demand_limitation_2.png │ ├── pod_scheduling_policies.png │ ├── rbac_backup_permissions.png │ ├── remove_edit_db_wizard.png │ ├── resources_page_sharding.png │ ├── resources_proxies_page.png │ ├── schedule_limitation_2.png │ ├── show_operators_upgrades.png │ ├── split-horizon-policies.png │ ├── split-horizon_policies.png │ ├── support_tickets_white.png │ ├── CRD_upgrade_confirmation.png │ ├── DB_summary_dashbaord_PMM.png │ ├── PMM_databases_overview_DB.png │ ├── create_new_db_from_backup.png │ ├── default_pod_affinity_rule.png │ ├── del_load_balancer_config.png │ ├── domains_and_IP_addresses.png │ ├── everest_disable_endpoint.png │ ├── everest_multi-namespaces.png │ ├── everest_scheduled_backups.png │ ├── importers_mongo_file_path.png │ ├── importers_mysql_file_path.png │ ├── load_balancer_config_page.png │ ├── operator_upgrade_pending.png │ ├── rbac_cluster_permissions.png │ ├── rbac_storages_permissions.png │ ├── split-horizon_config_page.png │ ├── upgrade_crd_confirmation.png │ ├── upgrade_database_versions.png │ ├── CRD_upgrade_confirmation_1.png │ ├── Split_horizon_DNS_toggle_on.png │ ├── components_page_diagram_view.png │ ├── create_config_load_balancer.png │ ├── create_config_split-horizon.png │ ├── dev_role_db_cluster_update.png │ ├── everest_adv_config_ip_source.png │ ├── everest_resources_allocated.png │ ├── everest_scale_horizontally.png │ ├── everest_scale_vertically_up.png │ ├── exposure_method_loadbalancer.png │ ├── import_complete_postgresql.png │ ├── loadbalancer_add_new_config.png │ ├── mongodb_s3_details_importers.png │ ├── operators_upgrade_dependency.png │ ├── rbac_monitoring_permissions.png │ ├── readonly_role_overview_page.png │ ├── split-horizon-edit-policies.png │ ├── split-horizon_create_config.png │ ├── split-horizon_dns_eye_icon.png │ ├── CRD_upgrade_confirmation_1.png │ ├── assign_policy_existing_cluster.png │ ├── default_pod_anti_affinity_rule.png │ ├── importers_mysql_db_credentials.png │ ├── upgrade_operator_confirmation.png │ ├── upgrade_operators_confirmation.png │ ├── view_split_horizon_dns_domain.png │ ├── PMM_databases_overview_dashboard.png │ ├── assign_split_horizon_dns_policy.png │ ├── delete_loadbalancer_configuration.png │ ├── edit_loadbalancer_configuration.png │ ├── importers_mongodb_db_credentials.png │ ├── plit-horizon-edit configuration.png │ ├── split-horizon-delete config_box.png │ ├── Screenshot 2024-10-18 at 3.28.32 PM.png │ ├── enable_monitoring_existing_cluster.png │ ├── pmm_overview_dashboard_engine_type.png │ ├── split-horizon-delete configuration.png │ ├── remove_db_wizard_edit_resource_widget.png │ ├── new_created_load_balancer_configurations.png │ ├── Percona-Everest-social-media-sharings-cover.jpg │ ├── split-horizon-delete_configuration_confirmation.png │ ├── percona-favicon.svg │ └── percona-logo.svg ├── img │ └── loading.gif ├── fonts │ ├── Poppins-Italic.ttf │ ├── Poppins-Light.ttf │ ├── Poppins-Medium.ttf │ ├── Poppins-Regular.ttf │ ├── Poppins-SemiBold.ttf │ ├── Poppins-LightItalic.ttf │ ├── Poppins-MediumItalic.ttf │ └── Poppins-SemiBoldItalic.ttf ├── everest_components_page.png ├── js │ ├── consent.js │ ├── tables.js │ ├── table.number.js │ ├── version-select.js │ └── promptremover.js ├── release-notes │ ├── Percona-Everest-1.8.1-(2025-08-11).md │ ├── Percona Everest 0.9.1 (2024-04-02).md │ ├── Percona-Everest-0.9.1-(2024-04-02).md │ ├── Percona-Everest-1.1.1-(2024-08-22).md │ ├── Percona-Everest-1.0.1-(2024-07-08).md │ ├── release_notes_index.md │ ├── Percona-Everest-0.7.0-(2024-01-31).md │ ├── Percona-Everest-0.10.1-(2024-05-23).md │ ├── Percona-Everest-0.5.0-(2023-11-28).md │ └── Percona-Everest-0.6.0-(2024-01-11).md ├── backups_and_restore │ ├── AboutBackups.md │ ├── createBackups │ │ ├── backup_storage │ │ │ ├── EditStorage.md │ │ │ └── CreateStorage.md │ │ ├── EnablePITR.md │ │ └── CreateOnDemand.md │ ├── backup_importers_rbac.md │ └── RestoreBackup.md ├── upgrade │ ├── mongodb_major_upgrades.md │ └── upgrade_operators.md ├── assets │ ├── everest-mark.svg │ └── everest-fav.svg ├── networking │ ├── split-horizon_dns.md │ ├── split-horizon_create_CA_certs.md │ ├── load_balancer.md │ └── split-horizon_everest_CRD.md ├── API.md ├── security │ ├── session_management.md │ └── tls_setup.md ├── administer │ ├── rbac_pod_scheduling.md │ ├── use_cases.md │ ├── manage_namespaces.md │ ├── apply_policies_cluster.md │ └── default_policies.md ├── install │ ├── supported_operators_k8s.md │ ├── prerequisites.md │ └── install_everestctl.md ├── index.md ├── features.md ├── use │ ├── scaling.md │ ├── API_rate_limit.md │ ├── manual_storage_scaling.md │ ├── multi-namespaces.md │ └── db_engine_config.md ├── troubleshoot │ └── faq.md ├── get-help.md ├── api_rbac.md └── contribute.md ├── .gitignore ├── overrides ├── .icons │ ├── edit_page.png │ ├── file-document-edit-outline.svg │ ├── file-eye-outline.svg │ └── percona │ │ └── logo.svg ├── 404.html └── partials │ ├── edit.html │ ├── copyright.html │ ├── banner.html │ └── header.html ├── mkdocs-pdf.yml ├── tools ├── bin │ ├── remove-unused-images.sh │ ├── make_glossary.pl │ └── check-duplicated-storages.sh └── Dockerfile.build ├── mkdocs.yml ├── requirements.txt ├── .github ├── workflows │ └── build.yml └── ISSUE_TEMPLATE │ ├── everest-doc-template.md │ └── everest--version-.md └── variables.yml /docs/api/index.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/reference/index.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/reference/glossary.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/api/contribute/contribute.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | site/ 3 | -------------------------------------------------------------------------------- /docs/reference/acknowledgements.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/css/nocopy.css: -------------------------------------------------------------------------------- 1 | .highlight.no-copy .md-clipboard { display: none; } -------------------------------------------------------------------------------- /docs/images/PITR.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/PITR.PNG -------------------------------------------------------------------------------- /docs/images/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/edit.png -------------------------------------------------------------------------------- /docs/images/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/image.png -------------------------------------------------------------------------------- /docs/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/img/loading.gif -------------------------------------------------------------------------------- /docs/images/everest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest.png -------------------------------------------------------------------------------- /docs/images/image-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/image-1.png -------------------------------------------------------------------------------- /docs/images/okta_url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/okta_url.png -------------------------------------------------------------------------------- /docs/images/scr_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/scr_rule.png -------------------------------------------------------------------------------- /docs/images/sharding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/sharding.png -------------------------------------------------------------------------------- /docs/images/Help_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/Help_icon.png -------------------------------------------------------------------------------- /docs/images/PITR_Mongo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/PITR_Mongo.png -------------------------------------------------------------------------------- /docs/images/backup_RN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/backup_RN.png -------------------------------------------------------------------------------- /docs/images/create_db.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/create_db.png -------------------------------------------------------------------------------- /docs/images/restore_RN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/restore_RN.png -------------------------------------------------------------------------------- /docs/images/scr_claim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/scr_claim.png -------------------------------------------------------------------------------- /docs/images/scr_policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/scr_policy.png -------------------------------------------------------------------------------- /docs/images/scr_scope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/scr_scope.png -------------------------------------------------------------------------------- /docs/images/sso_login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/sso_login.png -------------------------------------------------------------------------------- /docs/images/storage_RN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/storage_RN.png -------------------------------------------------------------------------------- /docs/fonts/Poppins-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/fonts/Poppins-Italic.ttf -------------------------------------------------------------------------------- /docs/fonts/Poppins-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/fonts/Poppins-Light.ttf -------------------------------------------------------------------------------- /docs/fonts/Poppins-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/fonts/Poppins-Medium.ttf -------------------------------------------------------------------------------- /docs/images/Cluster_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/Cluster_list.png -------------------------------------------------------------------------------- /docs/images/DB_Overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/DB_Overview.png -------------------------------------------------------------------------------- /docs/images/Edit_policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/Edit_policy.png -------------------------------------------------------------------------------- /docs/images/actions_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/actions_icon.png -------------------------------------------------------------------------------- /docs/images/assign_policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/assign_policy.png -------------------------------------------------------------------------------- /docs/images/cluster_MN_RN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/cluster_MN_RN.png -------------------------------------------------------------------------------- /docs/images/database_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/database_view.png -------------------------------------------------------------------------------- /docs/images/disabled_bell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/disabled_bell.png -------------------------------------------------------------------------------- /docs/images/everest_site.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_site.png -------------------------------------------------------------------------------- /docs/images/policies_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/policies_page.png -------------------------------------------------------------------------------- /docs/images/restore_pitr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/restore_pitr.png -------------------------------------------------------------------------------- /docs/images/settings_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/settings_icon.png -------------------------------------------------------------------------------- /docs/images/source_range.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/source_range.png -------------------------------------------------------------------------------- /docs/fonts/Poppins-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/fonts/Poppins-Regular.ttf -------------------------------------------------------------------------------- /docs/fonts/Poppins-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/fonts/Poppins-SemiBold.ttf -------------------------------------------------------------------------------- /docs/images/INVENTORY_ICON.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/INVENTORY_ICON.png -------------------------------------------------------------------------------- /docs/images/arrow-downward.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/arrow-downward.ico -------------------------------------------------------------------------------- /docs/images/backup_storages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/backup_storages.png -------------------------------------------------------------------------------- /docs/images/components_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/components_page.png -------------------------------------------------------------------------------- /docs/images/create_affinity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/create_affinity.png -------------------------------------------------------------------------------- /docs/images/databases_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/databases_icon.png -------------------------------------------------------------------------------- /docs/images/delete_policies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/delete_policies.png -------------------------------------------------------------------------------- /docs/images/edit_db_cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/edit_db_cluster.png -------------------------------------------------------------------------------- /docs/images/everest_backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_backup.png -------------------------------------------------------------------------------- /docs/images/import_complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/import_complete.png -------------------------------------------------------------------------------- /docs/images/okta_client-id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/okta_client-id.png -------------------------------------------------------------------------------- /docs/images/percona-favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/percona-favicon.ico -------------------------------------------------------------------------------- /docs/images/percona-favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/percona-favicon.png -------------------------------------------------------------------------------- /docs/images/pg_dataimporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/pg_dataimporter.png -------------------------------------------------------------------------------- /docs/images/pg_limitation_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/pg_limitation_2.png -------------------------------------------------------------------------------- /docs/images/sharding_status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/sharding_status.png -------------------------------------------------------------------------------- /docs/images/support_tickets.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/support_tickets.PNG -------------------------------------------------------------------------------- /overrides/.icons/edit_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/overrides/.icons/edit_page.png -------------------------------------------------------------------------------- /docs/everest_components_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/everest_components_page.png -------------------------------------------------------------------------------- /docs/fonts/Poppins-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/fonts/Poppins-LightItalic.ttf -------------------------------------------------------------------------------- /docs/images/Backups_DB_wizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/Backups_DB_wizard.png -------------------------------------------------------------------------------- /docs/images/OKTA_admin_console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/OKTA_admin_console.png -------------------------------------------------------------------------------- /docs/images/Percona_Logo_Color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/Percona_Logo_Color.png -------------------------------------------------------------------------------- /docs/images/PostreSQL_Backups.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/PostreSQL_Backups.png -------------------------------------------------------------------------------- /docs/images/add_rule_affinity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/add_rule_affinity.png -------------------------------------------------------------------------------- /docs/images/advanced_configs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/advanced_configs.png -------------------------------------------------------------------------------- /docs/images/affinity_add_rules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/affinity_add_rules.png -------------------------------------------------------------------------------- /docs/images/change_PSP_fromA_B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/change_PSP_fromA_B.png -------------------------------------------------------------------------------- /docs/images/database_backups.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/database_backups.png -------------------------------------------------------------------------------- /docs/images/database_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/database_details.png -------------------------------------------------------------------------------- /docs/images/database_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/database_overview.png -------------------------------------------------------------------------------- /docs/images/database_restores.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/database_restores.png -------------------------------------------------------------------------------- /docs/images/database_upgrade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/database_upgrade.png -------------------------------------------------------------------------------- /docs/images/datbase_view_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/datbase_view_page.png -------------------------------------------------------------------------------- /docs/images/display_db_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/display_db_details.png -------------------------------------------------------------------------------- /docs/images/everest_adv_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_adv_config.png -------------------------------------------------------------------------------- /docs/images/everest_db_scaling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_db_scaling.png -------------------------------------------------------------------------------- /docs/images/pg_default_policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/pg_default_policy.png -------------------------------------------------------------------------------- /docs/images/post_upgrade_tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/post_upgrade_tasks.png -------------------------------------------------------------------------------- /docs/images/proxies_resources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/proxies_resources.png -------------------------------------------------------------------------------- /docs/images/psmdb_dataimporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/psmdb_dataimporter.png -------------------------------------------------------------------------------- /docs/images/pxc_dataimporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/pxc_dataimporter.png -------------------------------------------------------------------------------- /docs/images/rbac_readonly_ns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/rbac_readonly_ns.png -------------------------------------------------------------------------------- /docs/images/rbac_readonly_role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/rbac_readonly_role.png -------------------------------------------------------------------------------- /docs/images/resources_routers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/resources_routers.png -------------------------------------------------------------------------------- /docs/images/schedule_backups.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/schedule_backups.png -------------------------------------------------------------------------------- /docs/images/sharding_routers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/sharding_routers.png -------------------------------------------------------------------------------- /docs/images/upgrade_CRversion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/upgrade_CRversion.png -------------------------------------------------------------------------------- /docs/images/upgrade_dependency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/upgrade_dependency.png -------------------------------------------------------------------------------- /docs/images/upgrade_operator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/upgrade_operator.png -------------------------------------------------------------------------------- /docs/fonts/Poppins-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/fonts/Poppins-MediumItalic.ttf -------------------------------------------------------------------------------- /docs/images/Percona_Everest_docs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/Percona_Everest_docs.png -------------------------------------------------------------------------------- /docs/images/create_db_from_pitr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/create_db_from_pitr.png -------------------------------------------------------------------------------- /docs/images/db_operator_upgrade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/db_operator_upgrade.png -------------------------------------------------------------------------------- /docs/images/default_mongo_policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/default_mongo_policy.png -------------------------------------------------------------------------------- /docs/images/dots-three-vertical.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/dots-three-vertical.ico -------------------------------------------------------------------------------- /docs/images/dots-three-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/dots-three-vertical.png -------------------------------------------------------------------------------- /docs/images/edit_backup_storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/edit_backup_storage.png -------------------------------------------------------------------------------- /docs/images/edit_pod_scheduling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/edit_pod_scheduling.png -------------------------------------------------------------------------------- /docs/images/everest_add_endpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_add_endpoint.png -------------------------------------------------------------------------------- /docs/images/everest_db_provision.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_db_provision.png -------------------------------------------------------------------------------- /docs/images/everest_edit_cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_edit_cluster.png -------------------------------------------------------------------------------- /docs/images/mysql_default_policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/mysql_default_policy.png -------------------------------------------------------------------------------- /docs/images/pmm_dashboards_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/pmm_dashboards_page.png -------------------------------------------------------------------------------- /docs/images/resources_pgbouncer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/resources_pgbouncer.png -------------------------------------------------------------------------------- /docs/images/restore_from_backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/restore_from_backup.png -------------------------------------------------------------------------------- /docs/images/sso_aap_integration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/sso_aap_integration.png -------------------------------------------------------------------------------- /docs/images/upgrade_buttons_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/upgrade_buttons_page.png -------------------------------------------------------------------------------- /docs/fonts/Poppins-SemiBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/fonts/Poppins-SemiBoldItalic.ttf -------------------------------------------------------------------------------- /docs/images/change_PSP_for_cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/change_PSP_for_cluster.png -------------------------------------------------------------------------------- /docs/images/check_pending_actions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/check_pending_actions.png -------------------------------------------------------------------------------- /docs/images/configure_node_affinity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/configure_node_affinity.png -------------------------------------------------------------------------------- /docs/images/create_backup_storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/create_backup_storage.png -------------------------------------------------------------------------------- /docs/images/database_view_actions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/database_view_actions.png -------------------------------------------------------------------------------- /docs/images/dev_role_monitor_read.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/dev_role_monitor_read.png -------------------------------------------------------------------------------- /docs/images/dev_role_storage_read.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/dev_role_storage_read.png -------------------------------------------------------------------------------- /docs/images/edit_resources_toplogy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/edit_resources_toplogy.png -------------------------------------------------------------------------------- /docs/images/edit_storage_capacity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/edit_storage_capacity.png -------------------------------------------------------------------------------- /docs/images/enable_advanced_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/enable_advanced_config.png -------------------------------------------------------------------------------- /docs/images/everest_adv_config_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_adv_config_edit.png -------------------------------------------------------------------------------- /docs/images/everest_choose_db_type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_choose_db_type.png -------------------------------------------------------------------------------- /docs/images/everest_components_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_components_page.png -------------------------------------------------------------------------------- /docs/images/everest_edit_ellipsis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_edit_ellipsis.png -------------------------------------------------------------------------------- /docs/images/everest_endpoint_added.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_endpoint_added.png -------------------------------------------------------------------------------- /docs/images/everest_endpoint_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_endpoint_delete.png -------------------------------------------------------------------------------- /docs/images/everest_endpoint_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_endpoint_edit.png -------------------------------------------------------------------------------- /docs/images/everest_multinamespaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_multinamespaces.png -------------------------------------------------------------------------------- /docs/images/everest_provisioned_db.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_provisioned_db.png -------------------------------------------------------------------------------- /docs/images/everest_select_endpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_select_endpoint.png -------------------------------------------------------------------------------- /docs/images/everest_sharded_cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_sharded_cluster.png -------------------------------------------------------------------------------- /docs/images/everest_user-auth-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_user-auth-login.png -------------------------------------------------------------------------------- /docs/images/everest_user-auth-token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_user-auth-token.png -------------------------------------------------------------------------------- /docs/images/import_complete_mongodb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/import_complete_mongodb.png -------------------------------------------------------------------------------- /docs/images/import_complete_mysql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/import_complete_mysql.png -------------------------------------------------------------------------------- /docs/images/importers_pg_file_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/importers_pg_file_path.png -------------------------------------------------------------------------------- /docs/images/key_value_load_balancer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/key_value_load_balancer.png -------------------------------------------------------------------------------- /docs/images/max_three_schedules_pg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/max_three_schedules_pg.png -------------------------------------------------------------------------------- /docs/images/monitoring_db_cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/monitoring_db_cluster.png -------------------------------------------------------------------------------- /docs/images/on_demand_limitation_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/on_demand_limitation_2.png -------------------------------------------------------------------------------- /docs/images/pod_scheduling_policies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/pod_scheduling_policies.png -------------------------------------------------------------------------------- /docs/images/rbac_backup_permissions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/rbac_backup_permissions.png -------------------------------------------------------------------------------- /docs/images/remove_edit_db_wizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/remove_edit_db_wizard.png -------------------------------------------------------------------------------- /docs/images/resources_page_sharding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/resources_page_sharding.png -------------------------------------------------------------------------------- /docs/images/resources_proxies_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/resources_proxies_page.png -------------------------------------------------------------------------------- /docs/images/schedule_limitation_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/schedule_limitation_2.png -------------------------------------------------------------------------------- /docs/images/show_operators_upgrades.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/show_operators_upgrades.png -------------------------------------------------------------------------------- /docs/images/split-horizon-policies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/split-horizon-policies.png -------------------------------------------------------------------------------- /docs/images/split-horizon_policies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/split-horizon_policies.png -------------------------------------------------------------------------------- /docs/images/support_tickets_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/support_tickets_white.png -------------------------------------------------------------------------------- /docs/images/CRD_upgrade_confirmation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/CRD_upgrade_confirmation.png -------------------------------------------------------------------------------- /docs/images/DB_summary_dashbaord_PMM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/DB_summary_dashbaord_PMM.png -------------------------------------------------------------------------------- /docs/images/PMM_databases_overview_DB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/PMM_databases_overview_DB.png -------------------------------------------------------------------------------- /docs/images/create_new_db_from_backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/create_new_db_from_backup.png -------------------------------------------------------------------------------- /docs/images/default_pod_affinity_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/default_pod_affinity_rule.png -------------------------------------------------------------------------------- /docs/images/del_load_balancer_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/del_load_balancer_config.png -------------------------------------------------------------------------------- /docs/images/domains_and_IP_addresses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/domains_and_IP_addresses.png -------------------------------------------------------------------------------- /docs/images/everest_disable_endpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_disable_endpoint.png -------------------------------------------------------------------------------- /docs/images/everest_multi-namespaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_multi-namespaces.png -------------------------------------------------------------------------------- /docs/images/everest_scheduled_backups.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_scheduled_backups.png -------------------------------------------------------------------------------- /docs/images/importers_mongo_file_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/importers_mongo_file_path.png -------------------------------------------------------------------------------- /docs/images/importers_mysql_file_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/importers_mysql_file_path.png -------------------------------------------------------------------------------- /docs/images/load_balancer_config_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/load_balancer_config_page.png -------------------------------------------------------------------------------- /docs/images/operator_upgrade_pending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/operator_upgrade_pending.png -------------------------------------------------------------------------------- /docs/images/rbac_cluster_permissions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/rbac_cluster_permissions.png -------------------------------------------------------------------------------- /docs/images/rbac_storages_permissions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/rbac_storages_permissions.png -------------------------------------------------------------------------------- /docs/images/split-horizon_config_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/split-horizon_config_page.png -------------------------------------------------------------------------------- /docs/images/upgrade_crd_confirmation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/upgrade_crd_confirmation.png -------------------------------------------------------------------------------- /docs/images/upgrade_database_versions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/upgrade_database_versions.png -------------------------------------------------------------------------------- /docs/images/CRD_upgrade_confirmation_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/CRD_upgrade_confirmation_1.png -------------------------------------------------------------------------------- /docs/images/Split_horizon_DNS_toggle_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/Split_horizon_DNS_toggle_on.png -------------------------------------------------------------------------------- /docs/images/components_page_diagram_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/components_page_diagram_view.png -------------------------------------------------------------------------------- /docs/images/create_config_load_balancer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/create_config_load_balancer.png -------------------------------------------------------------------------------- /docs/images/create_config_split-horizon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/create_config_split-horizon.png -------------------------------------------------------------------------------- /docs/images/dev_role_db_cluster_update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/dev_role_db_cluster_update.png -------------------------------------------------------------------------------- /docs/images/everest_adv_config_ip_source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_adv_config_ip_source.png -------------------------------------------------------------------------------- /docs/images/everest_resources_allocated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_resources_allocated.png -------------------------------------------------------------------------------- /docs/images/everest_scale_horizontally.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_scale_horizontally.png -------------------------------------------------------------------------------- /docs/images/everest_scale_vertically_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/everest_scale_vertically_up.png -------------------------------------------------------------------------------- /docs/images/exposure_method_loadbalancer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/exposure_method_loadbalancer.png -------------------------------------------------------------------------------- /docs/images/import_complete_postgresql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/import_complete_postgresql.png -------------------------------------------------------------------------------- /docs/images/loadbalancer_add_new_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/loadbalancer_add_new_config.png -------------------------------------------------------------------------------- /docs/images/mongodb_s3_details_importers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/mongodb_s3_details_importers.png -------------------------------------------------------------------------------- /docs/images/operators_upgrade_dependency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/operators_upgrade_dependency.png -------------------------------------------------------------------------------- /docs/images/rbac_monitoring_permissions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/rbac_monitoring_permissions.png -------------------------------------------------------------------------------- /docs/images/readonly_role_overview_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/readonly_role_overview_page.png -------------------------------------------------------------------------------- /docs/images/split-horizon-edit-policies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/split-horizon-edit-policies.png -------------------------------------------------------------------------------- /docs/images/split-horizon_create_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/split-horizon_create_config.png -------------------------------------------------------------------------------- /docs/images/split-horizon_dns_eye_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/split-horizon_dns_eye_icon.png -------------------------------------------------------------------------------- /docs/css/version-select.css: -------------------------------------------------------------------------------- 1 | @media only screen and (max-width:76.1875em) { 2 | #version-selector { 3 | padding: .6rem .8rem; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /docs/images/ CRD_upgrade_confirmation_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/ CRD_upgrade_confirmation_1.png -------------------------------------------------------------------------------- /docs/images/assign_policy_existing_cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/assign_policy_existing_cluster.png -------------------------------------------------------------------------------- /docs/images/default_pod_anti_affinity_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/default_pod_anti_affinity_rule.png -------------------------------------------------------------------------------- /docs/images/importers_mysql_db_credentials.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/importers_mysql_db_credentials.png -------------------------------------------------------------------------------- /docs/images/upgrade_operator_confirmation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/upgrade_operator_confirmation.png -------------------------------------------------------------------------------- /docs/images/upgrade_operators_confirmation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/upgrade_operators_confirmation.png -------------------------------------------------------------------------------- /docs/images/view_split_horizon_dns_domain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/view_split_horizon_dns_domain.png -------------------------------------------------------------------------------- /docs/images/PMM_databases_overview_dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/PMM_databases_overview_dashboard.png -------------------------------------------------------------------------------- /docs/images/assign_split_horizon_dns_policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/assign_split_horizon_dns_policy.png -------------------------------------------------------------------------------- /docs/images/delete_loadbalancer_configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/delete_loadbalancer_configuration.png -------------------------------------------------------------------------------- /docs/images/edit_loadbalancer_configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/edit_loadbalancer_configuration.png -------------------------------------------------------------------------------- /docs/images/importers_mongodb_db_credentials.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/importers_mongodb_db_credentials.png -------------------------------------------------------------------------------- /docs/images/plit-horizon-edit configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/plit-horizon-edit configuration.png -------------------------------------------------------------------------------- /docs/images/split-horizon-delete config_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/split-horizon-delete config_box.png -------------------------------------------------------------------------------- /mkdocs-pdf.yml: -------------------------------------------------------------------------------- 1 | # MkDocs configuration for PDF output 2 | # Usage: ENABLE_PDF_EXPORT=1 mkdocs build -f mkdocs-pdf.yml 3 | INHERIT: mkdocs-base.yml 4 | -------------------------------------------------------------------------------- /docs/images/Screenshot 2024-10-18 at 3.28.32 PM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/Screenshot 2024-10-18 at 3.28.32 PM.png -------------------------------------------------------------------------------- /docs/images/enable_monitoring_existing_cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/enable_monitoring_existing_cluster.png -------------------------------------------------------------------------------- /docs/images/pmm_overview_dashboard_engine_type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/pmm_overview_dashboard_engine_type.png -------------------------------------------------------------------------------- /docs/images/split-horizon-delete configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/split-horizon-delete configuration.png -------------------------------------------------------------------------------- /overrides/404.html: -------------------------------------------------------------------------------- 1 | {#- 2 | A custom 404 page 3 | -#} 4 | {% extends "main.html" %} 5 | {% block content %} 6 |

Page not found

7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /docs/images/remove_db_wizard_edit_resource_widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/remove_db_wizard_edit_resource_widget.png -------------------------------------------------------------------------------- /docs/images/new_created_load_balancer_configurations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/new_created_load_balancer_configurations.png -------------------------------------------------------------------------------- /tools/bin/remove-unused-images.sh: -------------------------------------------------------------------------------- 1 | for i in $(ls -1 docs/images); do 2 | grep -r --include "*.md" --include "mkdocs*.yml" -m 1 -q $i . || rm docs/images/$i 3 | done -------------------------------------------------------------------------------- /docs/images/Percona-Everest-social-media-sharings-cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/Percona-Everest-social-media-sharings-cover.jpg -------------------------------------------------------------------------------- /docs/images/split-horizon-delete_configuration_confirmation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/everest-doc/HEAD/docs/images/split-horizon-delete_configuration_confirmation.png -------------------------------------------------------------------------------- /docs/js/consent.js: -------------------------------------------------------------------------------- 1 | var consent = __md_get("__consent") 2 | if (consent && consent.custom) { 3 | /* The user accepted the cookie */ 4 | } else { 5 | /* The user rejected the cookie */ 6 | } 7 | -------------------------------------------------------------------------------- /docs/js/tables.js: -------------------------------------------------------------------------------- 1 | document$.subscribe(function() { 2 | var tables = document.querySelectorAll("article table") 3 | tables.forEach(function(table) { 4 | new Tablesort(table) 5 | }) 6 | }) -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- 1 | # MkDocs configuration for default Material-themed build 2 | 3 | INHERIT: mkdocs-base.yml 4 | 5 | 6 | site_url: https://docs.percona.com/everest/ 7 | 8 | 9 | #Google Analytics configuration 10 | extra: 11 | analytics: 12 | provider: google 13 | property: G-J4J70BNH0G 14 | -------------------------------------------------------------------------------- /docs/reference/copyright.md: -------------------------------------------------------------------------------- 1 | # Copyright and licensing information 2 | 3 | ## Documentation licensing 4 | 5 | Percona Everest documentation is (C)2009-2025 Percona LLC and/or its affiliates and is distributed under the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/). -------------------------------------------------------------------------------- /overrides/.icons/file-document-edit-outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | Markdown 2 | mkdocs 3 | mkdocs-macros-plugin 4 | mkdocs-exclude 5 | markdown-include 6 | mkdocs-material 7 | mkdocs-with-pdf 8 | mkdocs-git-revision-date-plugin 9 | typing-extensions 10 | mkdocs-material-extensions 11 | mkdocs-bootstrap-tables-plugin 12 | mkdocs-htmlproofer-plugin 13 | mkdocs-meta-descriptions-plugin 14 | mike 15 | mkdocs-git-committers-plugin-2 16 | -------------------------------------------------------------------------------- /overrides/.icons/file-eye-outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /overrides/partials/edit.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 | {% set icon = config.theme.icon.edit or "material/file-edit-outline" %} 6 | {% include ".icons/" ~ icon ~ ".svg" %} 7 | 8 | Edit this page on GitHub 9 | 10 |
11 |
-------------------------------------------------------------------------------- /docs/reference/AI_disclaimer_for_docs.md: -------------------------------------------------------------------------------- 1 | # Use of Artificial Intelligence (AI) in Percona Everest documentation 2 | 3 | 4 | The writers of this documentation use generative AI in content creation, language refinement, and formatting optimization, especially in the new additions to the documentation. 5 | 6 | We take full responsibility for reviewing and refining all content to ensure it is accurate, clear, and consistent, regardless of how it was created. Our committed team carefully reviews every piece to maintain Percona's high standards. -------------------------------------------------------------------------------- /overrides/.icons/percona/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /overrides/partials/copyright.html: -------------------------------------------------------------------------------- 1 | {#- 2 | This file was automatically generated - do not edit 3 | -#} 4 | -------------------------------------------------------------------------------- /docs/images/percona-favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tools/Dockerfile.build: -------------------------------------------------------------------------------- 1 | FROM ubuntu:20.04 2 | 3 | RUN apt-get update 4 | RUN apt-get install -y software-properties-common 5 | RUN add-apt-repository universe && apt-get update 6 | RUN apt-get install -y git wget unzip python3 python3-pip python3-dev fontconfig fonts-noto fonts-inconsolata python3-cairocffi 7 | 8 | COPY requirements.txt ./requirements.txt 9 | RUN pip3 install -r requirements.txt 10 | 11 | RUN mkdir -p /usr/share/fonts/chivo && cd /usr/share/fonts/chivo && wget -O Chivo.zip https://fonts.google.com/download?family=Chivo && unzip Chivo.zip 12 | RUN rm /usr/share/fonts/chivo/Chivo.zip && fc-cache -f && apt-get clean 13 | 14 | WORKDIR /docs 15 | 16 | EXPOSE 8000 17 | CMD ["mkdocs","build"] 18 | -------------------------------------------------------------------------------- /docs/release-notes/Percona-Everest-1.8.1-(2025-08-11).md: -------------------------------------------------------------------------------- 1 | # What's new in Percona Everest 1.8.1 2 | 3 | ➡️ **New to Percona Everest?** Get started with our [Quickstart Guide](https://docs.percona.com/everest/quick-install.html). 4 | 5 | 6 | ## Fixed issue 7 | 8 | [EVEREST-2210](https://perconadev.atlassian.net/browse/EVEREST-2210): We have resolved an issue that caused Single Sign-On (SSO) authentication with Microsoft Entra ID to fail after upgrading to Percona Everest 1.8.0. 9 | 10 | ## 🚀 Ready to Upgrade? 11 | 12 | Upgrade to **Percona Everest 1.8.1** to access these new features and improvements. 13 | 14 | 📖 Explore our [Upgrade section](https://docs.percona.com/everest/upgrade/upgrade_with_helm.html) for the upgrade steps. 15 | -------------------------------------------------------------------------------- /docs/backups_and_restore/AboutBackups.md: -------------------------------------------------------------------------------- 1 | # About backups 2 | 3 | ## Why it’s important to create backups 4 | 5 | Databases (DBs) may get damaged due to a variety of reasons, including disk crashes, power outages, software errors, or even virus attacks. 6 | 7 | To ensure that you can recover data in such events, it is critical to back up your databases. With Everest, you can do this with zero downtime and minimal performance impact. 8 | 9 | ## Supported setups 10 | 11 | Everest enables you to create and restore on-demand, scheduled and Point-in-Time-Recovery (PITR) backups. 12 | 13 | ## Start here 14 | 15 | [Prepare a backup storage location :material-arrow-right:](../backups_and_restore/createBackups/backup_storage/CreateStorage.md){.md-button} -------------------------------------------------------------------------------- /docs/css/extra.css: -------------------------------------------------------------------------------- 1 | @media print { 2 | /* Adjusts positioning of admonition icon */ 3 | .md-typeset :is(.admonition-title,summary):before { 4 | top: 0.6rem; 5 | left: 0.6rem; 6 | } 7 | } 8 | 9 | .md-sidebar__inner { 10 | font-size: 0.65rem; /* Font size */ 11 | line-height: 1.6; 12 | } 13 | 14 | .edit-page-link { 15 | white-space: nowrap; 16 | display: inline-flex; 17 | align-items: center; 18 | gap: 0.5em; 19 | font-size: 1.2rem; 20 | font-weight: normal; 21 | color: var(--md-typeset-a-color); 22 | text-decoration: underline; 23 | } 24 | 25 | .edit-page-icon svg { 26 | width: 1.40em; 27 | height: 1.40em; 28 | fill: currentColor; 29 | vertical-align: middle; 30 | } 31 | -------------------------------------------------------------------------------- /docs/js/table.number.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var cleanNumber = function(i) { 3 | return i.replace(/[^\-?0-9.]/g, ''); 4 | }, 5 | 6 | compareNumber = function(a, b) { 7 | a = parseFloat(a); 8 | b = parseFloat(b); 9 | 10 | a = isNaN(a) ? 0 : a; 11 | b = isNaN(b) ? 0 : b; 12 | 13 | return a - b; 14 | }; 15 | 16 | Tablesort.extend('number', function(item) { 17 | return item.match(/^[-+]?[£\x24Û¢´€]?\d+\s*([,\.]\d{0,2})/) || // Prefixed currency 18 | item.match(/^[-+]?\d+\s*([,\.]\d{0,2})?[£\x24Û¢´€]/) || // Suffixed currency 19 | item.match(/^[-+]?(\d)*-?([,\.]){0,1}-?(\d)+([E,e][\-+][\d]+)?%?$/); // Number 20 | }, function(a, b) { 21 | a = cleanNumber(a); 22 | b = cleanNumber(b); 23 | 24 | return compareNumber(b, a); 25 | }); 26 | }()); -------------------------------------------------------------------------------- /tools/bin/make_glossary.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl -w 2 | # Write a md glossary file from stdin tsv file containing: 3 | # keyword[,keyword]Definition 4 | # Master copy: https://docs.google.com/spreadsheets/d/1KUL-dcfBrR3bWsFUcugy5SsJcR5ot-P4Bt27z3ka0x0/edit#gid=0 5 | # Export this sheet as tab-separated values into source/_res/glossary.tsv 6 | # Usage: 7 | # sort _resources/bin/glossary.tsv | _resources/bin/make_glossary_md.pl > docs/details/glossary.md 8 | 9 | use File::Basename; 10 | my $prog = basename($0); 11 | 12 | print "\n\n"; 13 | print "# Glossary\n\n"; 14 | 15 | while () { 16 | chomp; 17 | my @parts = split("\t"); 18 | my $bm = ""; 19 | 20 | foreach my $kw (split (",",$parts[0])) { 21 | $bm = $kw; 22 | $bm =~ s/([[:upper:]])/lc $1/eg; 23 | $bm =~ s/([[:space:]])/\-/g; 24 | print "## $kw\n\n"; 25 | } 26 | print "$parts[1]\n\n"; 27 | } 28 | -------------------------------------------------------------------------------- /docs/images/percona-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/css/rating.css: -------------------------------------------------------------------------------- 1 | .rating-widget:hover, 2 | #feedback-form:hover { 3 | box-shadow: 4 | 0px 1px 10px 0px rgba(0, 0, 0, 0.12), 5 | 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 6 | 0px 2px 4px -1px rgba(0, 0, 0, 0.20); 7 | } 8 | 9 | /* Title color */ 10 | .rating-widget .rating-title { 11 | color: var(--md-typeset-a-color, #0E5FB5); 12 | } 13 | 14 | /* Dark mode title */ 15 | @media (prefers-color-scheme: dark) { 16 | .rating-widget .rating-title { 17 | color: var(--md-typeset-a-color, #93C7FF) !important; 18 | } 19 | } 20 | 21 | /* Feedback status */ 22 | #feedback-status { 23 | color: var(--md-typeset-a-color); 24 | } 25 | 26 | @media (prefers-color-scheme: dark) { 27 | #feedback-status { 28 | color: var(--md-typeset-a-color, #93C7FF) !important; 29 | } 30 | } 31 | 32 | /* Light mode: Send button */ 33 | #submit-feedback { 34 | color: white !important; 35 | } 36 | 37 | /* Dark mode: Send button */ 38 | @media (prefers-color-scheme: dark) { 39 | #submit-feedback { 40 | background-color: var(--md-typeset-a-color, #93C7FF) !important; 41 | color: #999 !important; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /docs/release-notes/Percona Everest 0.9.1 (2024-04-02).md: -------------------------------------------------------------------------------- 1 | # What's new in Percona Everest 0.9.1 2 | 3 | To begin your journey with Percona Everest, check out the [Quickstart Guide for Percona Everest](../quickstart-guide/quick-install.md). 4 | 5 | Percona Everest is an open source cloud native database platform that helps developers deploy code faster, scale deployments rapidly, and reduce database administration overhead. Plus, you can regain control over your data, database configuration, and DBaaS costs. 6 | 7 | Version 0.9.1 introduces the following changes: 8 | 9 | 10 | 11 | ## Release highlights 12 | 13 | !!! warning 14 | Percona Everest introduces a breaking change that prevents you from directly upgrading to version 0.9.1. 15 | 16 | To install Percona Everest 0.9.1, make sure to [uninstall](https://docs.percona.com/everest/install/uninstallEverest.html) any previous versions by running the command: 17 | 18 | everestctl uninstall 19 | 20 | 21 | ## Fixed issues 22 | 23 | - [EVEREST-949](https://perconadev.atlassian.net/browse/EVEREST-949) - We have updated the quick install script to correct the URL for downloading the CLI (`everestctl`). Previously, the script failed because of an incorrect URL. 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /docs/release-notes/Percona-Everest-0.9.1-(2024-04-02).md: -------------------------------------------------------------------------------- 1 | # What's new in Percona Everest 0.9.1 2 | 3 | To begin your journey with Percona Everest, check out the [Quickstart Guide for Percona Everest](../quickstart-guide/quick-install.md). 4 | 5 | Percona Everest is an open source cloud native database platform that helps developers deploy code faster, scale deployments rapidly, and reduce database administration overhead. Plus, you can regain control over your data, database configuration, and DBaaS costs. 6 | 7 | Version 0.9.1 introduces the following changes: 8 | 9 | 10 | 11 | ## Release highlights 12 | 13 | !!! warning 14 | Percona Everest introduces a breaking change that prevents you from directly upgrading to version 0.9.1. 15 | 16 | To install Percona Everest 0.9.1, make sure to [uninstall](https://docs.percona.com/everest/install/uninstallEverest.html) any previous versions by running the command: 17 | 18 | everestctl uninstall 19 | 20 | 21 | ## Fixed issues 22 | 23 | - [EVEREST-949](https://perconadev.atlassian.net/browse/EVEREST-949) - We have updated the quick install script to correct the URL for downloading the CLI (`everestctl`). Previously, the script failed because of an incorrect URL. 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /docs/release-notes/Percona-Everest-1.1.1-(2024-08-22).md: -------------------------------------------------------------------------------- 1 | # What's new in Percona Everest 1.1.1 2 | 3 | !!! warning 4 | Google Container Registry (GCR) is scheduled to be deprecated and will officially shut down on March 18, 2025. All versions of Percona Everest prior to 1.4.0 depend on images hosted on GCR, meaning that downloading those images will fail after the shutdown date. We strongly recommend upgrading to Percona Everest version 1.4.0 as soon as possible. If you do not upgrade, Percona Everest will no longer function. 5 | 6 | For more details, refer to the [Container Registry Deprecation documentation](https://cloud.google.com/artifact-registry/docs/transition/prepare-gcr-shutdown){:target="_blank"}. 7 | 8 | 9 | To begin your journey with Percona Everest, check out the [Quickstart Guide for Percona Everest](../quickstart-guide/quick-install.md). 10 | 11 | Percona Everest version 1.1.1 introduces the following changes: 12 | 13 | ## Fixed issues 14 | 15 | - [EVEREST-1349](https://perconadev.atlassian.net/browse/EVEREST-1349) - While attempting to delete a database cluster after upgrading from Percona Everest version `1.0.x` to `1.1.0`, the databases provisioned in `v1.0.x` were stuck in the **Deleting** state. The issue has been resolved now. 16 | -------------------------------------------------------------------------------- /docs/backups_and_restore/createBackups/backup_storage/EditStorage.md: -------------------------------------------------------------------------------- 1 | # Manage backup storage 2 | 3 | Managing backup storage allows you to edit or remove existing S3 storage configurations used for database backups, helping you keep your backup environment organized, secure, and up-to-date. 4 | 5 | ## Edit backup storage 6 | 7 | To edit a backup storage configuration: 8 | {.power-number} 9 | 10 | 1. Go to Backup storage settings: 11 | 12 | Navigate to Percona Everest home page and select **Settings > Backup storages**. Then click on the ellipsis (three dots) next to the storage you want to modify. 13 | 14 | 2. Click **Edit**. The **Edit Backup storage** pop-up will open. 15 | 16 | ![!image](../../../images/edit_backup_storage.png) 17 | 18 | 4. Make your changes and click **Edit** to save your configuration. 19 | 20 | 21 | ## Delete backup storage 22 | 23 | To delete a backup storage: 24 | {.power-number} 25 | 26 | 1. Go to Backup storage settings: 27 | 28 | Navigate to Percona Everest home page and select **Settings > Backup storages**. Then click on the ellipsis (three dots) next to the storage you want to delete. 29 | 30 | 2. Click **Delete**. The **Delete storage** confirmation pop-up will open. 31 | 32 | 3. Click **Delete**. The backup storage will be deleted. 33 | 34 | -------------------------------------------------------------------------------- /docs/release-notes/Percona-Everest-1.0.1-(2024-07-08).md: -------------------------------------------------------------------------------- 1 | # What's new in Percona Everest 1.0.1 2 | 3 | !!! warning 4 | Google Container Registry (GCR) is scheduled to be deprecated and will officially shut down on March 18, 2025. All versions of Percona Everest prior to 1.4.0 depend on images hosted on GCR, meaning that downloading those images will fail after the shutdown date. We strongly recommend upgrading to Percona Everest version 1.4.0 as soon as possible. If you do not upgrade, Percona Everest will no longer function. 5 | 6 | For more details, refer to the [Container Registry Deprecation documentation](https://cloud.google.com/artifact-registry/docs/transition/prepare-gcr-shutdown){:target="_blank"}. 7 | 8 | 9 | To begin your journey with Percona Everest, check out the [Quickstart Guide for Percona Everest](../quickstart-guide/quick-install.md). 10 | 11 | Percona Everest is an open source cloud native database platform that helps provision and manage databases faster, scale deployments rapidly, and reduce database administration overhead. Plus, you can regain control over your data, database configuration, and DBaaS costs. 12 | 13 | Version 1.0.1 introduces the following changes: 14 | 15 | 16 | ## Fixed issues 17 | 18 | [EVEREST-1231](https://perconadev.atlassian.net/browse/EVEREST-1231) - We've addressed an issue that was causing our telemetry to be disabled. 19 | 20 | -------------------------------------------------------------------------------- /docs/upgrade/mongodb_major_upgrades.md: -------------------------------------------------------------------------------- 1 | # Database engine upgrades 2 | 3 | !!! warning 4 | If you encounter an issue while upgrading your database version, there is **no option to roll back**. In this case, you must **manually diagnose and resolve** the problem. 5 | 6 | 7 | ## MongoDB: Major version upgrades 8 | 9 | Starting with Percona Everest 1.6.0, you can upgrade your MongoDB database major versions, allowing upgrades with minimal downtime and disruption. 10 | 11 | !!! info "Important" 12 | PostgreSQL and MySQL support only **minor** engine upgrades. 13 | 14 | ## Before you upgrade 15 | 16 | The prerequisites for performing a major version upgrade of MongoDB in Percona Everest are: 17 | 18 | - **Version compatibility:** Verify that your current MongoDB version is eligible for an upgrade. 19 | 20 | ## Upgrade 21 | 22 | To upgrade database versions via the Percona Everest UI: 23 | {.power-number} 24 | 25 | 1. Log in to the Percona Everest UI. Navigate to the home page, and select the database that you wish to upgrade. 26 | 27 | 2. On the **Overview** page, access the **DB Details** panel and select **Edit** next to the **Basic Information** field. 28 | 29 | 30 | 31 | ![!image](../images/database_upgrade.png) 32 | 33 | 34 | 3. Select the desired database version, and then click **Upgrade**. 35 | 36 | ![!image](../images/upgrade_database_versions.png) 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build Everest Docs (1.x) 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | 9 | workflow_dispatch: 10 | 11 | jobs: 12 | build: 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - name: Check out code 17 | uses: actions/checkout@v4 18 | with: 19 | fetch-depth: 0 20 | 21 | - name: Setup Python 22 | uses: actions/setup-python@v4 23 | with: 24 | python-version: '3.x' 25 | 26 | - name: Setup MkDocs 27 | run: | 28 | python -m pip install --upgrade pip 29 | pip install wheel 30 | test -f requirements.txt && pip install -r requirements.txt 31 | 32 | - name: Configure git 33 | env: 34 | ROBOT_TOKEN: ${{ secrets.ROBOT_TOKEN }} 35 | run: | 36 | git config --global url."https://percona-platform-robot:${ROBOT_TOKEN}@github.com".insteadOf "https://github.com" 37 | git config user.name "GitHub Action" 38 | git config user.email "github-action@users.noreply.github.com" 39 | git config user.password "${ROBOT_TOKEN}" 40 | echo "GIT_USER=percona-platform-robot:${ROBOT_TOKEN}" >> $GITHUB_ENV 41 | 42 | # Builds Material-themed static web site in 'preview' branch 43 | - name: Build a themed site 44 | run: | 45 | mike deploy 1.x -b preview 46 | mike set-default 1.x -b preview 47 | mike retitle 1.x "Everest 1.x (LATEST)" -b preview 48 | -------------------------------------------------------------------------------- /tools/bin/check-duplicated-storages.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | if ! command -v kubectl &> /dev/null; then 6 | echo "Error: kubectl is not installed. Please install it first." 7 | exit 1 8 | fi 9 | 10 | backup_storage_names=($(kubectl get backupstorage -n everest-system --no-headers -o=jsonpath='{.items[*].metadata.name}')) 11 | 12 | get_value() { 13 | local map="$1" 14 | local key="$2" 15 | for bucket in "${buckets[@]}"; do 16 | k=$(echo "$bucket" | cut -d"=" -f1) 17 | if [[ $k == $key ]]; then 18 | echo "$bucket" | cut -d"=" -f2 19 | fi 20 | done 21 | } 22 | 23 | echo "Backup storages which share the same bucket, region, endpointURL:" 24 | found=0 25 | declare -a buckets 26 | 27 | for name in "${backup_storage_names[@]}"; do 28 | storage_info=$(kubectl get backupstorage "$name" -n everest-system -o go-template='{{printf "%s %s %s %s" .metadata.name .spec.bucket .spec.endpointURL .spec.region}}') 29 | storage_name=$(echo "$storage_info" | awk '{print $1}') 30 | bucket=$(echo "$storage_info" | awk '{print $2}') 31 | endpointURL=$(echo "$storage_info" | awk '{print $3}') 32 | region=$(echo "$storage_info" | awk '{print $4}') 33 | 34 | key="$bucket$endpointURL$region" 35 | existing_value=$(get_value "$buckets" "$key") 36 | 37 | if [[ ${#existing_value} -gt 0 ]]; then 38 | found=1 39 | echo "- $existing_value and $storage_name" 40 | else 41 | buckets+=("$key=$storage_name") 42 | fi 43 | done 44 | 45 | if [[ ${found} -eq 0 ]]; then 46 | echo "not found" 47 | fi 48 | -------------------------------------------------------------------------------- /docs/assets/everest-mark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /docs/networking/split-horizon_dns.md: -------------------------------------------------------------------------------- 1 | # Split-Horizon DNS feature for Percona Server for MongoDB 2 | 3 | 4 | ## Introduction 5 | 6 | Split-Horizon DNS for Percona Server for MongoDB (PSMDB) allows database administrators to **expose ReplicaSet Pods** with custom domain names, both inside and outside the Kubernetes cluster, without conflicting with the default DNS configuration. 7 | 8 | 9 | ## Why Split-Horizon DNS matters? 10 | 11 | This is useful in scenarios such as: 12 | 13 | - Performing maintenance tasks, like copying data from one ReplicaSet to another cluster. 14 | 15 | - Providing temporary or alternative domain names for direct Pod access without impacting the default DNS configuration. 16 | 17 | - Allow database administrators to assign custom domain names to the exposed Pods. 18 | 19 | - Provide Percona Everest users with the capability to obtain connection URLs for the exposed Pods using external domains. 20 | 21 | 22 | ## Prerequisites 23 | 24 | Before you begin, make sure you: 25 | 26 | - Understand [Split-Horizon DNS](https://en.wikipedia.org/wiki/Split-horizon_DNS){:target="_blank"} feature in computer networks. 27 | 28 | - Understand [Split-Horizon DNS](https://docs.percona.com/percona-operator-for-mongodb/expose.html#exposing-replica-set-with-split-horizon-dns){:target="_blank"} feature in Percona Server for MongoDB. 29 | 30 | 31 | These concepts are essential for correctly configuring external domain access to exposed Pods in Percona Everest. 32 | 33 | 34 | ## Limitations of Split-Horizon DNS 35 | 36 | Some limitations apply when using Split-Horizon DNS. For more details, refer to the [limitations section](../reference/known_limitations.md#split-horizon-dns). 37 | 38 | 39 | -------------------------------------------------------------------------------- /docs/API.md: -------------------------------------------------------------------------------- 1 | # Percona Everest API 2 | 3 | Percona Everest provides a set of APIs that enable you to access its features programmatically. These APIs provide a convenient and efficient way for developers to interact with the various functionalities of Percona Everest. 4 | 5 | ## Using the API 6 | 7 | The API is accessible on the same host and port as the Percona Everest Web UI. You can find detailed information about connecting to the Percona Everest Web UI in the [installation guides](install/installEverest). For instance, if you are connecting to your Percona Everest instance using port forwarding: 8 | 9 | ```sh 10 | kubectl port-forward svc/everest 8080:8080 -n everest-system 11 | ``` 12 | 13 | You can then connect to the API via the `http://127.0.0.1:8080` host. 14 | 15 | ### Authentication 16 | 17 | Currently, the API only supports authentication via a JWT token. 18 | 19 | You can obtain this JWT token from the Web UI after logging in. For the built-in Everest users you can also obtain this JWT token by calling the following endpoint: 20 | 21 | ```sh 22 | curl --location -s '/v1/session' --header 'Content-Type: application/json' --data '{"username": "","password": ""}' | jq -r .token 23 | ``` 24 | 25 | 26 | 27 | ## Readme.io API documentation 28 | 29 | While you can achieve many tasks using either the Percona Everest user interface or `everestctl`, leveraging the API allows for easier integration into your technology infrastructure. 30 | 31 | Check out our API endpoints for Percona Everest, where you can perform a wide range of functions. 32 | 33 | To access the API documentation, click [Percona Everest API](https://percona-everest.readme.io/){:target="_blank"}. 34 | 35 | 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/everest-doc-template.md: -------------------------------------------------------------------------------- 1 | # Feature Name 2 | 3 | !!! caution alert alert-warning "Important/Caution" 4 | Crucial points that need emphasis: 5 | 6 | - Important: A significant point that deserves emphasis. 7 | - Caution: Used to mean 'Continue with care'. 8 | 9 | ## What is feature_name? 10 | 11 | !!! note alert alert-primary "Note" 12 | Replace **feature_name** with the name of the feature. 13 | 14 | Describe the feature. 15 | 16 | ## Prerequisites 17 | 18 | List the requirements before installing/configuring/using the feature. 19 | 20 | **Example** 21 | 22 | Install a particular software or utility. 23 | 24 | Configure the software or utility. 25 | 26 | ## Before you begin 27 | 28 | Do specific settings in PMM for the feature to work as expected. 29 | 30 | ## Installing/Configuring/Using feature_name 31 | 32 | !!! note alert alert-primary "Note" 33 | Replace **feature_name** with the name of the feature. 34 | 35 | Use numbered list to provide step by step instructions to install/confiigure/use the feature. Use just one instruction per step for clarity. 36 | 37 | Use images (optional) 38 | 39 | ![!](../images/image_name.png) 40 | 41 | **Note, Info (Optional)** 42 | 43 | To give your users important or useful information that isn't part of the flow of the text, you can offset the information with a note. 44 | 45 | Preferred use is without the label (first form). 46 | 47 | !!! note alert alert-primary "" 48 | Note ... 49 | 50 | !!! note alert alert-primary "Note" 51 | Text ... 52 | 53 | !!! note alert alert-primary "Info" 54 | Text ... 55 | 56 | **Caution, Warning, Important** 57 | 58 | Uses same type but different label text: 59 | 60 | - Caution: Used to mean 'Continue with care'. 61 | 62 | - Important: A significant point that deserves emphasis. 63 | -------------------------------------------------------------------------------- /docs/css/everest.css: -------------------------------------------------------------------------------- 1 | /* Overrides */ 2 | 3 | :root { 4 | --md-primary-fg-color--dark: var(--sky500); 5 | } 6 | .md-header, 7 | .md-tabs { 8 | background: 9 | -o-linear-gradient( 10 | 340deg, 11 | rgba(0,0,0,0) 33%, 12 | rgba(0,0,0,0.2) 95% 13 | ), 14 | -o-linear-gradient( 15 | 340deg, 16 | rgb(14,95,181) 33%, 17 | rgb(98,174,255) 95% 18 | ); 19 | background: 20 | linear-gradient( 21 | 110deg, 22 | rgba(0,0,0,0) 33%, 23 | rgba(0,0,0,0.2) 95% 24 | ), 25 | linear-gradient( 26 | 110deg, 27 | rgb(14,95,181) 33%, 28 | rgb(98,174,255) 95% 29 | ); 30 | } 31 | @media screen and (max-width: 76.1875em) { 32 | .md-nav--primary .md-nav__title[for="__drawer"], 33 | .md-nav--primary .md-nav__title { 34 | background: 35 | -o-linear-gradient( 36 | 340deg, 37 | rgba(0,0,0,0) 33%, 38 | rgba(0,0,0,0.2) 95% 39 | ), 40 | -o-linear-gradient( 41 | 340deg, 42 | rgb(14,95,181) 33%, 43 | rgb(98,174,255) 95% 44 | ); 45 | background: 46 | linear-gradient( 47 | 110deg, 48 | rgba(0,0,0,0) 33%, 49 | rgba(0,0,0,0.2) 95% 50 | ), 51 | linear-gradient( 52 | 110deg, 53 | rgb(14,95,181) 33%, 54 | rgb(98,174,255) 95% 55 | ); 56 | } 57 | } 58 | .superNav, 59 | .md-nav__source { 60 | background-color: rgb(14,95,181); 61 | background-image: linear-gradient( 62 | 110deg, 63 | rgba(0,0,0,0.15) 33%, 64 | rgba(0,0,0,0.15) 95% 65 | ); 66 | } -------------------------------------------------------------------------------- /docs/security/session_management.md: -------------------------------------------------------------------------------- 1 | # Session Management 2 | 3 | Session management is the process of handling user sessions to keep them secure, efficient, and continuous. It is used in applications that manage user authentication and authorization, such as web services, databases, and DBaaS platforms. 4 | 5 | ## Percona Everest authentication methods 6 | 7 | Percona Everest supports two authentication methods: 8 | 9 | - Built-in authentication: Suitable for non-production environments 10 | 11 | - [External Identity Provider (IdP) authentication](Idp_integration.md): Suitable for production use and enables integration with systems such as Okta and Azure AD. 12 | 13 | 14 | ## How authentication works in Percona Everest 15 | 16 | Everest uses access tokens to authenticate users: 17 | 18 | - **Built-in authentication:** Percona Everest generates and manages the access tokens directly. 19 | - **External IdP authentication:** The tokens are issued and controlled by the IdP. 20 | 21 | Starting with **Percona Everest 1.7.0**, the access tokens will **now be invalidated** in the following scenarios: 22 | 23 | - **Once the user has logged out:** This applies to both the built-in users and IdP. 24 | 25 | 26 | - **Once a user is deleted:** This only applies to built-in users. The access token for users from an IdP will remain valid until it expires, so we recommend setting a short expiration period for these access tokens. 27 | 28 | !!! info " Important" 29 | For IdP, we recommend using: 30 | 31 | - Short-lived access tokens (such as 5 minutes) 32 | - Long-lived refresh tokens 33 | 34 | For more details, refer to the [Okta guide](https://developer.okta.com/docs/guides/refresh-tokens/main/) on refresh tokens. 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /docs/administer/rbac_pod_scheduling.md: -------------------------------------------------------------------------------- 1 | # Pod scheduling policies with RBAC 2 | 3 | As an admin in Percona Everest, you can restrict access to configuring or applying specific Pod scheduling policies for certain users. To achieve this, you can define access policies using[Percona Everest's Role-Based Access Control (RBAC)](../administer/rbac.md) functionality. 4 | 5 | RBAC policies in Percona Everest apply to the entire Pod scheduling policy, including all the affinity rules defined within it. 6 | 7 | 8 | !!! note 9 | Assigning RBAC permissions to individual affinity rules within a policy is impossible—access is managed at the policy level as a whole. 10 | 11 | 12 | ## Use cases for Pod Scheduling policies with RBAC 13 | 14 | ### Limited access to Pod scheduling policy configuration 15 | As a Percona Everest Admin, you can allow only specific users to manage Pod Scheduling Policies (create, edit, read, and delete) while restricting other users to read-only access. These users can view and apply the existing policies to database clusters but cannot modify or delete them. 16 | 17 | ??? example "Example" 18 | Here’s an example of RBAC policy displaying how to grant full access to one user (e.g., alice) and read-only access to others: 19 | 20 | ```sh 21 | p, alice, pod-scheduling-policies, *, * 22 | p, role:team-dev, pod-scheduling-policies, read, * 23 | ``` 24 | 25 | 26 | 27 | ### Limited usage of Pod scheduling policy by users 28 | 29 | As a Percona Everest Admin, you can allow a particular user to use a specific Pod scheduling policy. The rest of the users are not allowed to use this policy at all (that is, they cannot see it in the system and cannot assign it to DB clusters that they create or modify). 30 | 31 | ??? example "Example" 32 | Here’s an example of RBAC policy that grants limited access to just one user (e.g., bob): 33 | 34 | ```sh 35 | p, bob, pod-scheduling-policies, read, pod-scheduling-policy-1 36 | ``` 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /docs/install/supported_operators_k8s.md: -------------------------------------------------------------------------------- 1 | # Supported operators and K8s clusters 2 | 3 | Percona Everest provides support for various operators and Kubernetes clusters. The following is a list of the specific operators and Kubernetes clusters that are compatible with Percona Everest: 4 | 5 | ## Operators 6 | 7 | * [Percona Operator for MySQL Based on Percona XtraDB Cluster (PXC)](https://docs.percona.com/percona-operator-for-mysql/pxc/) 1.17.0, 1.18.0 8 | * [Percona Operator for MongoDB (PSMDB)](https://docs.percona.com/percona-operator-for-mongodb/) 1.19.1, 1.21.1 9 | * [Percona Operator for PostgreSQL (PG)](https://docs.percona.com/percona-operator-for-postgresql/2.0/) 2.6.0, 2.7.0 10 | 11 | ## k8s clusters 12 | 13 | Percona Everest works on most of the cloud K8s and on most of the on-prem vanilla K8s. 14 | 15 | However, not all the many combinations of K8s distributions and K8s versions might be fully tested and certified. Refer to the matrix below and [reach out to us](SetupPrereqs.md#get-expert-help) should you have any questions. 16 | 17 | | Platform | Kubernetes Version | State | 18 | |:----------------------|:-------------------|:----------------------------------------| 19 | | Google GKE | 1.31 - 1.33 | Fully tested and certified | 20 | | Amazon EKS | 1.31 - 1.33 | Fully tested and certified | 21 | | OpenShift | 4.16 - 4.18 | Fully tested and certified | 22 | | Azure AKS | - | Works but not fully certified yet | 23 | | DigitalOcean | - | Works but not fully certified yet | 24 | | Vanilla K8s (kubeadm) | - | Works but not fully certified yet | 25 | | Other cloud K8s | - | Should work but not fully certified yet | 26 | 27 | !!! note 28 | Air-gapped environments (i.e. environments physically isolated from unsecured networks such as the public Internet) are not currently supported. Their support is coming soon. 29 | -------------------------------------------------------------------------------- /docs/release-notes/release_notes_index.md: -------------------------------------------------------------------------------- 1 | # Percona Everest release notes index 2 | 3 | - [Percona-Everest 1.10.0 (2025-11-28)](Percona-Everest-1.10.0-(2025-11-28).md) 4 | - [Percona-Everest 1.9.0 (2025-09-23)](Percona-Everest-1.9.0-(2025-09-23).md) 5 | 6 | - [Percona-Everest 1.8.1 (2025-08-11)](Percona-Everest-1.8.1-(2025-08-11).md) 7 | 8 | - [Percona-Everest 1.8.0 (2025-07-16)](Percona-Everest-1.8.0-(2025-07-16).md) 9 | 10 | - [Percona Everest 1.7.0 (2025-05-29)](Percona-Everest-1.7.0-(2025-05-29).md) 11 | - [Percona Everest 1.6.0 (2025-04-16)](Percona-Everest-1.6.0-(2025-04-16).md) 12 | 13 | - [Percona Everest 1.5.0 (2025-03-04)](Percona-Everest-1.5.0-(2025-03-04).md) 14 | 15 | - [Percona Everest 1.4.0 (2025-01-07)](Percona-Everest-1.4.0-(2025-01-07).md) 16 | - [Percona Everest 1.3.0 (2024-11-18)](Percona-Everest-1.3.0-(2024-11-18).md) 17 | - [Percona Everest 1.2.0 (2024-10-01)](Percona-Everest-1.2.0-(2024-10-01).md) 18 | - [Percona Everest 1.1.1 (2024-08-22)](Percona-Everest-1.1.1-(2024-08-22).md) 19 | - [Percona Everest 1.1.0 (2024-08-12)](Percona-Everest-1.1.0-(2024-08-12).md) 20 | - [Percona Everest 1.0.1 (2024-07-08)](Percona-Everest-1.0.1-(2024-07-08).md) 21 | - [Percona Everest 1.0.0 (2024-06-28)](Percona-Everest-1.0.0-(2024-06-28).md) 22 | - [Percona Everest 0.10.1 (2024-05-23)](Percona-Everest-0.10.1-(2024-05-23).md) 23 | - [Percona Everest 0.10.0 (2024-05-03)](Percona-Everest-0.10.0-(2024-05-03).md) 24 | - [Percona Everest 0.9.1 (2024-04-02)](Percona-Everest-0.9.1-(2024-04-02).md) 25 | - [Percona Everest 0.9.0 (2024-04-01)](Percona-Everest-0.9.0-(2024-04-01).md) 26 | - [Percona Everest 0.8.0 (2024-02-22)](Percona-Everest-0.8.0-(2024-02-22).md) 27 | - [Percona Everest 0.7.0 (2024-01-31)](Percona-Everest-0.7.0-(2024-01-31).md) 28 | - [Percona Everest 0.6.0 (2024-01-11)](Percona-Everest-0.6.0-(2024-01-11).md) 29 | 30 | - [Percona Everest 0.5.0 (2023-11-28)](Percona-Everest-0.5.0-(2023-11-28).md) 31 | 32 | - [Percona Everest 0.4.0 (2023-10-30)](Percona-Everest-0.4.0-(2023-10-30).md) 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /docs/js/version-select.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Custom version of same taken from mike code for injecting version switcher into percona.com 3 | */ 4 | 5 | window.addEventListener('DOMContentLoaded', function () { 6 | // This is a bit hacky. Figure out the base URL from a known CSS file the 7 | // template refers to... 8 | var ex = new RegExp('/?css/version-select.css$'); 9 | var sheet = document.querySelector('link[href$="version-select.css"]'); 10 | 11 | if (!sheet) { 12 | return; 13 | } 14 | 15 | var ABS_BASE_URL = sheet.href.replace(ex, ''); 16 | var CURRENT_VERSION = ABS_BASE_URL.split('/').pop(); 17 | 18 | function makeSelect(options, selected) { 19 | var select = document.createElement('select'); 20 | select.classList.add('btn'); 21 | select.classList.add('btn-primary'); 22 | 23 | options.forEach(function (i) { 24 | var option = new Option(i.text, i.value, undefined, i.value === selected); 25 | select.add(option); 26 | }); 27 | 28 | return select; 29 | } 30 | 31 | var xhr = new XMLHttpRequest(); 32 | xhr.open('GET', ABS_BASE_URL + '/../versions.json'); 33 | xhr.onload = function () { 34 | var versions = JSON.parse(this.responseText); 35 | 36 | var realVersion = versions.find(function (i) { 37 | return ( 38 | i.version === CURRENT_VERSION || i.aliases.includes(CURRENT_VERSION) 39 | ); 40 | }).version; 41 | 42 | var select = makeSelect( 43 | versions.map(function (i) { 44 | return { text: i.title, value: i.version }; 45 | }), 46 | realVersion 47 | ); 48 | select.addEventListener('change', function (event) { 49 | window.location.href = ABS_BASE_URL + '/../' + this.value; 50 | }); 51 | 52 | var container = document.createElement('div'); 53 | container.id = 'custom_select'; 54 | container.classList.add('side-column-block'); 55 | 56 | // Add menu 57 | container.appendChild(select); 58 | 59 | var sidebar = document.querySelector('#version-select-wrapper'); // Inject menu into element with this ID 60 | sidebar.appendChild(container); 61 | }; 62 | 63 | xhr.send(); 64 | }); 65 | -------------------------------------------------------------------------------- /docs/release-notes/Percona-Everest-0.7.0-(2024-01-31).md: -------------------------------------------------------------------------------- 1 | # What's new in Percona Everest 0.7.0 2 | 3 | To begin your journey with Percona Everest, check out the [Quickstart Guide for Percona Everest](../quickstart-guide/quick-install.md). 4 | 5 | Percona Everest is an open source private database-as-a-service that helps developers deploy code faster, scale deployments rapidly, and reduce database administration overhead. Plus, you can regain control over your data, database configuration, and DBaaS costs. 6 | 7 | Version 0.7.0 introduces the following changes: 8 | 9 | ## Point-in-Time Recovery (PITR) for MongoDB databases 10 | 11 | We're expanding Percona Everest's PITR capabilities to include MongoDB databases. 12 | 13 | You can now also restore MongoDB databases to specific points in time within the same cluster. This gives you more control over your MongoDB environments and more options for data recovery. 14 | 15 | Future releases will cover PITR support for PostgreSQL databases and PITR restores to different clusters. 16 | 17 | ![Alt text](../images/PITR_Mongo.png) 18 | 19 | ### Post-Restore step for MongoDB 20 | 21 | PITR restores alter the timeline of MongoDB oplog events. As a result, MongoDB oplog slices created after the restore timestamp and before the last backup become invalid. 22 | 23 | To seamlessly resume PITR after a restore, make sure to run a new full backup. This new backup will serve as the starting point for oplog updates, ensuring the continuity and integrity of your data. 24 | 25 | 26 | ## Monitoring 27 | 28 | Percona Everest now comes with monitoring capabilities that will help ensure your database infrastructure is always reliable and secure. 29 | 30 | Here's what you'll get out of Percona Everest monitoring: 31 | 32 | - Database availability and uptime tracking 33 | - Insights into your database performance 34 | - Proactive issue detection and addressing opportunities 35 | - Continuous monitoring 36 | 37 | ![!image](../images/everest_select_endpoint.png) 38 | 39 | If you're looking for in-depth insights into this feature, refer to our comprehensive [documentation](https://docs.percona.com/everest/use/monitor_endpoints.html). -------------------------------------------------------------------------------- /docs/administer/use_cases.md: -------------------------------------------------------------------------------- 1 | # Use cases for Pod scheduling policies 2 | 3 | Here are several detailed use cases for affinity that highlight its diverse applications and the numerous benefits it offers across various contexts. 4 | 5 | 6 | ## Node affinity: Regional scheduling 7 | 8 | Let's consider a use case in which workloads are distributed based on performance requirements, fault tolerance, and regional specifications across designated zones or areas. 9 | 10 | You need to run a workload in the `us-west2 region` for latency optimization and to meet specific compliance requirements. 11 | 12 | ![!image](../images/configure_node_affinity.png) 13 | 14 | ??? info "What happens under the hood" 15 | - It ensures that the pod is scheduled only on nodes in the us-west-2 region, as defined by the `topology.kubernetes.io/region` node label. 16 | - For the rule to be applicable, it is essential that the node possesses a label such as `topology.kubernetes.io/region: us-west-2`. If no nodes correspond to the specified label, the pod will remain unscheduled. 17 | 18 | 19 | ## Pod anti-affinity: Pods scheduled apart 20 | 21 | Let's consider a use case that ensures the scheduler distributes the different database pods across various Kubernetes nodes, which enhances fault tolerance in the event of node failure. 22 | 23 | ![!image](../images/default_pod_affinity_rule.png) 24 | 25 | ??? info "What happens under the hood" 26 | - The pod will not be scheduled on nodes that contain pods labeled with `app=haproxy`. 27 | - If no nodes match, the pod will not be scheduled until a suitable node becomes available. 28 | 29 | ## Pod affinity: Pods scheduled on the same node 30 | 31 | Let's consider a use case that ensures that the scheduler distributes the different database pods on the same Kubernetes node. 32 | 33 | 34 | ![!image](../images/default_pod_anti_affinity_rule.png) 35 | 36 | ??? info "What happens under the hood" 37 | The scheduler will prefer to place this pod on a node where other pods with the label `app=backend` are already running. 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /docs/backups_and_restore/createBackups/backup_storage/CreateStorage.md: -------------------------------------------------------------------------------- 1 | # Create backup storage 2 | 3 | Before working with backups, create a backup storage location as a backup destination for creating and storing your backup artifacts. 4 | 5 | Everest supports S3-compatible backup locations, which means you can use [AWS S3](https://aws.amazon.com/s3/) or any other storage solutions that support S3 API, like [min.io](https://min.io/). 6 | 7 | !!! caution alert alert-warning "Important" 8 | 9 | - Currently, Everest does not support S3 buckets with S3 Object Lock. Make sure your backup destination you are registering does not have S3 Object Lock enabled. 10 | 11 | - Make sure you have read/write/delete permissions to the S3 bucket. 12 | 13 | To create a backup storage location: 14 | {.power-number} 15 | 16 | 1. Go to Backup storage settings: 17 | 18 | Navigate to Percona Everest home page and select **Settings > Backup storages**. Then click **Add Backup storage**. 19 | 20 | 2. Fill in the Required Fields: 21 | 22 | - **Name**: Enter a name using only lowercase letters, numbers, or hyphens. 23 | - **Description**: (Optional) Add a short description for this backup storage. 24 | - **Namespace**: Select where this backup storage will be available. 25 | - **Type**: Choose S3 Compatible. 26 | - **Bucket Name**: Provide the S3 bucket name where backups will be stored. 27 | - **Region**: Specify the bucket's region (e.g., us-east-1). 28 | - **Endpoint**: Enter the S3-compatible URL (e.g., https://s3.us-east-1.amazonaws.com). 29 | - **Access Key**: Input the access key for your S3 account. 30 | - **Secret Key**: Input the corresponding secret key. 31 | 32 | 3. Additional Options: 33 | - **Verify TLS Certificate**: Enable this to validate secure connections. 34 | - **Force Path-Style URL Access**: Use this if your storage provider uses path-style URLs. 35 | 36 | 4. Click **Add** to save your configuration. 37 | 38 | 39 | ## Next steps 40 | 41 | [Create backups :material-arrow-right:](../../createBackups/CreateOnDemand.md){.md-button} 42 | [Enable PITR :material-arrow-right:](../../createBackups/EnablePITR.md){.md-button} -------------------------------------------------------------------------------- /docs/assets/everest-fav.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /docs/release-notes/Percona-Everest-0.10.1-(2024-05-23).md: -------------------------------------------------------------------------------- 1 | # What's new in Percona Everest 0.10.1 2 | 3 | To begin your journey with Percona Everest, check out the [Quickstart Guide for Percona Everest](../quickstart-guide/quick-install.md). 4 | 5 | Percona Everest is an open source cloud native database platform that helps provision and manage databases faster, scale deployments rapidly, and reduce database administration overhead. Plus, you can regain control over your data, database configuration, and DBaaS costs. 6 | 7 | Version 0.10.1 introduces the following changes: 8 | 9 | 10 | ## Fixed issues 11 | 12 | ### Backups 13 | 14 | - [EVEREST-1061](https://perconadev.atlassian.net/browse/EVEREST-1061) - We fixed a race condition in the Everest operator where backups deleted due to retention policies were re-created. We fixed the issue and ensured that completed backups were not reconciled. 15 | - [EVEREST-1064](https://perconadev.atlassian.net/browse/EVEREST-1064) - While configuring a backup schedule for the MongoDB cluster, duplicate backups of the same data were generated in S3, whereas only a single backup was produced in Everest. The issue has been resolved now. 16 | 17 | ### Restores 18 | 19 | - [EVEREST-1082](https://perconadev.atlassian.net/browse/EVEREST-1082) - Attempting to restore a MongoDB backup to a new database failed if the backup storage used a self-signed certificate. This issue has been resolved now. 20 | 21 | - [EVEREST-1054](https://perconadev.atlassian.net/browse/EVEREST-1054) - While restoring a PostgreSQL database cluster, we encountered an issue connecting to an S3-compatible bucket with a self-signed certificate. This problem caused the restored cluster to become unresponsive and enter an unknown state. The issue has been resolved now. 22 | 23 | ### Retention copies 24 | 25 | - [EVEREST-979](https://perconadev.atlassian.net/browse/EVEREST-979) - When the retention were specified in a backup schedule, the Everest operator successfully deleted the backup objects from Kubernetes. However, it failed to clean up the data on S3. This issue has been resolved now. 26 | 27 | 28 | ## Known limitations 29 | 30 | Backups for PostgreSQL do not work with GCP S3 compatible API. 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /docs/reference/telemetry.md: -------------------------------------------------------------------------------- 1 | # Telemetry on Percona Everest 2 | 3 | In creating Percona Everest, we leveraged our years of experience in open-source database development, and collaborated closely with the Percona community through interviews to ensure our new product will meet your needs. 4 | 5 | Product telemetry fills-in the gaps in our understanding of how you are actually using Everest, to help us build the best-in-class cloud-native database platform for the open-source community. 6 | 7 | Participation in this **anonymous** program is optional, and you can opt-out if you prefer not to share any information. Read our [privacy statement](https://www.percona.com/privacy-policy#h.e34c40q8sb1a) to learn more. 8 | 9 | ## What information is collected 10 | 11 | Currently, Everest only collects information about the database technology used (MySQL, Mongo, PostgreSQL). Future releases will cover additional metrics. 12 | 13 | Rest assured, access to the raw data is rigorously controlled, and individual user identification within the dataset is impossible. The data is thoroughly anonymized and cannot be traced back to any specific user. 14 | 15 | ## Disable telemetry 16 | 17 | Starting with Everest 0.4.1, telemetry is enabled by default. If you don't want to send usage data to Percona, you can set the **DISABLE_TELEMETRY** environment variable to **TRUE**: 18 | {.power-number} 19 | 20 | To disable telemetry run: 21 | 22 | ```sh 23 | kubectl -n everest-system patch deployment percona-everest --type strategic -p 'spec: 24 | strategy: 25 | rollingUpdate: 26 | maxSurge: 0 27 | maxUnavailable: 1 28 | type: RollingUpdate 29 | template: 30 | spec: 31 | containers: 32 | - name: everest 33 | env: 34 | - name: DISABLE_TELEMETRY 35 | value: "true"' 36 | ``` 37 | 38 | ## Enable telemetry 39 | 40 | If you want to enable telemetry again: 41 | 42 | ```sh 43 | kubectl -n everest-system patch deployment percona-everest --type strategic -p 'spec: 44 | strategy: 45 | rollingUpdate: 46 | maxSurge: 0 47 | maxUnavailable: 1 48 | type: RollingUpdate 49 | template: 50 | spec: 51 | containers: 52 | - name: everest 53 | env: 54 | - name: DISABLE_TELEMETRY 55 | value: "false"' 56 | ``` 57 | 58 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | # Welcome to Percona Everest 2 | 3 | We are excited to welcome you to Percona Everest, designed to demonstrate the core capabilities of our new open source cloud-native database platform! 4 | 5 | 6 | ## Why Percona Everest? 7 | 8 | Percona Everest is the first open-source platform for automated database provisioning and management. It supports multiple database technologies and can be hosted on any Kubernetes infrastructure, in the cloud or on-premises. 9 | 10 | ![!image](images/Percona_Everest_docs.png) 11 | 12 | ## Ready to test drive Percona Everest? 13 | 14 | Let's start by enabling you to deploy an automated private DBaaS, eliminating vendor lock-in and complex in-house platform development. 15 | 16 | [Percona Everest quickstart guide:material-arrow-right:](quick-install.md){.md-button } [Manage your first cluster :material-arrow-right:](use/db_provision.md){.md-button } 17 | 18 | 19 | Refer to our documentation, and you'll be set up in no time. 20 | 21 |
22 | 23 | ### :material-telescope: Discover { .title } 24 | 25 | Discover how Percona Everest simplifies and streamlines your database management and provisioning. 26 | 27 | [Discover Percona Everest :material-arrow-right:](features.md){ .md-button .md-button--primary } 28 | 29 |
30 | 31 | ### :material-security: Secure { .title } 32 | 33 | Explore how our security features are designed to ensure the security of your hosted databases. 34 | 35 | [Secure your deployments :material-arrow-right:](security/sso_idp_integration.md){ .md-button .md-button--primary } 36 | 37 |
38 | 39 | ### :material-frequently-asked-questions: Troubleshooting { .title } 40 | 41 | Dive into our troubleshooting section designed to guide you through common issues you may encounter while using Percona Everest. 42 | 43 | [Troubleshoot :material-arrow-right:](troubleshoot/troubleshoot.md){ .md-button .md-button--primary } 44 | 45 |
46 | 47 | 48 | ### :material-api: Percona Everest API { .title } 49 | 50 | Get ready to dive into our APIs and uncover their potential. 51 | 52 | [Dive into our APIs :material-arrow-right:](https://percona-everest.readme.io){ .md-button .md-button--primary } 53 | 54 |
55 |
-------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/everest--version-.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Everest 3 | about: Release Notes Template for Everest 4 | --- 5 | 6 | | **Release date:** | [Month DD, YYYY] | 7 | | ----------------- | --------------------------------------------------------------------- | 8 | | **Installation:** | [Installing Everest](https://www.percona.com/software/pmm/quickstart) | 9 | 10 | Everest is an open source cloud-native database platform for MySQL, PostgreSQL, and MongoDB. 11 | 12 | !!! caution alert alert-warning "Important/Caution" 13 | Crucial points that need emphasis: 14 | 15 | - Important: A significant point that deserves emphasis. 16 | - Caution: Used to mean 'Continue with care'. 17 | 18 | ## Release Highlights 19 | 20 | ### Release Highlights1 21 | 22 | Description of the feature with a link to the documentation 23 | 24 | ### Release Highlights2 25 | 26 | Description of the feature with a link to the documentation 27 | 28 | Add more subsections for more release highlights. 29 | 30 | ### Components Upgrade 31 | 32 | - List the components which are upgraded as part of the Release. 33 | 34 | ## New Features 35 | 36 | - List of new features with a comprehensive description of the feature and link to the JIRA ticket. 37 | 38 | Example: 39 | 40 | [EVEREST-XXXX](https://jira.percona.com/browse/EVEREST-XXXX) - Comprehensive description. 41 | 42 | ## Improvements 43 | 44 | - ​​List of improvements with a comprehensive description and link to the JIRA ticket. 45 | 46 | Example: 47 | 48 | [EVEREST-XXXX](https://jira.percona.com/browse/EVEREST-XXXX) - Comprehensive description. 49 | 50 | ## Bugs Fixed 51 | 52 | - ​​List of bugs with a comprehensive description and link to the JIRA ticket. 53 | 54 | Example: 55 | 56 | [EVEREST-XXXX](https://jira.percona.com/browse/EVEREST-XXXX) - Comprehensive description. 57 | 58 | ## Known issues 59 | 60 | - ​List of known issues with a comprehensive description and link to the JIRA ticket. 61 | 62 | Example: 63 | 64 | [EVEREST-XXXX](https://jira.percona.com/browse/EVEREST-XXXX) - Comprehensive description. 65 | 66 | **Solution** 67 | 68 | Description of the solution. 69 | 70 | ## Coming Soon 71 | 72 | Share what are the upcoming features on your roadmap to keep users excited: 73 | 74 | - Planned item 1 75 | - Planned item 2 76 | -------------------------------------------------------------------------------- /docs/upgrade/upgrade_operators.md: -------------------------------------------------------------------------------- 1 | # Upgrade database operators 2 | 3 | Starting with Percona Everest 1.2.0, the intuitive UI allows you to upgrade all the database operators and their components in any namespace with a single click. 4 | 5 | ## Before you upgrade 6 | 7 | !!! note " Note" 8 | We recommend that you take a database backup before starting the upgrade process. 9 | 10 | Before upgrading a database operator, Everest presents a list of tasks that need to be completed to smoothly transition your clusters to the next version of the database operators. These tasks may include: 11 | 12 | - Upgrading your database engine version from an unsupported or end-of-life (EOL) version. 13 | 14 | - Ensuring your clusters are using a supported [Custom Resource](https://ibm.github.io/kubernetes-operators/lab1/#:~:text=A%20CRD%20defines%20Custom%20Resources,store%20and%20retrieve%20structured%20data.){:target="_blank"} (CR) version. 15 | 16 | 17 | ## Upgrade 18 | 19 | To upgrade database operators via the Percona Everest UI: 20 | {.power-number} 21 | 22 | 1. Log in to the Percona Everest UI and navigate to **Settings > Namespaces**. You will see all the database operators installed in that namespace. 23 | 24 | 25 | 3. Once the upgrade for the database operators becomes available, you can initiate the upgrade process by clicking on **Upgrade**. 26 | 27 | ![!image](../images/upgrade_buttons_page.png) 28 | 29 | 30 | 4. A page is displayed showcasing the upgrades available for the various operators. 31 | 32 | 33 | ![!image](../images/show_operators_upgrades.png) 34 | 35 | 36 | 5. Click **Upgrade Operators**. A confirmation pop-up will appear, asking if you want to proceed with the upgrade. 37 | 38 | 39 | ![!image](../images/upgrade_operators_confirmation.png) 40 | 41 | 42 | 6. After clicking on **Upgrade**, you will see a page displaying pending actions. The pending actions indicate that you need to restart the database to utilize the updated CR version. 43 | 44 | ![!image](../images/operators_upgrade_dependency.png) 45 | 46 | 7. Click on the pending **Actions**. A confirmation pop-up will appear, asking if you want to **Upgrade CRD version**: 47 | 48 | ![!image](../images/CRD_upgrade_confirmation_1.png) 49 | 50 | 8. Click on **Upgrade** to upgrade the operators. 51 | 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /docs/install/prerequisites.md: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | 3 | Before getting started with Percona Everest, we recommend that you: 4 | {.power-number} 5 | 6 | 7 | 1. Install [Helm v3 :octicons-link-external-16:](https://docs.helm.sh/using_helm/#installing-helm) to install Percona Everest using Helm. 8 | 9 | 2. Install [yq :octicons-link-external-16:](https://github.com/mikefarah/yq) to install Percona Everest using Helm. 10 | 11 | 3. Verify that you have access to the Kubernetes cluster that you want to use with Everest. By default, Everest uses the kubeconfig file available under *~/.kube/config*. Run the following command: 12 | 13 | ```sh 14 | kubectl get nodes 15 | ``` 16 | 17 | ??? example "Expected output" 18 | ``` 19 | NAME STATUS ROLES AGE VERSION 20 | gke--default-pool-75d48bfc-bx8g Ready 11h v1.26.7-gke.500 21 | gke--default-pool-75d48bfc-c2df Ready 11h v1.26.7-gke.500 22 | gke--default-pool-75d48bfc-zl7k Ready 11h v1.26.7-gke.500 23 | ``` 24 | 25 | 26 | ## Before you install Percona Everest 27 | 28 | You can install Percona Everest using one of the following methods: 29 | 30 | 31 | * [Helm charts](../install/install_everest_helm_charts.md) 32 | 33 | * [everestctl](../install/install_everestctl.md), which connects Percona Everest to your Kubernetes cluster. 34 | 35 | 36 | Once you’ve installed Percona Everest, you can easily log into the Percona Everest UI by following the setup instructions in the next section. 37 | 38 | !!! important 39 | Percona Everest assists with installing all the necessary operators and required packages, but does not currently help with spinning up a publicly accessible Kubernetes cluster. 40 | 41 | We recommend setting up Percona Everest on the Amazon Elastic Kubernetes Service (EKS) or Google Kubernetes Engine (GKE). Percona Everest may not work as expected on local Kubernetes installations (minikube, kind, k3d, or similar products) due to network issues. 42 | 43 | [Create EKS cluster :material-arrow-right:](eks.md){.md-button} [Create GKE cluster :material-arrow-right:](gke.md){.md-button} 44 | 45 | 46 | ## Next steps 47 | 48 | Start by installing Percona Everest: 49 | 50 | [Install Percona Everest :material-arrow-right:](installEverest.md){.md-button} 51 | -------------------------------------------------------------------------------- /variables.yml: -------------------------------------------------------------------------------- 1 | # PMM Version for HTML 2 | # See also mkdocs.yml plugins.with-pdf.cover_subtitle and output_path 3 | 4 | release: "0.1.0" 5 | version: "0.1.0" 6 | release_date: 2025-04-16 7 | # SVG icons. Use in markdown as {{icon.}} 8 | # For the Percona image icon (encoded inline SVG), see https://css-tricks.com/using-svg/ 9 | icon: 10 | percona: 11 | bouncingellipsis: 12 | -------------------------------------------------------------------------------- /docs/js/promptremover.js: -------------------------------------------------------------------------------- 1 | document.addEventListener("DOMContentLoaded", function(){ 2 | // get collection of code blocks: 3 | const collection = document.getElementsByClassName("highlight"); 4 | for (let i = 0; i < collection.length; i++) { 5 | const commandElement=collection.item(i); 6 | let commandButtonElement = commandElement.getElementsByTagName("button"); 7 | // read the prompt string from an attribute of the code block: 8 | let promptString = commandElement.getAttribute("data-prompt"); 9 | if (!promptString) continue; 10 | let commandCodeElement = commandElement.getElementsByTagName("code"); 11 | let commandCodeElementString = commandCodeElement.item(0).textContent; 12 | let trueCommand = commandCodeElementString; 13 | if (commandCodeElementString.startsWith(promptString)) { 14 | // remove the first occurrence of the prompt: 15 | trueCommand = commandCodeElementString.substring(promptString.length, commandCodeElementString.length).trim(); 16 | } 17 | // remove other occurrencies in case of a multi-line string: 18 | trueCommand = trueCommand.replaceAll("\n"+promptString, "\n").replace(/^[^\S\r\n]+/gm, ""); 19 | 20 | // CHECK IF THERE IS A SECOND PROMPT: 21 | promptString = commandElement.getAttribute("data-prompt-second"); 22 | if (promptString) { 23 | if (trueCommand.startsWith(promptString)) { 24 | trueCommand = trueCommand.substring(promptString.length, trueCommand.length).trim(); 25 | } 26 | trueCommand = trueCommand.replaceAll("\n"+promptString, "\n").replace(/^[^\S\r\n]+/gm, ""); 27 | } 28 | 29 | // CHECK IF THERE IS A THIRD PROMPT: 30 | promptString = commandElement.getAttribute("data-prompt-third"); 31 | if (promptString) { 32 | if (trueCommand.startsWith(promptString)) { 33 | trueCommand = trueCommand.substring(promptString.length, trueCommand.length).trim(); 34 | } 35 | trueCommand = trueCommand.replaceAll("\n"+promptString, "\n").replace(/^[^\S\r\n]+/gm, ""); 36 | } 37 | // attach the updated command as an attribute to the button where clipboard.js will find it: 38 | commandButtonElement.item(0).setAttribute("data-clipboard-text", trueCommand); 39 | } 40 | }); 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /docs/networking/split-horizon_create_CA_certs.md: -------------------------------------------------------------------------------- 1 | # Generate CA certificates 2 | 3 | If you do not have an existing Certificate Authority (CA), you can create a self-signed CA. The script that is being used here is [CFSSL](https://github.com/cloudflare/cfssl) from Cloudflare: 4 | 5 | 6 | ## Prerequisites 7 | 8 | **For Debian/Ubuntu:** 9 | 10 | - Install `CFSSL` and `CFSSLJSON`. 11 | 12 | ```sh 13 | sudo apt-get install golang-cfssl 14 | ``` 15 | 16 | - **For macOS:** 17 | 18 | ```sh 19 | brew install cfssl 20 | ``` 21 | 22 | ## Generate a Self-Signed CA 23 | 24 | To generate a self-signed CA certificate, run the following script: 25 | 26 | ```bash 27 | #!/bin/bash 28 | set -e # Stop execution if any command fails 29 | 30 | 31 | cat > ca-config.json < 38 | ca.key: 39 | ``` 40 | 41 | **Fields in `SplitHorizonDNSConfig.spec`** 42 | 43 | | Field | Description | 44 | |--------------------------------------|-----------------------------------------------------------------------------| 45 | | `.spec.baseDomainNameSuffix` | Domain name suffix used for generating full Pod hostnames in the Replica Set. | 46 | | `.spec.tls.secretName` | Name of the Kubernetes secret that contains the TLS certificate. | 47 | | `spec.tls.certificate.ca.crt` | base64 encoded `ca.pem` file | 48 | | `.spec.tls.certificate.ca.key`|base64 encoded `ca-key.pem` file content.| 49 | 50 | ## Allowed TLS configuration options 51 | 52 | When creating the Custom Resource (CR), provide one of the following combinations: 53 | 54 | - `.spec.baseDomainNameSuffix` and `.spec.tls.secretName` only – Use this option if a secret with TLS CA certificate already exists and should be reused. 55 | 56 | - `.spec.baseDomainNameSuffix`,`.spec.tls.secretName` and `.spec.tls.certificate.*` – In this case, the values from `.spec.tls.certificate.*` will be copied into a newly created Secret named `.spec.tls.secretName.` 57 | 58 | If such secret already exists, it will be updated with values from `.spec.tls.certificate.*`. 59 | 60 | Afterwards, the `.spec.tls.certificate.*` values will be removed for security reasons. 61 | 62 | !!! note 63 | Percona Everest does not validate whether the provided TLS certificate matches the specified base domain name. 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /docs/backups_and_restore/backup_importers_rbac.md: -------------------------------------------------------------------------------- 1 | # RBAC for external backup imports in Percona Everest 2 | 3 | When importing external backups into Percona Everest, it is essential to consider Role-Based Access Control(RBAC) permissions. This ensures only authorized users have the required permissions to access and manage the data. 4 | 5 | 6 | ## Required roles and permissions 7 | 8 | The following RBAC permissions are supported for `DataImporters` and `DataImportJobs`: 9 | 10 | 11 | !!! info "Important" 12 | :x: Represents an action that's not supported by the Percona Everest API. 13 | 14 | |**Resource**| **Read**| **Create**| **Update**|**Delete**| 15 | |------------|---------|-----------|-----------|----------| 16 | | `data-importers`|[name]| :x:|:x: | :x:| 17 | | `data-import-jobs`|[namespace]/[db name]| :x:|:x: | :x:| 18 | 19 | 20 | ## Example: RBAC policy for importing a MySQL backup 21 | 22 | To import a MySQL backup using a `DataImporter`, a user with the `dbadmin` role needs the following permissions within the `a2` namespace : 23 | 24 | p, role:dbadmin, namespaces, read, * 25 | p, role:dbadmin, database-engines, read, a2/* 26 | p, role:dbadmin, database-clusters, *, a2/* 27 | p, role:dbadmin, backup-storages, read, a2/* 28 | p, role:dbadmin, database-cluster-backups, *, a2/* 29 | p, role:dbadmin, monitoring-instances, read, a2/* 30 | p, role:dbadmin, data-importers, read, everest-percona-pxc-operator 31 | p, role:dbadmin, data-import-jobs, read, a2/* 32 | 33 | 34 | ??? info "Let’s dive into decoding this!" 35 | 36 | | Resource |Action | Description | 37 | | ---------| ------|--------------| 38 | | `namespaces`| read| You can view all namespaces in the cluster. | | 39 | | `database-engines` | read | You can view the available database engine types within the `a2` namespace.| 40 | | `database-clusters` | \* | Full access to manage database clusters in the `a2` namespace. | 41 | | `backup-storages` | read | You can view configured external storage targets (e.g., S3, GCS). | 42 | | `database-cluster-backups` | \*| Grants complete control over database backups. You can create new backups, restore from existing ones, and delete them as needed. | 43 | | `monitoring-instances`| read| You can view monitoring configuration for clusters| 44 | | `data-importers` | read | You can view and use a specific `DataImporter` (in this case, everest-percona-pxc-operator) during the backup import workflow. Without this, the importer will not appear in the UI or CLI. | 45 | | `data-import-jobs`| read|You can monitor the status of import jobs triggered via the `DataImporter`.| 46 | 47 | !!! note 48 | For MongoDB and PostgreSQL, the importer names will be `everest-percona-psmdb-operator` and `everest-percona-pg-operator`, respectively. 49 | -------------------------------------------------------------------------------- /docs/backups_and_restore/RestoreBackup.md: -------------------------------------------------------------------------------- 1 | # Restore the database from a previously saved backup 2 | 3 | Database backups and data replication are complementary components of an effective disaster recovery strategy. 4 | 5 | Everest enables you to use backups to either create a new database or restore the backup data to the original database. Choosing between these two options often depends on the specific scenario, the urgency of recovery, the impact on ongoing operations, the need for data isolation, and the purpose of the restoration (such as testing, recovery from corruption, or analysis). 6 | 7 | ## Restore database from backup 8 | 9 | Restoring to the same cluster is useful in the following scenarios: 10 | 11 | - **For faster recovery**: It's typically quicker to restore data to an existing database as it eliminates the need for creating a new database deployment. 12 | - **Database consistency:** Maintains the same database ID, configurations, and dependencies, ensuring consistency within the existing environment. 13 | 14 | To restore a database from a backup: 15 | {.power-number} 16 | 17 | 1. In the **Databases** view, select the database you want to restore. 18 | 2. Click the Actions menu next to the backup you want to restore from, then click **Restore from a backup**. 19 | 3. In the **Restore database** pop-up, select **From a backup**. 20 | 21 | ![!image](../images/restore_from_backup.png) 22 | 23 | 4. Click **Restore**. 24 | 25 | 26 | ### Post-Restore step for MongoDB 27 | 28 | PITR restores alter the timeline of MongoDB oplog events. As a result, MongoDB oplog slices created after the restore timestamp and before the last backup become invalid. 29 | 30 | To seamlessly resume PITR after a restore, make sure to run a new full backup. This new backup will serve as the starting point for oplog updates, ensuring the continuity and integrity of your data. 31 | 32 | ## Restore to a point-in-time recovery 33 | 34 | !!! warning 35 | For PostgreSQL, point-in-time recovery (PITR) can get stuck in a **Restoring** state when you attempt to recover the database after the last transaction. See the [Limitation for PostgreSQL](../createBackups/EnablePITR.md#limitation) section for a workaround. 36 | 37 | 38 | To restore to a point-in-time recovery: 39 | {.power-number} 40 | 41 | 1. In the **Databases** view, select the database you want to replicate. 42 | 2. Click the Actions menu next to the backup you want to replicate from, then click **Restore from a backup**. The **Restore database** dialogue box opens. 43 | 3. In the **Restore database** pop-up, select **From a Point-in-time (PITR)**. Click on the calendar icon, choose the specific time to which you would like to restore the database. 44 | 45 | ![!image](../images/restore_pitr.png) 46 | 47 | 4. Click **Restore**. -------------------------------------------------------------------------------- /overrides/partials/banner.html: -------------------------------------------------------------------------------- 1 |
2 |

3 |

Get free database assistance or contact our experts for personalized support.

4 | 5 |
6 | 7 | Get help from Percona 8 |
9 |
10 | -------------------------------------------------------------------------------- /docs/troubleshoot/faq.md: -------------------------------------------------------------------------------- 1 | # Percona Everest: Frequently asked questions (FAQ) 2 | 3 | This page outlines the most frequently asked questions (FAQs) about Percona Everest. 4 | 5 | 6 | ## What is a DatabaseEngine? 7 | 8 | The `DatabaseEngine` is a resource that represents the installed engines (MySQL, MongoDB, PostgreSQL). 9 | 10 | Each `DatabaseEngine` indicates: 11 | 12 | - The operator version currently installed. 13 | - Compatible engine versions supported by that operator. 14 | 15 | Refer to our [API documentation](https://percona-everest.readme.io/reference/getkubernetesclusterresources-1){:target="_blank"} for usage information. 16 | 17 | ## Does Percona Everest provide logs for API calls? 18 | 19 | Yes, the Percona Everest backend has logs. It runs as an `everest-server` deployment within the `everest-system` namespace. 20 | 21 | - Accessing these logs helps us verify whether an API call was initiated for a specific user operation. 22 | 23 | - Identify any errors that may have occurred during that process. 24 | 25 | !!! note 26 | Percona Everest logs are essential for troubleshooting issues when an operation is **completed**, but the corresponding Everest operator resource **fails to be created**. 27 | 28 | 29 | Run the following command to retrieve the logs from the pods associated with the deployment: 30 | 31 | ```sh 32 | kubectl logs -f deploy/percona-everest -n everest-system 33 | ``` 34 | 35 | 36 | ## How to troubleshoot issues between the UI and the Percona Everest API? 37 | 38 | You can view the logs by running the following command: 39 | 40 | ```sh 41 | kubectl logs -f deploy/percona-everest -n everest-system 42 | ``` 43 | 44 | ## How to identify which component is failing? 45 | 46 | All communication with Percona Everest resources begins with the API. 47 | 48 | The API is responsible for updating Everest resources, while the Everest operator continues to create resources for the corresponding database operators. 49 | 50 | ## Recommended troubleshooting flow 51 | 52 | When debugging, start with the API, proceed to the Everest operator, and examine the individual database operators. 53 | 54 | 55 | ## Does Percona Everest deploy PMM servers? 56 | 57 | Percona Everest doesn't deploy PMM (Percona Monitoring and Management). However, you can deploy a PMM server while installing Percona Everest. You need to set `pmm.enabled=true`. 58 | 59 | We configure PMM agents in each DB deployment to communicate with an existing PMM server. 60 | 61 | The following table shows the [configurable parameters](https://github.com/percona/percona-helm-charts/tree/main/charts/everest#configuration){:target="_blank"} of Percona Everest chart and their default values. 62 | 63 | ### Monitoring configuration highlights: 64 | 65 | - `MonitoringConfig` contains all necessary details to connect to the PMM Server, including URL and API key. 66 | 67 | - An API key is generated to facilitate data transmission. This API key allows us to configure monitoring endpoints for individual database operators, enabling them to send data to PMM. 68 | 69 | !!! note 70 | PMM is an external service supported by Percona Everest. -------------------------------------------------------------------------------- /docs/use/API_rate_limit.md: -------------------------------------------------------------------------------- 1 | # API rate limiting 2 | 3 | 4 | API rate limiting is a crucial aspect of managing APIs effectively. It involves setting a threshold for the number of requests that an API can receive within a specific period. This enables you to regulate the number of incoming requests, mitigating the risk of server overload or abuse. 5 | 6 | 7 | ## Sessions rate limit 8 | 9 | The Everest API has a critical endpoint known as the `/session` endpoint, which is responsible for exchanging the user's login credentials (username and password) for a JSON web token (JWT). As this endpoint is used to authenticate users, it is important to implement additional security measures. 10 | 11 | By default, a Percona Everest installation allows three requests per second to this endpoint. It’s configurable via the `CREATE_SESSION_RATE_LIMIT` environment variable. 12 | 13 | Everest monitors failed login attempts per IP address and applies progressive timeouts to prevent unlimited login attempts without being throttled. When a rate limit is reached, the Percona Everest API will throw an error. 14 | 15 | 16 | ## Customize API rate limiting 17 | 18 | The default rate limit for Percona Everest is 100 requests per second. However, you have the option to modify these limits. To customize API rate limiting, you can adjust the rate limits to align them with your usage patterns and requirements. 19 | 20 | For example, when dealing with large systems that have many database clusters, the default limit of 100 may not be sufficient, and therefore, you might want to increase the limit. 21 | 22 | Customizing API rate limiting is crucial for the following reasons: 23 | 24 | - Attackers can launch brute force attacks on Auth Bearer Tokens by submitting a high volume of automated requests if rate limiting is not applied. Successful brute force attacks may compromise user credentials or sensitive information associated with the Auth Bearer Tokens. 25 | 26 | - The influx of excessive requests can overload the application server, using up bandwidth and storage. 27 | 28 | 29 | To customize the API rate limiting: 30 | {.power-number} 31 | 32 | 1. Run the following command: 33 | 34 | ``` 35 | kubectl -n everest-system patch deployment percona-everest --type strategic -p 'spec: 36 | strategy: 37 | rollingUpdate: 38 | maxSurge: 0 39 | maxUnavailable: 1 40 | type: RollingUpdate 41 | template: 42 | spec: 43 | affinity: 44 | podAntiAffinity: {} 45 | containers: 46 | - name: everest 47 | env: 48 | - name: API_REQUESTS_RATE_LIMIT 49 | value: "200" 50 | - name: CREATE_SESSION_RATE_LIMIT 51 | value: "3"' 52 | ``` 53 | 54 | Replace 200 with the desired value. 55 | 56 | 2. After executing the previous command, `percona-everest` pod will restart automatically. If you had port-forwarding running, it would exit, and you'll need to rerun it. 57 | 58 | ``` 59 | kubectl port-forward svc/everest 8080:8080 -n everest-system 60 | ``` 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /docs/release-notes/Percona-Everest-0.6.0-(2024-01-11).md: -------------------------------------------------------------------------------- 1 | # What's new in Percona Everest 0.6.0 2 | 3 | To begin your journey with Percona Everest, check out the [Quickstart Guide for Percona Everest](../quickstart-guide/quick-install.md). 4 | 5 | Percona Everest is an open source private database-as-a-service that helps developers deploy code faster, scale deployments rapidly, and reduce database administration overhead. Plus, you can regain control over your data, database configuration, and DBaaS costs. 6 | 7 | ## Release highlights 8 | 9 | Version 0.6.0 introduces the following enhancements: 10 | 11 | ### Point-in-Time Recovery (PITR) for finer backup granularity 12 | 13 | In addition to on-demand and scheduled backups, Everest now also offers PITR functionality to restore databases from past timestamps on the same cluster. 14 | 15 | PITR works by constantly backing up your database transaction logs following an initial full backup of the database. This enables you to: 16 | 17 | - Handle incorrect database writes by rolling back the database to a state before the error occurred 18 | - Minimize the potential for data loss by enabling very specific recovery points 19 | - Fulfill historical data auditing requirements to comply with laws and regulations 20 | 21 | For now, PITR is only available for MySQL databases. Future releases will enable this functionality for MongoDB and PostgreSQL databases as well. 22 | 23 | To get started, enable the new PITR option on the database creation wizard: 24 | 25 | ![PITR](../images/PITR.PNG) 26 | 27 | For more information about working with PITR backups, see [Enable Point-in-time Recovery](../use/createBackups/EnablePITR.md). 28 | 29 | ### Secure access through user authentication 30 | 31 | We have taken a significant step towards ensuring the security of Percona Everest by introducing user authentication in our latest release. This feature is designed to restrict access to the databases hosted on Percona Everest, thereby safeguarding any sensitive information stored within them. With user authentication in place, only authorized users will be able to access the databases. 32 | 33 | If you’re looking to dive deep into this feature, see our comprehensive [documentation](https://docs.percona.com/everest/secure/user-auth.html). 34 | 35 | ### Dark mode 36 | 37 | We are excited to announce that the latest version of Percona Everest 0.6.0 introduces a new feature called Dark Mode. This feature enables you to switch the color scheme of the Percona Everest user interface from a predominantly light or white background to a predominantly dark one. 38 | 39 | Dark Mode gives you a more comfortable and easy-on-the-eyes visual experience while navigating through Percona Everest. To use this feature, simply toggle it on or off from the UI. Once enabled, the color palette of the user interface changes to a darker shade, enhancing the overall user experience. 40 | 41 | ### Enhanced user experience for database restoration from backups 42 | 43 | When restoring a backup to a new database, you no longer need to manually confirm that you’re using the same secret as the selected backup. Everest now seamlessly handles this verification in the background. 44 | -------------------------------------------------------------------------------- /docs/get-help.md: -------------------------------------------------------------------------------- 1 | # Get help from Percona 2 | 3 | Our documentation guides are packed with information, but they can’t cover everything you need to know about Percona Everest. They also won’t cover every scenario you might come across. Don’t be afraid to try things out and ask questions when you get stuck. 4 | 5 | ## Percona's Community Forum 6 | 7 | Be a part of a space where you can tap into a wealth of knowledge from other database enthusiasts and experts who work with Percona’s software every day. While our service is entirely free, keep in mind that response times can vary depending on the complexity of the question. You are engaging with people who genuinely love solving database challenges. 8 | 9 | We recommend visiting our [Community Forum](https://forums.percona.com/c/percona-everest/81){:target="_blank"}. It’s an excellent place for discussions, technical insights, and support around Percona database software. If you’re new and feeling a bit unsure, our [FAQ](https://forums.percona.com/faq){:target="_blank"} and [Guide for New Users](https://forums.percona.com/t/faq-guide-for-new-users/8562){:target="_blank"} ease you in. 10 | 11 | If you have thoughts, feedback, or ideas, the community team would like to hear from you at [Any ideas on how to make the forum better?](https://forums.percona.com/t/any-ideas-on-how-to-make-the-forum-better/11522){:target="blank"}. We’re always excited to connect and improve everyone's experience. 12 | 13 | ## Percona experts 14 | 15 | Percona experts bring years of experience in tackling tough database performance issues and design challenges. 16 | 17 |
18 | We understand your challenges when managing complex database environments. That's why we offer various services to help you simplify your operations and achieve your goals. 19 | 20 | | Service | Description | 21 | |----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------| 22 | | 24/7 Expert Support | Our dedicated team of database experts is available 24/7 to assist you with any database issues. We provide flexible support plans tailored to your specific needs. | 23 | | Hands-On Database Management | Our managed services team can take over the day-to-day management of your database infrastructure, freeing up your time to focus on other priorities. | 24 | | Expert Consulting | Our experienced consultants provide guidance on database topics like architecture design, migration planning, performance optimization, and security best practices. | 25 | | Comprehensive Training | Our training programs help your team develop skills to manage databases effectively, offering virtual and in-person courses. | 26 | 27 | We're here to help you every step of the way. Whether you need a quick fix or a long-term partnership, we're ready to provide your expertise and support. 28 | -------------------------------------------------------------------------------- /docs/administer/manage_namespaces.md: -------------------------------------------------------------------------------- 1 | # Namespaces management 2 | 3 | The management of namespaces plays a vital role in efficiently organizing and allocating resources within Percona Everest. 4 | 5 | ## Add new namespaces 6 | 7 | You can run the following command for provisioning a new DB namespace: 8 | 9 | ```sh 10 | everestctl namespaces add [NAMESPACE] 11 | ``` 12 | 13 | The command supports the following flags: 14 | 15 | `--operator.mongodb=` 16 | 17 | `--operator.postgresql=` 18 | 19 | `--operator.xtradb-cluster=` 20 | 21 | `--take-ownership` - Allows Percona Everest to manage an existing Kubernetes namespace by adding the necessary labels. Without this flag, Percona Everest will attempt to create the namespace and throw an error if it already exists. Use this flag to take over an existing namespace. 22 | 23 | ??? example "Example" 24 | ```sh 25 | everestctl namespaces add development --operator.postgresql=false 26 | ✓ Installing namespace 'development' 27 | ``` 28 | In the above command, we did not specify the MongoDB and MySQL operators. Therefore, by default, Percona Everest assumes these operators are true and will add them. 29 | 30 | ```sh 31 | everestctl namespaces add production 32 | 33 | ? Which operators do you want to install? MongoDB 34 | ✓ Installing namespace 'production' 35 | ``` 36 | 37 | !!! note 38 | The `everestctl install` command allows you create database namespaces during the initial installation. However, it cannot be rerun to add more database namespaces. To create additional database namespaces after installation, use the namespaces add command. 39 | 40 | - To provision a DB namespace after installation, use the command `everestctl namespaces add`. 41 | 42 | - You may choose to skip the DB namespace installation in the `everestctl install` command. 43 | 44 | ## Update namespaces 45 | 46 | !!! info "Important" 47 | Removing operators with `update` is currently not supported. 48 | 49 | You can run the following command to add more operators to an existing DB namespace. 50 | 51 | 52 | ```sh 53 | everestctl namespaces update [NAMESPACE] 54 | ``` 55 | 56 | ??? example "Example" 57 | ```sh 58 | everestctl namespaces update development 59 | 60 | ? Which operators do you want to install? MongoDB 61 | ✓ Updating namespace 'development' 62 | ``` 63 | 64 | 65 | ## Delete namespaces 66 | 67 | You can run the following command for deleting namespaces: 68 | 69 | ```sh 70 | everestctl namespaces remove [NAMESPACE] 71 | ``` 72 | 73 | - This command deletes only the specified namespace, as long as it is managed by Percona Everest. 74 | 75 | - Setting `--keep-namespace` deletes all resources within the namespace (e.g., operators, DatabaseClusters, BackupStorages) while preserving the namespace itself. Use this option to clean up the namespace without removing it. 76 | 77 | 78 | ??? example "Example" 79 | ```sh 80 | everestctl namespaces remove development 81 | 82 | ✓ Deleting database clusters in namespace 'development' 83 | ✓ Deleting backup storages in namespace 'development' 84 | ✓ Deleting monitoring instances in namespace 'development' 85 | ✓ Deleting namespace 'development' 86 | ``` 87 | -------------------------------------------------------------------------------- /docs/administer/apply_policies_cluster.md: -------------------------------------------------------------------------------- 1 | # Apply or change Pod scheduling policies for your DB clusters 2 | 3 | ## Apply pod scheduling policy to a new DB cluster 4 | 5 | !!! info "Important" 6 | If RBAC is enabled, Percona Everest only displays Pod scheduling policies applicable to the selected DB Engine type for which the user has read access. 7 | 8 | You can apply a Pod scheduling policy when creating a cluster by following these steps: 9 | {.power-number} 10 | 11 | 1. From the database creation wizard, go to **Advanced Configurations** page. In the **Pod scheduling policy** 12 | section, choose a policy from the dropdown. 13 | 14 | ![!image](../images/assign_policy.png) 15 | 16 | 17 | 2. Click **Continue** till you reach the end of the wizard. 18 | 19 | 3. Click **Create Database** to apply the policy. 20 | 21 | !!! note 22 | You must first [create the policy](custom_policies.md#create-pod-scheduling-policy-for-your-db-cluster) to see the custom policy in the **Pod scheduling policy** dropdown on the **Advanced Configurations** page. 23 | 24 | ## Apply pod scheduling policy to an existing DB cluster 25 | 26 | !!! warning 27 | When you apply a policy to an existing DB cluster, the database cluster may **restart** to use the new affinity configuration. 28 | 29 | You can apply a Pod scheduling policy for an existing DB cluster by following these steps: 30 | {.power-number} 31 | 32 | 1. Go to the **Overview** page of the desired cluster and click **Edit** on the **Advanced configuration** panel. The **Edit advanced configuration** pop-up opens. 33 | 34 | 2. In the **Pod scheduling policy** section, select the policy from the dropdown. 35 | 36 | 3. Click **Save**. The chosen pod scheduling policy will now be added to your cluster. 37 | 38 | 39 | ![!image](../images/assign_policy_existing_cluster.png) 40 | 41 | 42 | ## Change Pod scheduling policy for an existing DB cluster 43 | 44 | !!! warning 45 | When you change the policy from **policy A** to **policy B**, the database cluster might **restart** to apply the new affinity configuration. 46 | 47 | You can change a Pod scheduling policy for an existing DB cluster by following these steps: 48 | {.power-number} 49 | 50 | 1. Go to the **Overview** page of the cluster you want to modify and click **Edit** in the **Advanced configuration** panel. The **Edit advanced configuration** pop-up opens. 51 | 52 | ![!image](../images/change_PSP_for_cluster.png) 53 | 54 | 2. In the **Pod scheduling policy** section, choose the policy you want to apply to the existing cluster. 55 | 56 | ![!image](../images/change_PSP_fromA_B.png) 57 | 58 | 59 | 3. Click **Save**. The new policy will be applied to your DB cluster. 60 | 61 | ## Remove Pod scheduling policy for an existing DB cluster 62 | 63 | To remove the policy from the cluster, turn off the **Enable** toggle in the **Pod scheduling policy **section. This will disable the policy assigned to the DB cluster. 64 | 65 | ![!image](../images/delete_policies.png) 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /docs/use/manual_storage_scaling.md: -------------------------------------------------------------------------------- 1 | # Manual storage scaling 2 | 3 | You can increase the capacity of your storage through manual storage scaling. This feature enables you to adapt to rising data demands, providing more flexibility in managing growing database workloads while ensuring system stability and data security. 4 | 5 | ## Storage management in Percona Everest 6 | 7 | In Kubernetes environments running Percona Everest, storage is managed using *Persistent Volumes (PVs)* and *Persistent Volume Claims (PVCs)*. Everest automates storage provisioning through `StorageClasses`. 8 | 9 | For storage scaling, Everest supports volume expansion, enabling users to increase storage size provided the associated `StorageClass` allows it. 10 | 11 | For detailed information on PVs and PVCs, refer to the official [Kubernetes documentation](https://kubernetes.io/docs/concepts/storage/persistent-volumes/){:target="_blank"}. 12 | 13 | ## Prerequisites 14 | 15 | - When scaling storage manually for a database managed by Percona Everest, ensure that the `StorageClass` used by the database's **PersistentVolumeClaim (PVC)** supports **volume expansion**. This setting allows the size of the underlying Persistent Volume to be increased after it has been created. 16 | 17 | !!! note 18 | In Kubernetes, manual disk scaling only works if the associated `StorageClass` has the following setting: 19 | 20 | ```sh 21 | allowVolumeExpansion: true 22 | ``` 23 | 24 | To verify if your storage class allows for volume expansion, execute the following command: 25 | 26 | ```sh 27 | kubectl get storageclass 28 | ``` 29 | 30 | ??? example "Expected output" 31 | ``` 32 | NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE 33 | expandable-storage kubernetes.io/aws-ebs Delete WaitForFirstConsumer true 42m 34 | ``` 35 | 36 | - When scaling storage in Percona Everest, always verify that [resource quotas](https://kubernetes.io/docs/concepts/policy/resource-quotas/#storage-resource-quota){:target="_blank"} allow the requested storage capacity. For more information, see the [known limitations](../reference/known_limitations.md#manual-storage-scaling) section. 37 | 38 | ## Editing storage capacity 39 | 40 | !!! info "Important" 41 | - Cluster resizing is permanent and cannot be reversed. 42 | - Disk size can only be increased. Decreasing the disk is not supported to protect data integrity. 43 | 44 | To modify storage capacity, follow these steps: 45 | {.power-number} 46 | 47 | 1. Navigate to the **Overview** page for your database from the Percona Everest home page. 48 | 49 | 2. Click **Edit** in the Resources panel. The **Edit Topology** pop-up will be displayed. 50 | 51 | 3. Locate the **DISK** field and enter the disk value (in Gi) to the new desired capacity. 52 | 53 | ![!image](../images/edit_storage_capacity.png) 54 | 55 | 4. Click **Save**. 56 | 57 | 5. After clicking **Save**, go back to the **Overview** page and check that the **DISK** field reflects the new capacity. 58 | 59 | For information about the limitations of manual storage scaling, refer to the [known limitations](../reference/known_limitations.md#manual-storage-scaling) section. 60 | 61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /docs/backups_and_restore/createBackups/EnablePITR.md: -------------------------------------------------------------------------------- 1 | # Point-in-time recovery (PITR) backups 2 | 3 | PITR maintains versions of your database from past timestamps, serving as a safeguard against data loss during various disasters, including database crashes, accidental data deletions, table drops, or unintended updates to multiple fields instead of a single one. 4 | 5 | PITR complements on-demand and scheduled backup strategies by providing finer backup granularity with more specific recovery points for restoring data to the same cluster. 6 | 7 | 8 | ## How it works 9 | 10 | Restoring databases up to a specific moment in time involves retrieving data from a backup snapshot and replaying all subsequent events that occurred until a specified moment using log slices. 11 | 12 | When PITR and backups are enabled (either on-demand or scheduled), Percona Everest starts capturing successive database logs at predefined intervals. As soon as the initial full backup is available, Everest can start restoring the database from these PITR logs. 13 | 14 | Since Everest saves logs and streams them into your storage between scheduled task runs, scheduling frequent backups is not necessary. You can use the available logs in your storage to restore a backup to any moment between snapshots. 15 | 16 | ## PITR upload intervals 17 | 18 | By default, Everest uploads PITR logs every minute for MySQL databases and every ten minutes for MongoDB databases. If you wish to adjust these default intervals, you can easily do so through the Everest API. 19 | 20 | ## Enable Point-in-time recovery 21 | 22 | ### Prerequisites 23 | 24 | Before enabling PITR, go to **Settings > Backup Storages** and check that you have an available S3-compatible location for storing backups. Otherwise, [create a backup location](../createBackups/backup_storage/CreateStorage.md) so Everest can store PITR artifacts for the database. 25 | 26 | To enable PITR: 27 | {.power-number} 28 | 29 | === "When creating a new database" 30 | 31 | 32 | 1. On the Everest homepage, click **Create database** to display the database creation wizard. 33 | 2. Fill in the details of your database on the first steps of the wizard. 34 | 3. Navigate to the **Backups** page, and make sure to enable and configure a backup schedule. 35 | 4. Click **Next** to go to the **Point-in-time recovery (PITR)** page where you can enable PITR and specify a location for storing the PITR backups and logs. 36 | 5. Complete the setup wizard to create the new database with PITR enabled. 37 | 38 | === "When editing an existing database" 39 | 40 | 1. On the **Databases** view page, select the database for which you want to enable PITR. The **Overview** tab will be displayed. 41 | 2. Navigate to **Backups & PITR > Point-in-time Recovery (PITR)** widget. 42 | 3. Click **Edit**. The **Edit PITR** pop-up will be displayed. 43 | 4. Toggle the switch on or off based on whether you want to enable or disable PITR. Click **Save**. 44 | 45 | 46 | ## Limitations 47 | 48 | There are some limitations associated with the PITR functionality. For a comprehensive list of known limitations, see the [known Limitations](../../reference/known_limitations.md#point-in-time-recovery-pitr) section. 49 | 50 | ## Next step 51 | 52 | [Restore backups :material-arrow-right:](../RestoreBackup.md){.md-button} -------------------------------------------------------------------------------- /docs/administer/default_policies.md: -------------------------------------------------------------------------------- 1 | # Default configuration for Pod scheduling policies 2 | 3 | In Percona Everest, the default pod scheduling policies are **preset** rules that help ensure optimal placement of database components across a Kubernetes cluster. 4 | 5 | Percona Everest users can use these predefined settings without the need to create custom rules for every database cluster they set up. 6 | 7 | 8 | !!! info "Important" 9 | - The **predefined** Pod scheduling policies in Percona Everest are applied by default with every deployment for new and existing DB clusters based on your database type. 10 | - Default policies **cannot** be modified or deleted. 11 | - We **recommend using the default pod scheduling policies** for most deployments. The default policies are designed to allocate all the DB components on separate Kubernetes nodes, making the DB clusters redundant for fault tolerance. 12 | 13 | 14 | ## Common attributes of default Pod scheduling policies 15 | 16 | The following are the common attributes of a default policy for all three database technologies. 17 | 18 | - **Type**: The Affinity Type applied is **Pod Anti-Affinity**. This ensures that pods of the same component are not co-located on the same node. 19 | 20 | - **Preference**: **Preferred** means the scheduler will try to satisfy this rule but will still schedule the pod even if the condition cannot be met. 21 | 22 | - **Topology Key**: The topology key `kubernetes.io/hostname` defines the scope of the rule. In this case, it ensures that the anti-affinity is evaluated at the node level, preventing matching pods from being placed on the same node. 23 | 24 | 25 | These policies use pod labels to identify which pods should not be co-located. The scheduler will try to honor the rule but will not enforce the separation of pods. 26 | 27 | ## Default policy components by database technology 28 | 29 | The **Components** for a default policy change as per the technology: 30 | 31 | ### Components for MYSQL database 32 | 33 | - **DB Node**: The core component that stores and serves data. 34 | 35 | - **Proxy**: Acts as a load balancer and router for DB Nodes. 36 | 37 | Default anti-affinity prevents multiple DB Nodes or Proxies of the same cluster from being scheduled on the same node. 38 | 39 | ![!image](../images/mysql_default_policy.png) 40 | 41 | 42 | ### Components for PostgreSQL database 43 | 44 | - **DB Node**: The main PostgreSQL database engine instance. 45 | - **PG Bouncer**: A lightweight connection pooler for PostgreSQL. 46 | 47 | 48 | The policy ensures separation (that is, allocate each DB cluster or component to a seperate node) between DB Nodes and PG Bouncers. 49 | 50 | ![!image](../images/pg_default_policy.png) 51 | 52 | 53 | ### Components for MongoDB database sharded cluster 54 | 55 | - **DB Node:** Stores the actual application data. 56 | - **Config Server:** Stores metadata and configuration for the cluster; required for sharding. 57 | - **Router:** It routes queries to the correct shard(s). 58 | 59 | 60 | This policy prevents multiple replica set members or config servers from failing simultaneously if a node goes down. 61 | 62 | ![!image](../images/default_mongo_policy.png) 63 | 64 | ### Components for MongoDB database non-sharded cluster 65 | 66 | - **DB Node:** Replica set members that handle reads and writes for the complete dataset 67 | 68 | This policy is designed to prefer the placement of DB Nodes (replica set members) on separate nodes. 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /docs/backups_and_restore/createBackups/CreateOnDemand.md: -------------------------------------------------------------------------------- 1 | # On-demand and scheduled backups 2 | 3 | Initiate an immediate backup for hands-on control, or schedule one if you prefer the automated reliability of scheduled backups. 4 | 5 | ## Create on-demand backups 6 | 7 | On-demand backups give you immediate control over when and what data to back up. One-time backups can be particularly useful when you need to safeguard critical information before making significant changes to your database. 8 | 9 | !!! info "Important" 10 | There are few limitations to consider when working with PostgreSQL's on-demand backups. For detailed information, refer to the [limitations](../../reference/known_limitations.md#postgresql-limitations-for-on-demand-backups) section. 11 | 12 | To create a backup now: 13 | {.power-number} 14 | 15 | 1. Go to **Settings > Backup Storages** and check that you have an available S3-compatible location for storing backups. Otherwise, [create a backup location](../createBackups/backup_storage/CreateStorage.md) so Everest can store backup artifacts for the database. 16 | 2. Go to the **Databases** view and select the database which you want to back up. 17 | 3. Navigate to the **Backups** tab and click **Create backup > Now**. 18 | 4. In the **Create Backup** pop-up, change the default backup name if required, select an available backup location, and then click **Create**. 19 | 20 | ## Schedule a backup 21 | 22 | Schedule a backup when you want your backups to occur automatically at predetermined intervals. This automation reduces the risk of human error and ensures that your data is consistently backed up without requiring your constant intervention. 23 | 24 | !!! info "Important" 25 | There are few limitations to consider when working with PostgreSQL's scheduled backups. For detailed information, refer to the [limitations](../../reference/known_limitations.md#postgresql-limitations-for-schedules) section. 26 | 27 | To configure a backup schedule: 28 | {.power-number} 29 | 30 | 1. Go to **Settings > Backup Storages** and check that you have an available AWS S3-compatible location for storing backups. Otherwise, [create a backup location](../createBackups/backup_storage/CreateStorage.md) so Everest can store backup artifacts for the database. 31 | 2. Go to the **Databases** view and select the database which you want to back up. 32 | 3. Navigate to the **Backups** tab and click **Create backup > Schedule**. 33 | 4. Change the default backup name if required, and configure the frequency and start time for the backups. 34 | 35 | !!! note alert alert-primary "Important" 36 | Make sure that the schedule you specify here does not create overlapping jobs or overhead on the production environment. Also, check that your specified schedule does not overlap with production hours. 37 | 38 | 5. Click **Create**. All scheduled backups for the current DB will be listed at the top so you can review the schedules that are currently generating backup artifacts. 39 | 40 | ### Edit a scheduled backup 41 | 42 | To edit a schedule that is currently generating backup artifacts: 43 | {.power-number} 44 | 45 | 1. Go to the **Databases** view and select the DB for which backups have been scheduled. 46 | 2. Select the **Backups** tab and expand the Schedule box. 47 | 3. Select the schedule you want to update, click the ellipsis and select **Edit**. 48 | 4. Update the schedule and click **Save**. 49 | 50 | ## Next step 51 | [Enable PITR :material-arrow-right:](../createBackups/EnablePITR.md){.md-button} 52 | [Restore backups :material-arrow-right:](../RestoreBackup.md){.md-button} -------------------------------------------------------------------------------- /docs/api_rbac.md: -------------------------------------------------------------------------------- 1 | # Navigating the breaking API changes for RBAC 2 | 3 | Starting with Percona Everest v1.2.0, breaking changes are being made to the API for `monitoring-instances` and `backup-storage` resources. These changes are: 4 | 5 | - Before the release of Percona Everest 1.2.0, these resources were globally scoped, but now they will be specific to namespaces. 6 | 7 | - The database clusters can only use `monitoring-instances` and `backup-storages` located within the same namespace as the cluster. The system used a `.spec.allowedNamespaces` field to control access to these global resources. This field determined the namespaces where the resource could be accessed, providing a certain degree of access control. 8 | 9 | - With the update to Percona Everest v1.2.0, the shift from global scope to designated namespaces for these resources marks a significant change in the way access control is managed. This change enhances security by ensuring these resources are only accessible within their designated namespaces. 10 | 11 | ## Challenges with globally scoped namespaces 12 | 13 | In Percona Everest v1.2.0, we’ve rolled out Role Based Access Control (RBAC) to enhance security and provide more granular control over the access privileges for specific resources within the system. This implementation provides fine-grained control over which users and user groups can access particular resources within the system. 14 | 15 | The RBAC model functions on the principle that all resources are organized into namespaces. This enables a well-structured and hierarchical arrangement of resources, simplifying access rights management according to the namespace to which a resource is associated. 16 | 17 | Prior to Percona Everest version 1.2.0, certain resources such as `backup-storages` and `monitoring-instances` were not organized into namespaces but were accessible globally. To enforce access restrictions on these globally scoped resources, the system utilized a `.spec.allowedNamespaces` field. The `.spec.allowedNamespaces` field specifies the namespaces within which the resource can be accessed, giving you certain level of control. 18 | 19 | Using the `.spec.allowedNamespaces` field for globally scoped resources presented challenges when integrating with the core RBAC model. To fix this and align with the RBAC framework, `backup-storages` and `monitoring-instances` are now namespaced resources. This ensures that all resources conform to the same RBAC model, which results in a consistent and manageable access control structure across the system. 20 | 21 | ## Changes in the Percona Everest APIs 22 | 23 | The APIs have been updated with the following modifications: 24 | 25 | - The existing APIs for backup storage and monitoring instances are deprecated. Now, you should use the API path prefixed with `/namespaces/{namespace}`. 26 | 27 | ??? example "Example" 28 | 29 | ```/v1/backup-storages``` is now 30 | 31 | ```/v1/namespaces/{namespace}/backup-storages``` 32 | 33 | Check out the [API](https://percona-everest.readme.io/reference/getkubernetesclusterresources) documentation for more details. 34 | 35 | - The `.spec.allowedNamespaces` field has been deprecated. Access control for these resources is now managed through the RBAC policy. 36 | 37 | - `database-clusters` can now only reference `backup-storages` and `monitoring-instances` created within the same namespace as the `database-cluster`. 38 | 39 | ### Migrating to Percona Everest 1.2.0 40 | 41 | When upgrading to 1.2.0, all your existing backup-storages and monitoring-instances will be automatically migrated to the namespaces specified in their `.spec.allowedNamespaces `fields. After the upgrade, these resources will be accessible exclusively through the new API endpoints. 42 | 43 | Need more details? Check out the [upgrade](upgrade/upgrade_with_cli.md#upgrading-to-percona-everest-120) section. 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/use/multi-namespaces.md: -------------------------------------------------------------------------------- 1 | # Multiple namespaces 2 | 3 | In Kubernetes, the concept of namespaces enables you to create isolated groups of resources within a single cluster. These namespaces provide a way to organize and manage resources without interfering with other resources within the same cluster. 4 | 5 | 6 | !!! info "Important" 7 | Resource names must be unique within a specific namespace but not across different namespaces. 8 | 9 | 10 | ## Use case for multiple namespaces 11 | 12 | If you are dealing with complex environments comprising Kubernetes clusters that need to be used with Percona Everest, you can leverage the multiple namespace feature. This feature enables logical partitioning within the cluster. 13 | 14 | For example, you can deploy different environments like production, development, and QA within a single cluster by using multiple namespaces. This approach enables you to efficiently manage the clusters. 15 | 16 | ## Default namespaces in Percona Everest 17 | 18 | !!! info "Important" 19 | The following namespaces are restricted and cannot be used for deploying databases. 20 | 21 | Percona Everest will create the following namespaces by default. You can see these default namespaces while Percona Everest is being installed. 22 | 23 | - everest-olm: hosts the [Operator Lifecycle Manager](https://olm.operatorframework.io/) that manages all operators that are part of everest 24 | - everest-system: hosts Everest 25 | - everest-monitoring: hosts the monitoring stack for kubernetes metrics ([VictoriaMetrics](https://victoriametrics.com/) and [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics)) 26 | 27 | To set up the namespaces that Percona Everest will manage and where you can deploy your databases, see the [Installation](../install/installEverest.md#installation) section. 28 | 29 | ## Configure multiple namespaces 30 | 31 | The following holds true for multiple namespaces: 32 | 33 | - You can [configure multiple namespaces](../administer/manage_namespaces.md#add-new-namespaces) in Percona Everest using the `everestctl namespaces add [NAMESPACE]` command. 34 | 35 | - You can [install different operators](../administer/manage_namespaces.md#update-namespaces) in various namespaces using the `everestctl namespaces update [NAMESPACE]` command. 36 | 37 | 38 | ??? example "Example: Configuring multiple namesapces and installing various operators within those namespaces" 39 | To install various operators in different namespaces, such as MongoDB and MySQL operator in namespace production, and PostgreSQL operator in namespace development, run the following commands: 40 | {.power-number} 41 | 42 | 1. `everestctl namespaces add development` 43 | 44 | ??? example "Expected output" 45 | ```sh 46 | ? Which operators do you want to install? PostgreSQL 47 | ✓ Installing namespace 'development' 48 | ``` 49 | 50 | 2. `everestctl namespaces add production`. 51 | 52 | ??? example "Expected output" 53 | ```sh 54 | ? Which operators do you want to install? MySQL, MongoDB 55 | ✓ Installing namespace 'production' 56 | ``` 57 | 58 | 59 | Go to Percona Everest UI and navigate to **Settings > Namespaces**. A list of all the namespaces that you have created will appear here. 60 | 61 | ![!image](../images/everest_multinamespaces.png) 62 | 63 | ## Deploy the database in your namespace 64 | 65 | Once you have configured your namespaces, you can choose the namespace where you want to deploy your new database cluster. 66 | 67 | ![!image](../images/everest_multi-namespaces.png) 68 | 69 | For information on deploying a new database cluster in the namespace, see the [Provision a database](../use/db_provision.md) section. 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /docs/css/percona.css: -------------------------------------------------------------------------------- 1 | [data-md-color-scheme="percona-light"] { 2 | --md-primary-fg-color: #0d184c; 3 | --md-primary-fg-color--light: #3e4875; 4 | --md-default-fg-color--lightest: #9096b0; 5 | --md-primary-fg-color--dark: #080e2e; 6 | --md-typeset-a-color: #2cbea2; 7 | } 8 | [data-md-color-scheme="slate"] { 9 | --md-primary-fg-color: #0d184c; 10 | /* 11 | --md-primary-fg-color--light: #3e4875; 12 | --md-primary-fg-color--dark: #080e2e; 13 | */ 14 | --md-typeset-a-color: #2cbea2; 15 | --md-hue: 210; /* [0, 360] */ 16 | } 17 | ul li p { 18 | margin: 0; 19 | } 20 | 21 | .md-clipboard { 22 | color: #2cbea2; 23 | } 24 | 25 | .md-typeset { 26 | font-size: .7rem; 27 | line-height: 1.5; 28 | } 29 | 30 | .md-typeset h1 { 31 | color: var(--md-default-fg-color--light); 32 | font-size: 2em; 33 | font-weight: 400; 34 | line-height: 1.3; 35 | margin: 0 0 0.9em; 36 | } 37 | 38 | .md-typeset h2 { 39 | font-size: 1.5625em; 40 | line-height: 1.4; 41 | margin: 1em 0 .54em; 42 | } 43 | 44 | article table { 45 | page-break-before: auto !important; 46 | page-break-inside: auto !important; 47 | } 48 | 49 | article ol { 50 | page-break-before: auto !important; 51 | page-break-inside: auto !important; 52 | } 53 | 54 | .md-typeset .md-button { 55 | border: .1rem solid; 56 | border-radius: 50px; 57 | color: var(--md-typeset-a-color); 58 | cursor: pointer; 59 | display: inline-block; 60 | font-weight: 700; 61 | padding: .625em 2em; 62 | transition:color 125ms, background-color 125ms, border-color 125ms 63 | } 64 | 65 | .md-typeset .md-button--primary { 66 | background-color: var(--md-typeset-a-color); 67 | border-color: var(--md-typeset-a-color); 68 | color:var(--md-primary-bg-color) 69 | } 70 | 71 | .md-typeset .md-button:focus, .md-typeset .md-button:hover { 72 | background-color: var(--md-accent-fg-color); 73 | border-color: var(--md-accent-fg-color); 74 | color:var(--md-accent-bg-color) 75 | } 76 | 77 | section { 78 | page-break-before: auto !important; 79 | page-break-inside: auto !important; 80 | } 81 | 82 | /* Custom Banner */ 83 | [data-banner] { 84 | padding: 1.5em; 85 | margin: 2em 0; 86 | border: 0.05rem solid var(--md-default-fg-color--lighter); 87 | /* border: 0.05rem solid var(--md-typeset-table-color); */ 88 | border-radius: 0.2rem; 89 | } 90 | [data-banner] .title { 91 | font-weight: normal; 92 | margin: 0; 93 | } 94 | [data-banner] > :last-child { 95 | margin-bottom: 0; 96 | } 97 | [data-banner] a:link { 98 | font-weight: bold; 99 | } 100 | [data-banner] .actions > p { 101 | margin: 0; 102 | } 103 | [data-banner] .actions a { 104 | display: inline-block; 105 | margin: 0.5em 1.5em 0 0; 106 | } 107 | [data-banner] > :only-child, 108 | [data-banner] .actions a:first-of-type { 109 | margin-top: 0; 110 | } 111 | [data-banner] a [class*="moji"] { 112 | height: 1.3333em; 113 | vertical-align: -0.3333em; 114 | } 115 | [data-banner] a [class*="moji"] svg { 116 | width: 1.3333em; 117 | } 118 | [data-grid] { 119 | display: flex; 120 | flex-wrap: wrap; 121 | margin-right: -1rem; 122 | } 123 | [data-grid] [data-banner] { 124 | flex: 1 1 320px; 125 | display: flex; 126 | flex-direction: column; 127 | margin: 0 1rem 1rem 0; 128 | } 129 | [data-grid] .title { 130 | font-size: 0.8rem; 131 | font-weight: bold; 132 | } 133 | [data-grid] [data-banner] > p:last-child { 134 | margin-top: 0; 135 | } 136 | [data-grid] [data-banner] > p:nth-last-child(2) { 137 | flex-grow: 2; 138 | } 139 | [data-grid] + [data-banner] { 140 | margin-top: 0; 141 | } 142 | [data-grid] .md-button { 143 | margin: 0.5em 0.25em 0 0; 144 | } 145 | 146 | /*.git-revision-date-localized-plugin:before { 147 | content: url('https://api.iconify.design/mdi/clock-edit-outline.svg'); 148 | }*/ -------------------------------------------------------------------------------- /docs/use/db_engine_config.md: -------------------------------------------------------------------------------- 1 | # Configure database engine 2 | 3 | Percona Everest provides configuration settings and options, which are essential for tailoring the database behavior and performance to meet the needs of various applications. You can fine-tune your database operations using these settings and options, thus increasing efficiency and productivity. 4 | 5 | 6 | ## Configure database engine for new database cluster 7 | 8 | To configure your database engine in Percona Everest: 9 | {.power-number} 10 | 11 | 1. From the Percona Everest main page, navigate to **Create database > Advanced Configurations** page. 12 | 13 | 2. Select the **Exposure Method** as either **Cluster IP** or **Load balancer**. 14 | 15 | 3. From the **Load balancer configuration** drop-down, choose the configuration you want to apply. Click **Add new** to add the IP addresses in the **Source Range** field. 16 | 17 | If you’re looking to dive deeper into setting up your load balancer, check out our comprehensive guide on [Load balancer configuration](../networking/load_balancer_config.md). 18 | 19 | 20 | !!! note alert alert-primary "Note" 21 | - Enabling remote access to your database can lead to serious security risks such as unauthorized access, data breaches, and compliance violations. 22 | - The network mask is always required, so if you want to limit access to a single IP, ensure to add the `/32` network mask. 23 | 24 | 25 | ![!image](../images/everest_adv_config_ip_source.png) 26 | 27 | 4. From the Split-Horizon DNS section, switch the toggle to ON and then select the desired Split-Horizon DNS policy from the dropdown. 28 | 29 | For in-depth information, see the [configure Split-Horizon DNS policy](../networking/split-horizon_config.md#configure-split-horizon-dns-policy-for-your-mongodb-cluster) section. 30 | 31 | 5. You can optimize your database's performance using **Database Engine Parameters** on the **Advanced configurations** page. 32 | 6. Enable Database engine parameters by using the toggle. 33 | 7. Configure specific values to optimize performance, security, and functionality according to your requirements by entering the values in the text box. 34 | 35 | ![!image](../images/everest_adv_config.png) 36 | 37 | Here are some configuration examples for each supported engine type: 38 | 39 | **MySQL** 40 |
[mysqld]
41 |     key_buffer_size=16M
42 |     max_allowed_packet=128M
43 |     max_connections=250
44 | 45 | **Mongo** 46 |
operationProfiling:
47 |       mode: slowOp
48 |       slowOpThresholdMs: 200
49 | 50 | **PostgreSQL** 51 |
log_connections = yes
52 |     search_path = '"$user", public'
53 |     shared_buffers = 128MB
54 | 55 | For more information on configuring specific database parameters, see the [MySQL](https://dev.mysql.com/doc/refman/8.0/en/option-files.html){:target="_blank"}, [MongoDB](https://www.mongodb.com/docs/manual/reference/configuration-options/){:target="_blank"}, and [PostgreSQL](https://www.postgresql.org/docs/current/config-setting.html#CONFIG-SETTING-CONFIGURATION-FILE){:target="_blank"} configuration documentation. 56 | 57 | 7. Click **Continue** till you reach the end of the wizard. 58 | 59 | 8. Click **Create database**. The database engine parameters will be updated. 60 | 61 | 62 | ## Configure database engine for an existing DB cluster 63 | 64 | To update your database engine in Percona Everest for an existing DB cluster: 65 | {.power-number} 66 | 67 | 1. Go to the Percona Everest home page and click on the database for which you want to update the database engine. The **Overview** page will be displayed. 68 | 69 | 2. On the **Advanced configuration** widget, click **Edit**. The **Edit advanced configuration** screen will be displayed. 70 | 71 | ![!image](../images/everest_adv_config_edit.png) 72 | 73 | 3. Make the necessary changes and then click **Save**. The database engine parameters will be updated. 74 | -------------------------------------------------------------------------------- /docs/reference/trademark-policy.md: -------------------------------------------------------------------------------- 1 | # Trademark policy 2 | 3 | This [Trademark Policy](https://www.percona.com/trademark-policy) is to ensure that users of Percona-branded products or 4 | services know that what they receive has really been developed, approved, 5 | tested and maintained by Percona. Trademarks help to prevent confusion in the 6 | marketplace, by distinguishing one company’s or person’s products and services 7 | from another’s. 8 | 9 | Percona owns a number of marks, including but not limited to Percona, XtraDB, 10 | Percona XtraDB, XtraBackup, Percona XtraBackup, Percona Server, and Percona 11 | Live, plus the distinctive visual icons and logos associated with these marks. 12 | Both the unregistered and registered marks of Percona are protected. 13 | 14 | Use of any Percona trademark in the name, URL, or other identifying 15 | characteristic of any product, service, website, or other use is not permitted 16 | without Percona’s written permission with the following three limited 17 | exceptions. 18 | 19 | *First*, you may use the appropriate Percona mark when making a nominative fair 20 | use reference to a bona fide Percona product. 21 | 22 | *Second*, when Percona has released a product under a version of the GNU 23 | General Public License (“GPL”), you may use the appropriate Percona mark when 24 | distributing a verbatim copy of that product in accordance with the terms and 25 | conditions of the GPL. 26 | 27 | *Third*, you may use the appropriate Percona mark to refer to a distribution of 28 | GPL-released Percona software that has been modified with minor changes for 29 | the sole purpose of allowing the software to operate on an operating system or 30 | hardware platform for which Percona has not yet released the software, provided 31 | that those third party changes do not affect the behavior, functionality, 32 | features, design or performance of the software. Users who acquire this 33 | Percona-branded software receive substantially exact implementations of the 34 | Percona software. 35 | 36 | Percona reserves the right to revoke this authorization at any time in its sole 37 | discretion. For example, if Percona believes that your modification is beyond 38 | the scope of the limited license granted in this Policy or that your use of the 39 | Percona mark is detrimental to Percona, Percona will revoke this authorization. 40 | Upon revocation, you must immediately cease using the applicable Percona mark. 41 | If you do not immediately cease using the Percona mark upon revocation, Percona 42 | may take action to protect its rights and interests in the Percona mark. 43 | Percona does not grant any license to use any Percona mark for any other 44 | modified versions of Percona software; such use will require our prior written 45 | permission. 46 | 47 | Neither trademark law nor any of the exceptions set forth in this Trademark 48 | Policy permit you to truncate, modify or otherwise use any Percona mark as part 49 | of your own brand. For example, if XYZ creates a modified version of the 50 | Percona Server, XYZ may not brand that modification as “XYZ Percona Server” or 51 | “Percona XYZ Server”, even if that modification otherwise complies with the 52 | third exception noted above. 53 | 54 | In all cases, you must comply with applicable law, the underlying license, and 55 | this Trademark Policy, as amended from time to time. For instance, any mention 56 | of Percona trademarks should include the full trademarked name, with proper 57 | spelling and capitalization, along with attribution of ownership to Percona 58 | Inc. For example, the full proper name for XtraBackup is Percona XtraBackup. 59 | However, it is acceptable to omit the word “Percona” for brevity on the second 60 | and subsequent uses, where such omission does not cause confusion. 61 | 62 | In the event of doubt as to any of the conditions or exceptions outlined in 63 | this Trademark Policy, please contact [trademarks@percona.com](mailto:trademarks@percona.com) for assistance and 64 | we will do our very best to be helpful. 65 | -------------------------------------------------------------------------------- /docs/security/tls_setup.md: -------------------------------------------------------------------------------- 1 | # TLS support for Percona Everest 2 | 3 | Percona Everest can be configured to use Transport Layer Security (TLS) for all incoming connections to the Everest API server. TLS ensures that communication between clients and the API server is encrypted, protecting data from interception or tampering. Administrators can configure server certificates and private keys to enable **secure HTTPS access**, enhancing the overall security posture for production environments. 4 | 5 | !!! note 6 | - When TLS is enabled, the default server port (8080) will only accept `https` traffic, and `http` traffic will be rejected. 7 | - We do not support redirects from `http` to `https`. 8 | - Self-signed certificates aren't trusted by most browsers, so it's best to use a trusted certificate from a Certificate Authority (CA) in production. 9 | 10 | 11 | 12 | ## TLS setup with Percona Everest 13 | 14 | !!! info "Important" 15 | This section provides an example using **Helm**. You can also use the provided options with `everestctl` by using the flag `--helm.set`. 16 | 17 | 18 | ### Use Cert-manager (recommended) 19 | 20 | #### Prerequisites 21 | 22 | - Ensure that [cert-manager](https://cert-manager.io/docs/){:target="_blank"} has been deployed on your Kubernetes cluster. 23 | 24 | - Ensure that you have a properly configured **Issuer** or **ClusterIssuer** in place. See the [documentation](https://cert-manager.io/docs/configuration/){:target="_blank"} for details. 25 | 26 | 27 | #### Set up Percona Everest using cert-manager 28 | 29 | Here are the steps to set up the Percona Everest server using cert-manager: 30 | {.power-number} 31 | 32 | 33 | 1. Create a configuration file named `values.yaml`: 34 | 35 | ```sh 36 | server: 37 | tls: 38 | enabled: true 39 | certificate: 40 | create: true 41 | domain: example.com 42 | issuer: 43 | group: cert-manager.io 44 | kind: ClusterIssuer 45 | name: your-cluster-issuer 46 | ``` 47 | 48 | Replace **example.com** with your actual domain name. 49 | 50 | 51 | 2. Install Percona Everest using the above values: 52 | 53 | ```sh 54 | helm install everest-core percona/everest --create-namespace \ 55 | -n everest-system \ 56 | -f values.yaml 57 | ``` 58 | 59 | 60 | ??? info "Alternative methods for configuring TLS in Percona Everest" 61 | 62 | ### Use self-signed certificates 63 | 64 | Use self-signed certificates (automatically generated during installation): 65 | 66 | 67 | ```sh 68 | helm install everest-core percona/everest --create-namespace \ 69 | -n everest-system \ 70 | --set server.tls.enabled=true 71 | ``` 72 | 73 | ### Configure TLS with custom certificates 74 | 75 | Here are the steps to set up the Percona Everest server using custom certificates: 76 | {.power-number} 77 | 78 | 1. Prepare your certificate public key (`tls.crt`) and private key (`tls.key`) files. 79 | 80 | 2. Create a configuration file named `values.yaml`: 81 | 82 | ```sh 83 | server: 84 | tls: 85 | enabled: true 86 | secret: 87 | certs: 88 | tls.key: YOUR_PRIVATE_KEY_FILE 89 | tls.crt: YOUR_CERTIFICATE_FILE 90 | ``` 91 | 92 | Replace `YOUR_PRIVATE_KEY_FILE` and `YOUR_CERTIFICATE_FILE` with the actual contents of your public and private key files. 93 | 94 | 3. Install Percona Everest using the above values: 95 | 96 | ```sh 97 | helm install everest-core percona/everest --create-namespace \ 98 | -n everest-system \ 99 | -f values.yaml 100 | ``` 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /docs/contribute.md: -------------------------------------------------------------------------------- 1 | # Contributing guide 2 | 3 | Thank you for deciding to contribute and help us improve Percona Everest! We also contribute to other open source projects and communities! Let’s make technology better! 4 | 5 | By contributing, you agree to the [Percona Community code of conduct](https://percona.community/contribute/coc/){:target="_blank"}. 6 | 7 | We welcome all kinds of contributions so here's how you can get involved: 8 | 9 | - Submit bug reports or feature requests 10 | - Submit a code patch 11 | - Contribute to documentation 12 | 13 | 14 | ## Submit a bug report or feature request 15 | 16 | If you find a bug in Percona Everest, you can submit a report via the [Percona Everest Community Forum](https://forums.percona.com){:target="_blank"}. 17 | Start by searching the open topics for a similar report. If you find that someone else has already reported the same issue, you can upvote that report to increase its visibility. 18 | 19 | If there is no existing report, submit a report following these steps: 20 | {.power-number} 21 | 22 | 1. Sign in to [Percona Everest Forum](https://forums.percona.com){:target="_blank"}. You will need to create an account if you do not have one. 23 | 24 | 2. Create a report that: 25 | * describes the steps to reproduce the issue 26 | * includes the version of Percona Everest, your environment, and so on 27 | * has not been reported already 28 | * is scoped to a single bug 29 | 30 | ## Contribute to Percona Everest code 31 | 32 | If you’d like to submit a code patch, follow the [Contributing guide in Everest code repository](https://github.com/percona/everest/blob/main/CONTRIBUTING.md). 33 | 34 | ## Contribute to Percona Everest documentation 35 | 36 | Found a typo or didn't find what you needed? Here's how you can contribute to the documentation: 37 | {.power-number} 38 | 39 | 1. **Request a doc change through a Jira issue**. If you’ve spotted a doc issue (a typo, broken links, inaccurate instructions, etc.) but don’t have time nor desire to fix it yourself - let us know about it. 40 | 41 | - Click the **Jira** link in the contact us section. This opens the [Jira issue tracker](https://perconadev.atlassian.net/jira/software/c/projects/EVEREST/boards/65). 42 | - Sign in (create a Jira account if you don’t have one) and click **Create** to create an issue. 43 | - Describe the issue you have detected in the Summary, Description, Steps To Reproduce, Affects Version fields. 44 | 45 | 2. **Contribute to documentation directly**. 46 | 47 | To contribute to the documentation, you should be familiar with the following technologies: 48 | 49 | * [Markdown](https://www.markdownguide.org/getting-started/){:target="_blank"} markup language. We write the documentation in it. 50 | * [git](https://git-scm.com/){:target="_blank"} and [GitHub](https://guides.github.com/activities/hello-world/){:target="_blank"} 51 | 52 | The `.md` files are in the `docs/` directory. 53 | 54 | **Edit documentation online via GitHub.** 55 | 56 | * Select the pencil icon next to the page title to open the source file in the GitHub editor. If you haven’t worked with the repository before, GitHub creates a [fork](https://docs.github.com/en/github/getting-started-with-github/fork-a-repo) of it for you. 57 | 58 | * Edit the page. You can check your changes on the **Preview** tab. 59 | 60 | * Commit your changes: 61 | 62 | * In the *Commit changes* section, describe your changes. 63 | * Select the **Create a new branch for this commit and start a pull request** option. 64 | * Click **Propose changes**. 65 | 66 | * GitHub creates a branch and a commit for your changes. It loads a new page on which you can open a pull request to Percona. The page shows the base branch - the one you offer your changes for, your commit message and a diff - a visual representation of your changes against the original page. This allows you to make a last-minute review. When you are ready, click the **Create pull request** button. 67 | 68 | * Someone from our team reviews the pull request and if everything is correct, merges it into the documentation. Then it gets published on the site. 69 | 70 | 71 | -------------------------------------------------------------------------------- /overrides/partials/header.html: -------------------------------------------------------------------------------- 1 | 2 | {% set class = "md-header" %} 3 | {% if "navigation.tabs.sticky" in features %} 4 | {% set class = class ~ " md-header--shadow md-header--lifted" %} 5 | {% elif "navigation.tabs" not in features %} 6 | {% set class = class ~ " md-header--shadow" %} 7 | {% endif %} 8 | 9 | 10 |
11 | 12 | 13 | 28 | 29 | 106 | 107 | 108 | {% if "navigation.tabs.sticky" in features %} 109 | {% if "navigation.tabs" in features %} 110 | {% include "partials/tabs.html" %} 111 | {% endif %} 112 | {% endif %} 113 |
114 | 115 | --------------------------------------------------------------------------------